在LinearLayout中对TextViews进行动画处理

时间:2019-10-14 18:12:05

标签: android animation textview android-linearlayout

我想在LinearLayout中为TextViews设置动画。我想让它们每隔几秒钟上升一次。如果它们向上移动,则最后一个项目应保留一段时间,然后从顶部显示第一个项目。我将列出其中的所有单词。


 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方法内部。我创建了这个(我的线性布局的父级是框架布局):

            @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超出线性布局并消失。我以为,如果我使用方法.removeView(View v)删除LinearLayout的第一个元素,然后再使用.addView(View v),结果将是Linear Layout的第一个元素将在底部添加一个项目。但是,似乎第一个元素即使不可见,也仍然存在于Linear Layout中,如果我删除第一个元素并添加,它只会与布局中的最后一个元素切换。

0 个答案:

没有答案