2010-11-18 181 views
20

我想讓圖像水平移動。 即圖像應該從左端底角向右端底角移動一次。 不需要再回到左端底角。翻譯動畫

的一段代碼,其我嘗試是

<set xmlns:android="http://schemas.android.com/apk/res/android" 
android:interpolator="@android:anim/linear_interpolator"> 

<translate android:fromXDelta="0%p" android:toXDelta="200%p" 
android:duration = "2000"/> 
</set> 

此從左向右直到移動圖像。但它又來到了左邊。 誰能告訴我如何解決這個問題?

回答

40

我知道了...而不是使用該動畫xml文件,我寫在java文件裏面。

Animation animation = new TranslateAnimation(0, 500,0, 0); 
animation.setDuration(1000); 
animation.setFillAfter(true); 
myImage.startAnimation(animation); 
myImage.setVisibility(0); 

現在圖像從左向右移動,然後它變得不可見...因此動畫! :)

+1

我不知道爲什麼代碼有效。沒有多大意義。嘗試在'setVisibility()'方法中使用'View.VISIBLE'。 – Macarse 2010-11-18 13:06:24

+0

setVisibility(0)有時它不工作...我不知道Ÿ...我現在保持View.INVISIBLE,它的作品........ – Mathew 2010-11-19 06:27:00

+6

實際上,INVISIBLE是int == 1,VISIBLE == 0,去了== 2,[這裏](http://developer.android.com/reference/android/view/View.html#attr_android:visibility) **我也有代碼中的setVisibility問題,所以我把.setVisibility中的View.VISIBLE/View.INVISIBLE ** – xxxxxxxxxadfas 2011-08-02 06:06:10

69

你犧牲品極大的誤區大家首先對關於Android動畫:動畫ImageView(或什麼樣的看法)實際上不是移動(或縮放或旋轉或褪色)。這完全是一個技巧......動畫本質上是一些關於屏幕合成引擎的最後一分鐘指令,用於按x/y偏移視圖,以z旋轉等等。視圖的底層位置/大小/角度/ alpha永遠不會真正改變。

因此,當動畫結束時,您的圖像看起來會突然回到起點,因爲它從來沒有真正離開它。

也就是說,您可以通過在您的<translate>標記中添加android:fillAfter="true"以簡單的方式實現您想要的效果。只要記住,圖像並沒有真的移動。如果您需要在動畫結束時更新佈局,請連接AnimationListener並在onAnimationEnd()中執行。

+1

嗨魯本,我試着用機器人:fillAfter =「真」 ...但它和以前一樣......然後我試圖與onAnimationEnd()。我將圖像的可見性視爲隱形......但仍然發生同樣的事情......對我做錯了什麼有任何線索? – Mathew 2010-11-18 10:27:42

+1

可能因爲您正在使用,但現在幾乎不重要。 – 2010-11-18 12:08:57

+8

爲什麼不重要?有些代碼會使這個可愛的答案 – 2012-07-07 07:22:43

15

翻譯動畫可以更改對象的外觀,但它們不能更改對象本身。也就是說,如果將翻譯動畫應用於視圖,它將移動到新的位置,但其點擊事件不會被解僱;點擊事件仍然會在之前的位置被解僱。

發生這種情況是因爲視圖仍處於其原始位置。爲了克服這個問題,我們可以使用實際移動對象的ObjectAnimation。對象動畫是實際移動對象的唯一動畫。

您可以使用ObjectAnimator創建翻譯動畫。

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

視圖 - 這是在其上的動畫將被應用於被動畫 propertyName的-的屬性的圖。 FromX,toX-動畫將隨時間變化的一組值。

+2

使用您的鏈接在這個答案來驅動交通是皺眉!在這裏爲了防止鏈接腐爛可能會更好地包含來自該鏈接的摘要引用! – t0mm13b 2012-10-05 23:38:29

+0

ObjectAnimator是從android 11引入的。因此,在之前的android版本中,您必須使用非官方的庫。這是一個NineOldAndroids庫,您可以找到android 11的所有動畫API並與其他所有android版本一起使用:http://nineoldandroids.com/ – 2012-11-19 14:45:26