#java #android
Есть такая анимация: android:duration="100" android:fillBefore="false" android:fromXScale="1.0" android:fromYScale="1.0" android:pivotX="50%" android:pivotY="50%" android:startOffset="0" android:toXScale="0.9" android:interpolator="@android:anim/decelerate_interpolator" android:toYScale="0.9" /> Как работает: объект сначала уменьшается,а потом возвращается в исходное состояние. (объект-ImageView) В коде обращаюсь так: anim= AnimationUtils.loadAnimation(getContext(),R.anim.clickbutton); и вызываю так: public boolean onTouch(View v, MotionEvent event) { v.startAnimation(anim); switch (v.getId()) { case R.id.b1: { stopPlayerIfNeeded(); playSample(soundsRawResIds[0]); } break; Все работает как часы, но хотелось бы, чтобы после нажатия анимация "постоянно работала" т.е нажал я на case R.id.b1 - выполнилось действие, но анимация продолжала работать до того момента, пока не выбрал другой R.id.* и т.к далее ///////////////////////////////////////// как в этом случае остановить анимацию?сейчас так: выбрал R.id.b1: все запустилось и работает, выбрал R.id.b2: запустилась анимация но и на R.id.b1: продолжает выполняться анимация,а нужно остановить for (int j = 0; j < arr_imageB.length; j++) { arr_imageB[j].setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { v.startAnimation(anim); switch (v.getId()) { case R.id.b1: { stopPlayerIfNeeded(); playSample(soundsRawResIds[0]); } break; case R.id.b2: { stopPlayerIfNeeded(); playSample(soundsRawResIds[1]); } break; case R.id.b3: { stopPlayerIfNeeded(); playSample(soundsRawResIds[2]); } break; case R.id.b4: { stopPlayerIfNeeded(); playSample(soundsRawResIds[3]); } break; case R.id.b5: { stopPlayerIfNeeded(); playSample(soundsRawResIds[4]); } break; case R.id.b6: { stopPlayerIfNeeded(); playSample(soundsRawResIds[5]); } break; case R.id.b7: { stopPlayerIfNeeded(); playSample(soundsRawResIds[6]); } break; }
Ответы
Ответ 1
Если анимация лежит вто атрибут android:repeatCount="infinite" должен работать Ответ 2
Повесьте слушатель окончания анимации и в нём ещё раз её проиграйте, снова повесив слушатель: View viewToAnimate = ...; final int animResId = R.anim.anim_file; Animation anim = AnimationUtils.loadAnimation(ctx, animResId); anim.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationEnd(Animation arg0) { Animation anim = AnimationUtils.loadAnimation(ctx, animResId); anim.setAnimationListener(this); viewToAnimate.startAnimation(anim); } @Override public void onAnimationRepeat(Animation arg0) { } @Override public void onAnimationStart(Animation arg0) { } }); viewToAnimate.startAnimation(anim); Так она будет повторяться ~бесконечно.Ответ 3
Бесконечная анимация anim.setRepeatCount(-1); Остановка анимации v.getAnimation().setRepeatCount(0);
Комментариев нет:
Отправить комментарий