我想使用翻译动画将我的图像视图从当前位置移动到屏幕上的某个固定位置.
另外我想知道翻译动画的工作原理以及它接受的参数是什么?
另外我想知道翻译动画的工作原理以及它接受的参数是什么?
我的代码是……
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);
提前致谢.
解决方法
“平移动画”控制布局或按钮的位置和位置,或者应用动画的任何视图.它可以在x方向或y方向上移动对象.
句法 :
TranslateAnimation transAnimation= new TranslateAnimation(fromXposition,toXPosition,fromYPosition,toYPosition);
fromXposition- x动画开始的坐标
toXPosition-x动画结束的坐标
fromYPosition-从动画应该开始的坐标.
toYPosition-动画结束的坐标.
1)如果我们只想在X方向上进行平移,那么我们将fromPosition和toYPosition设置为零.
2)如果我们只想在Y方向上进行平移,那么我们将fromXPosition和toXPosition设置为零.
还有另一种方法,我们在res文件夹中创建一个anim文件夹.在这个文件夹中,我们添加了动画xml.我们使用translate标签来指定属性值.
在下面的xml中
android:duration定义动画的执行时间
android:repeatCount指定no.应该重复动画的次数,
android:fromYDelta定义动画应该从哪里开始的y坐标
android:toYDelta定义动画结束的y坐标.
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″ />
码:
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);
翻译动画可以改变对象的视觉外观,但是它们不能更改对象本身.也就是说,如果您将转换动画应用于视图,它将移动到新位置,但其点击事件不会被触发,而点击事件仍将在其先前位置被触发.发生这种情况是因为视图仍处于原始位置.
为了克服这个问题,我们可以使用实际移动对象的ObjectAnimation.对象动画是实际移动对象的唯一动画.您可以使用ObjectAnimator创建翻译动画.
ObjectAnimator transAnimation= ObjectAnimator.ofFloat(view,propertyName,fromX,toX); transAnimation.setDuration(3000);//set duration transAnimation.start();//start animation
view -this是要应用动画的视图
propertyName – 要设置动画的属性.
FromX,toX-动画随时间变化的一组值.
希望这会给你很好的理解.