Fade in Fade out Animation на разных ImageViews последовательно в макете таблицы? - PullRequest
0 голосов
/ 28 марта 2011

У меня есть макет таблицы с 3 строками и 3 столбцами.Всего у меня 9 ImageViews с заданными фонами.Все эти изображения изначально скрыты, но делают их невидимыми.У меня есть метод для выполнения анимации постепенного исчезновения.Это работает нормально, когда я вызываю свою функцию анимации на одном изображении.Однако если я вызову функцию анимации из цикла for, все изображения будут анимированы одновременно.Мне нужно, чтобы это произошло последовательно.

Например, для (int i = 0; i <9; i ++) {startanimation (imageViews [i]);} </p>

void startanimation () {Затухание затухания на данном изображении работает нормально на одном изображении}

ПРИМЕЧАНИЕ. Я объявил массив imageViews, поэтому мне не нужно использовать отражение Java длядинамический доступ к просмотрам изображений.

int [] imageViews = {R.id.ImageView01, R.id.ImageView02, R.id.ImageView03, R.id.ImageView04, R.id.ImageView05, R.id.ImageView06, R.id.ImageView07, R.id.ImageView08, R.id.ImageView09}

Я пробовал Thread.sleep (xxx) и также обработчики, но все еще не смог достичь своей цели.В основном, если я отправляю позицию просмотра изображения и изображение в startanimation (), оно должно постепенно исчезать, это изображение в этом месте просмотра изображения и возвращаться к основному действию ТОЛЬКО после завершения всей анимации.Прямо сейчас он кажется как будто он возвращается только после завершения анимации постепенного исчезновения на всех iamgeviews.Пожалуйста, помогите.

Ответы [ 3 ]

1 голос
/ 28 марта 2011

Я сделал это в своей игре.Сначала вам нужно сохранить все кнопки на карте:

private Map<Integer, Button> buttonViews = new HashMap<Integer, Button>();

Затем, когда вы создаете кнопки, добавьте их все на карту:

buttonViews.put(0, myButton);

Затем вам нужно вызвать рекурсивный метод showButtons(0) как

showButtons(int button){

//set button visible
buttonViews.get(button).setVisibility(View.VISIBLE);
//set button animation
 Animation myAnim = AnimationUtils.loadAnimation(MyActivity.this, R.anim.fadeIn);
 buttonViews.get(button).startAnimation(myAnim);

//then use onAnimationEnd
myAnim.setAnimationListener(new AnimationListener() {
            public void onAnimationEnd(Animation animation...

В onAnimationEnd вызов showButtons (button ++) Когда все кнопки исчерпаны, прервите этот рекурсивный цикл.Если вам нужно сделать дополнительную задержку между каждой анимацией, вы можете использовать метод пост-задержки: Различные способы обработки синхронизации в Android внутри onAnimationEnd

0 голосов
/ 02 декабря 2011

Рассматривали ли вы использовать myAnim.setStartOffset(buttonIndex*animDuration)?

0 голосов
/ 28 марта 2011

Если вы хотите затемнить каждое изображение по отдельности, вам потребуется таймер для каждого из изображений. Прямо сейчас у вас есть только один таймер.

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

НТН. Звучит сложно, но на самом деле это не так. В цикле просто не трогайте никакое другое изображение, кроме того, которое вы в настоящее время выцветаете.

- Пит

...