#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);
Комментариев нет:
Отправить комментарий