![](/img/trans.png)
[英]Move an ImageView to different a position using animation in Android
[英]Move ImageView from its current position to fixed position using translate animation
我想使用平移動畫將圖像視圖從當前位置移動到屏幕上的某個固定位置。 我也想知道翻譯動畫的工作原理,以及它確切接受哪些參數?
我的代碼是...
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-動畫應從哪里開始的y坐標。
toYPosition-動畫結束的y坐標。
1)如果只想在X direction
上平移,則將fromYPosition和toYPosition設置為零。
2)如果我們只想Y direction
平移 , 則將 XPosition和toXPosition設置為零。
還有另一種方法,我們在res文件夾中創建一個anim文件夾。 在這個文件夾中,我們添加動畫xml。我們使用一個translate標記,在其中指定屬性值。
在下面的xml中
android:duration
定義動畫的執行時間
android:repeatCount
指定否。 動畫應該重復多次,
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
視圖 -這是在其上的動畫將被應用的觀點
propertyName的 -The財產被動畫。
FromX,toX-動畫將在一段時間之間進行動畫處理的一組值。
希望這能給您很好的理解。
您只需要將視圖從一個位置轉換到另一個位置即可。 因此需要使用下面的代碼來完成您的任務。
imgHeart.animate()
.scaleXBy(-6f)
.scaleYBy(-6f)
.alpha(.1f)
.translationX((heigthAndWidth[0] / 2) - minusWidth) // trying to make my location
.translationY(-((heigthAndWidth[1] / 2) - minusHeight))
.setDuration(1000)
.start();
您可以使用NineOldAndroids 。 它具有翻譯動畫的示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.