2013-06-20 121 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