2013-06-20 3 views
2

У меня есть 4 ImageViews, которые нужно перемещать справа налево. Это видео из моей анимации: https://docs.google.com/file/d/0B-Jk0rK9-8gUQTlUb3BrVGZEUHc/edit?usp=sharingAndroid Animation 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% показывает начало в положении x, которое находится слева на расстоянии моей ширины (ImageView) и перемещается вправо (до , или текущее положение).

Поскольку вы упомянули о перемещении справа налево, мы, вероятно, сначала хотим сбросить знак минуса и сделать 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