2

我有 4 个 ImageViews 需要从右向左移动。这是我的动画的示例视频: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%说从一个 x 位置开始,该位置在我的 (ImageView) 宽度的距离处向左移动并向右移动(到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 回答