Как перемещать изображение вверх и вниз непрерывно, используя трансляцию анимации в Android?
Я успешно выполнил одностороннюю анимацию, используя Translate Animation
означает, что изображение идет сверху вниз. Вот код:
private ImageView mScanner;
private Animation mAnimation;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mScanner = (ImageView)findViewById(R.id.Scanner);
mAnimation = new TranslateAnimation(0, 0, 0, 500);
mAnimation.setDuration(10000);
mAnimation.setFillAfter(true);
mAnimation.setRepeatCount(-1);
mAnimation.setRepeatMode(Animation.REVERSE);
mScanner.setAnimation(mAnimation);
mScanner.setVisibility(View.VISIBLE);
}
Теперь я хочу, чтобы при достижении изображения в нижней части экрана он должен начать движение назад. Как я могу это сделать?
Примечание: выполните обратный режим. См. Код. Но теперь проблема в том, что она оставляет линии при движении снизу вверх. Как прикрепленный образ. Как удалить эти строки?
![screenshot]()
Ответы
Ответ 1
Измените код в соответствии с этим:
mScanner.setVisibility(View.VISIBLE);
mAnimation = new TranslateAnimation(
TranslateAnimation.ABSOLUTE, 0f,
TranslateAnimation.ABSOLUTE, 0f,
TranslateAnimation.RELATIVE_TO_PARENT, 0f,
TranslateAnimation.RELATIVE_TO_PARENT, 1.0f);
mAnimation.setDuration(10000);
mAnimation.setRepeatCount(-1);
mAnimation.setRepeatMode(Animation.REVERSE);
mAnimation.setInterpolator(new LinearInterpolator());
mScanner.setAnimation(mAnimation);
И, кроме того, используйте xml, а не изображение. Пожалуйста, ознакомьтесь с приведенным ниже кодом и поместите его в ImageView
src.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<solid android:color="#0000FF"/>
<size android:width="480dp"
android:height="10dp"/>
<corners android:radius="1dp"/>
<stroke android:width="3dp"
android:color="#000000"/>
</shape>
Надеюсь, это поможет вам.
Ответ 2
Вам нужно установить свойство repeat
андроида: repeatMode
внутр. Как анимация ведет себя, когда она достигает конца анимации. android: repeatCount должен быть установлен на положительное целое число или "-1", чтобы этот атрибут имел эффект. Установите "reverse", чтобы иметь обратное направление анимации с каждой итерацией или "повторить", чтобы каждый цикл анимации начинался с начала.
Animation a;
a.setRepeatMode(Animation.REVERSE);
Ответ 3
Я думаю, вам нужно удалить mAnimation.setFillAfter(true);
, потому что это означает, что он останется навсегда, где он остановится.
Чтобы вернуться в исходное положение, вы можете сделать полный набор анимаций для перемещения вверх и вниз или сделать два отдельных и когда первый финиш, а затем начать второй, хотя нет причин следовать таким подход.