2013-06-20 162 views
2

我有4個ImageViews需要從右向左移動。這是我的動畫的樣本視頻:https://docs.google.com/file/d/0B-Jk0rK9-8gUQTlUb3BrVGZEUHc/edit?usp=sharingAndroid動畫ImageView

這裏是我工作的代碼:

private void getCorrectObject() { 

    List<Integer> objects = new ArrayList<Integer>(); 
    for(int arr : images){ 
     objects.add(arr); 
    } 

    // Shuffle the collection 
    Collections.shuffle(objects); 

    iv.add((ImageView) findViewById(R.id.txtStage4_object1)); 
    iv.add((ImageView) findViewById(R.id.txtStage4_object2)); 
    iv.add((ImageView) findViewById(R.id.txtStage4_object3)); 
    iv.add((ImageView) findViewById(R.id.txtStage4_object4)); 

    Collections.shuffle(iv); 

    iv.get(0).setImageResource(images[0]); // Correct Image 
    iv.get(1).setImageResource(images[1]); 
    iv.get(2).setImageResource(images[2]); 
    iv.get(3).setImageResource(images[3]); 

    Animation accelerate = AnimationUtils.loadAnimation(this, R.anim.accelerate_2); 
    //accelerate.setRepeatCount(-1); 
    //accelerate.setRepeatMode(Animation.REVERSE); 

    iv.get(0).startAnimation(accelerate); 
    iv.get(1).startAnimation(accelerate); 
    iv.get(2).startAnimation(accelerate); 
    iv.get(3).startAnimation(accelerate); 

    for (int i = 0; i < tagList.length; i++) { 
     iv.get(i).setTag(tagList[i]); 
     iv.get(i).setOnTouchListener(new MyTouchListener()); 

    } 



} 

XML:

<set xmlns:android="http://schemas.android.com/apk/res/android" 
android:shareInterpolator="false" > 

<translate 
    android:duration="200" 
    android:fromXDelta="-100%" 
    android:fromYDelta="0%" 
    android:toXDelta="0%" 
    android:toYDelta="0%" /> 

</set> 

但它沒有做正如我的預期。有任何想法嗎?我真的很感激它。謝謝。

+0

什麼是你得到的結果,目前?從視頻來看,我會用畫布來做。 (海盜對象?arr!) –

+0

@DanielMonteiro我讓它從右向左移動,但它只停留在屏幕上,它並沒有消失在左側。 –

回答

1

這取決於容器的佈局是什麼,每個ImageView,但你的問題是最有可能的;您需要對動畫的起點進行一些修改。

使用-100%表示從距離我的(ImageView)寬度左側向右移動(到0%,或當前佈局位置)左側的x位置開始。

既然您提到了從右向左移動,我們可能首先要刪除減號並執行100%0%,這是一個右移動。

您也可能希望將此位置相對於父視圖(可能與屏幕寬度匹配)即100%p,該位置將從超出父視圖邊界的偏移處開始。

因此,所有你可能需要做的是改變你的動畫XML像這樣:

<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shareInterpolator="false" > 

    <translate 
     android:duration="200" 
     android:fromXDelta="100%p" 
     android:fromYDelta="0%" 
     android:toXDelta="0%" 
     android:toYDelta="0%" /> 

</set> 
+0

嗨,謝謝你的回答,但是我怎樣才能讓它在屏幕上消失並重新出現? –

+0

如果這不適合你,你可能需要提供更多關於佈局的信息,因爲這個動畫應該在屏幕外啓動視圖(除非'ImageView'的父視圖不填滿屏幕寬度)並移動它們回到屏幕上到原來的位置。 – Devunwired