具有文本视图的多个过渡效果(Android)

具有文本视图的多个过渡效果(Android),android,textview,transitions,Android,Textview,Transitions,我想3个文本视图出现在顺序第一个,然后当它完成了第二个,然后第三个。我试过这个密码 tv1.animate().alpha(1f).setDuration(1000); tv2.animate().alpha(1f).setDuration(1000); tv3.animate().alpha(1f).setDuration(1000); 但是他们一起出现,所以我试着 tv1.animate().alpha(1f).setDuration(1000); tv2.animate().alpha(

我想3个文本视图出现在顺序第一个,然后当它完成了第二个,然后第三个。我试过这个密码

tv1.animate().alpha(1f).setDuration(1000);
tv2.animate().alpha(1f).setDuration(1000);
tv3.animate().alpha(1f).setDuration(1000);
但是他们一起出现,所以我试着

tv1.animate().alpha(1f).setDuration(1000);
tv2.animate().alpha(1f).setStartDelay(1000).setDuration(1000);
tv3.animate().alpha(1f).setStartDelay(2000).setDuration(1000);

但当我打开应用程序时,它们会同时出现,没有动画。如何修复此问题?

添加动画侦听器,并在上一个动画结束时启动下一个动画

AlphaAnimation alphaAnimation = new AlphaAnimation(1f,0f);
alphaAnimation.setFillAfter(true);
alphaAnimation.setAnimationListener(new AnimationListener() {
    public void onAnimationStart(Animation anim)
    {
    };
    public void onAnimationRepeat(Animation anim)
    {
    };
    public void onAnimationEnd(Animation anim)
    {
        nextPuzzle();
    };
}); 
tv1.startAnimation(alphaAnimation);

有很多方法可以做到这一点

如果希望通过使用alpha值实现此目的,则设置动画的每个视图的开头必须具有0.0f alpha值。然后将它们设置为1.0f alpha的动画

例如:

private void animateViews(final ArrayList<View> viewArrayList, long delay){
    for (int i = 0; i < viewArrayList.size(); i++) {
        final int position = i;
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                viewArrayList.get(position).animate().alpha(1f).setDuration(200);
            }
        }, i * delay);
    }
}
你可以用我写的这个方法

用法:

ArrayList<View> arrayList = new ArrayList<>();
arrayList.add(tv1);
arrayList.add(tv2);
arrayList.add(tv3);
animateViews(arrayList,300);
延迟参数意味着,每个动画开始延迟300*秒。 对于alpha动画,此方法的持续时间也为200 ms

首先从0延迟开始

秒从1*300毫秒延迟开始

第三个以2*300毫秒的延迟开始

.

更改时间

tv1.animate().alpha(1f).setDuration(1000);
tv2.animate().alpha(1f).setStartDelay(2000).setDuration(1000);
tv3.animate().alpha(1f).setStartDelay(3000).setDuration(1000);

在开始动画之前,需要将alpha设置为0