Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Move ImageView from its current position to fixed position using translate animation

I want to move my image view from its current position to some fixed position on screen using translate animation. Also I want to know how translate animation works and what parameters it accepts exactly?

My piece of code is...

       RelativeLayout.LayoutParams lParams = (LayoutParams) spreadImage
                .getLayoutParams();
       TranslateAnimation ta

        ta = new TranslateAnimation(lParams.leftMargin,
                randomLeftMarginsList.get(currentSpreadIndex),
                lParams.topMargin,

        ta.setAnimationListener(this);
        ta.setDuration(ApplicationConstant.PUZZLE_GAME_IMAGE_SPREADING_TIME);
        spreadImage.startAnimation(ta);

Thanks in advance.

like image 376
Nikhil Sathawara Avatar asked Sep 18 '13 05:09

Nikhil Sathawara


People also ask

How do you move the view on Android?

If you want o move a view on Android, you should implemts OnTouchListener. In your layout you can define a view, in this case we use ImageView. But You can use any view.

What is Alpha animation in Android?

An Alpha Animation is animation that controls the alpha level of an object, i.e. fading it in and out.

Can ImageView be clickable?

You can make a view clickable, as a button, by adding the android:onClick attribute in the XML layout. For example, you can make an image act like a button by adding android:onClick to the ImageView.


1 Answers

Translate Animation controls the position and location of a layout or button or any view on which animation is being applied. It can move an object either in x direction or y direction.

Syntax :

 TranslateAnimation transAnimation= new TranslateAnimation(fromXposition, toXPosition, fromYPosition, toYPosition);

fromXposition- x coordinate from where animation should start

toXPosition- x coordinate at which animation would end

fromYPosition- y coordinate from where animation should start.

toYPosition- y coordinate at which animation would end.

1)If we want to translate only in X direction then we set fromYPosition and toYPosition as zero.

2)If we want to translate only in Y direction then we set fromXPosition and toXPosition as zero.

There is another method in which we ,create an anim folder in the res folder. In this folder we add our animation xml .We use a translate tag in which we specify the attribute values.

In the below xml

android:duration defines the time of execution of animation

android:repeatCount specifies the no. of times the animation should be repeated ,

android:fromYDelta defines y coordinate from where animation should start

android:toYDelta defines y coordinate at which animation would end.

line_translate.xml

 <set  xmlns:android=”http://schemas.android.com/apk/res/android”>
<translate android:duration=”300″ android:repeatCount=”1 android:fromYDelta=”0.0″ android:toYDelta=”174.0″ />

Code:

  Animation lineTranslate;
//loading xml from anim folder
  Animation localAnimation = AnimationUtils.loadAnimation(this, R.anim.line_translate);
   //You can now apply the animation to a view
    view.startAnimation(transAnimation);

Translate Animation can change the visual appearance of an object, but they cannot change the objects themselves. That is, if you apply a translate animation to a view, it would move to a new position but its click events would not get fired whereas the click events would still get fired at its previous position. This happens because the view is still at its original position.

In order to overcome this, we can use ObjectAnimation which actually moves an object. Object Animation is the only animation which actually moves an object. You can create Translate animation using ObjectAnimator.

  ObjectAnimator transAnimation= ObjectAnimator.ofFloat(view, propertyName, fromX, toX);
  transAnimation.setDuration(3000);//set duration
  transAnimation.start();//start animation

view -this is the view on which animation is to be applied

propertyName-The property being animated.

FromX,toX-A set of values that the animation will animate between over time.

Hope this will give you nice understanding.

like image 59
GrIsHu Avatar answered Sep 17 '22 15:09

GrIsHu