анимация случайных кадров не работает андроид

Я пытаюсь добиться случайной анимации из набора изображений, где каждый кадр представляет собой случайное изображение из набора изображений. И для этого я использую метод addFrame объекта AnimationDrawable, но анимация не работает. Я пробовал искать различные учебники, пробовал и другие вещи, но ничего не помогло. Ниже мой код программы, может ли кто-нибудь сказать, что я делаю неправильно. В макете есть ImageView. Но когда я пробую анимацию из определения анимации xml (что не случайно), она работает. Спасибо и привет.

import java.util.Random;
import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;

public class MemoryGame extends Activity implements OnTouchListener{
MemoryGameView mgv;
ImageView memImg;
int []seqimg = new int[15];
AnimationDrawable animation; 

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.memorylayout);
    memImg = (ImageView) findViewById(R.id.mem_img);
    memImg.setOnTouchListener(this);

    //generate the random sequence of list
    randomImgList();
    defAnimation();
  }

//select the array of random sequence of images for viewing
private void randomImgList(){
    //initialize the sequece
    for (int i = 0; i < 15; i++) {
        seqimg[i] = i+1;
    }
    Random rng = new Random();
    // i is the number of items remaining to be shuffled.
    for (int i = 15; i > 1; i--) {
        // Pick a random element to swap with the i-th element.
        int j = rng.nextInt(i);  // 0 <= j <= i-1 (0-based array)
        // Swap array elements.
        int tmp = seqimg[j];
        seqimg[j] = seqimg[i-1];
        seqimg[i-1] = tmp;
    }
}
//define the animation sequece
private void defAnimation() {
    animation = new AnimationDrawable();
    for(int i=0; i<10; i++) {
        String imgName = "mimg" + seqimg[i];
        int id = getResources().getIdentifier(imgName, "drawable", getPackageName());
        Log.d("id",""+id);
        animation.addFrame(getResources().getDrawable(id), 1000);
    }
    animation.setOneShot(true);
}

//define the touch event from the OnTouchListener interface
public boolean onTouch(View v, MotionEvent arg1) {
    if(v.getId() == memImg.getId()) {
        memImg.setBackgroundDrawable(animation);
        animation.setVisible(true, true);
        animation.stop();
        animation.start();
    }
    return true;
}
}

person ravi    schedule 07.11.2010    source источник
comment
Что значит не работает анимация? Уточните, что именно происходит?   -  person Gareth Davidson    schedule 08.11.2010
comment
когда я касаюсь изображения, он продолжает показывать только изображение, с которым оно инициализировано, и анимация не запускается. я пробовал регистрировать, работает ли анимация или нет, это показывает, что анимация работает, но я не вижу никаких изменений в изображении.   -  person ravi    schedule 08.11.2010


Ответы (1)


Я нашел проблему, я публикую решение, возможно, если другие найдут эту проблему, это будет полезно. На самом деле анимация работает, но начальное изображение, которое используется для инициализации ImageView, находится над анимацией, поэтому анимация была невидимой. Теперь я установил ImageView на пустое изображение перед запуском анимации, и теперь анимация видна. Спасибо.

person ravi    schedule 09.11.2010