Я хочу анимировать TextViews внутри LinearLayout. Я хочу, чтобы они двигались вверх каждые несколько секунд. Если они двигаются вверх, последний элемент должен некоторое время оставаться пустым, а затем там должен показываться первый сверху. У меня будет список слов, которые будут раздуты там.
private void startAnimation() {
float end;
try {
end = linearLayout.getTranslationY() - getResources().getDimensionPixelSize(R.dimen.distance);
} catch (NullPointerException e) {
e.printStackTrace();
end = - getResources().getDimensionPixelSize((R.dimen.distance));
}
ObjectAnimator animation1 = ObjectAnimator.ofFloat(linearLayout,
"translationY",
end);
animation1.setDuration(2000);
animation1.start();
animation1.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
}
@Override
public void onAnimationEnd(Animator animator) {
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
}
Я думал, что решение находится внутри метода OnAnimationEnd. Я создал это (родительский элемент моего Linear Layout - Frame Layout):
@Override
public void onAnimationEnd(Animator animator) {
translationsLayout.removeView(translatedWord1);
translationsLayout.addView(translatedWord1);
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(getResources().getDimensionPixelSize(R.dimen.marginLeft),
getResources().getDimensionPixelSize(R.dimen.marginTop),
0,
0);
translationsLayout.setLayoutParams(layoutParams);
}
К сожалению, он не дает ожидаемого результата. TextViews выходят за пределы линейного макета и исчезают. Я думал, что если я удалю первый элемент LinearLayout с помощью метода .removeView(View v)
, а позже я буду использовать .addView(View v)
, в результате первый элемент Linear Layout добавит один элемент внизу. Однако кажется, что этот первый элемент, даже если он не виден, все еще существует в Linear Layout, и если я удаляю первый и добавляю, он просто переключается с последним элементом в макете.