2

右から左に移動する必要がある 4 つの ImageView があります。これは私のアニメーションのサンプル ビデオです: https://docs.google.com/file/d/0B-Jk0rK9-8gUQTlUb3BrVGZEUHc/edit?usp=sharing

ここに私が取り組んでいるコードがあります:

   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>

しかし、それは私が期待したようには機能していません。何か案は?本当に感謝します。ありがとう。

4

1 に答える 1

1

それぞれのコンテナのレイアウトによって少し異なりImageViewますが、問題はおそらくこれです。アニメーションの開始点にいくつかの変更を加える必要があります。

を使用する-100%と、私の(ImageView)幅の距離で左にずれているx位置から開始し、右に移動します(0%または現在のレイアウト位置)。

右から左への移動についておっしゃっていたので、おそらく最初にマイナス記号を削除して、右から左への移動である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>
于 2013-06-20T19:44:30.867 に答える