Создайте представление в любом действии для использования с ObjectAnimator - PullRequest
0 голосов
/ 28 сентября 2018

Я хотел бы создать textView для использования с активностью моего приложения Android, которое имеет настраиваемое представление внутри linearLayout.

Я хочу анимировать TextView поверх моего настраиваемого представления, но TextView не 'не существует в макете, потому что я хочу, чтобы он создавался динамически.Это будет анимация счета игрока с «+500», движущимся вверх, скажем.

Код будет выглядеть примерно так

LinearLayout ll = (LinearLayout) activity.findViewById(R.id.screen_game);
TextView textView = new TextView(getContext());
ll.addView(textView);
textView.setText("+500 points!");
textView.setVisibility(VISIBLE);
ObjectAnimator anim = ObjectAnimator.ofFloat(textView, "translationY", 0,100f);
anim.setDuration(2000);
anim.start();

Очевидно, я не очень хочудобавьте TextView к представлению, потому что тогда оно просто добавляется в конец LinearLayout внизу.Что мне здесь делать?

[ Update1 ] Я добился хорошего прогресса, добавив свое представление в RelativeLayout, которое затем добавляю в качестве дочернего к корневому FrameLayout.Это прекрасно работает для динамического добавления представления, которое создается только для анимации (а затем исчезает).Но теперь мне нужен более детальный контроль того, откуда мои анимации будут начинаться / идти, а AbsoluteLayout устарела, поэтому я избегаю этого.Так как я пытаюсь разместить текст в точных местах относительно полноэкранного FrameLayout, мне нужно заменить AbsoluteLayout чем-то еще, что может делать точные X, Y местоположения на экране.Я думаю, что я ответил на мой вопрос здесь, но эти пункты все еще являются для меня блокирующими на данный момент.

1 Ответ

0 голосов
/ 28 сентября 2018

Добавить слушателя для анимации.Удалите TextView, когда закончится анимация.

 // add listener
 anim.addListener(new AnimatorListenerAdapter() {
    @Override
    public void onAnimationEnd(Animator animation) {
        super.onAnimationEnd(animation);
        textView.setVisibility(View.GONE);
    }
});
...