Android:在另一个结束后开始过渡

问题描述 投票:0回答:2

我将过渡应用于几个按钮,在这些按钮中,我尝试将其宽度从0dp更改为MATCH_PARENT

final ChangeBounds transition = new ChangeBounds();
    startFloat.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            for(i=0;i<allCards.size();i++) {
                if(i%2 == 0) {
                    transition.setDuration(4000L);
                    TransitionManager.beginDelayedTransition(allCards.get(i), transition);
                    allButton.get(i).setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, dp10));
                }
                else{
                    transition.setDuration(400L);
                    TransitionManager.beginDelayedTransition(allCards.get(i), transition);
                    allButton.get(i).setLayoutParams(new MaterialCardView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, dp10));
                }
            }
        }
    });

注意:dp10是整数变量(那里没有问题)。

这似乎很好,但是,当我单击startFloat按钮时,所有过渡都同时发生。 我希望他们在上一个结束之后开始

任何想法如何实现相同?

java android android-studio animation transition
2个回答
0
投票

您应该改用TransitionSet,以便可以将该顺序配置为顺序。官方Android文档中的更多详细信息herehere


0
投票

我几天前也遇到过同样的问题。解决方案是,您需要对不同的视图使用不同的过渡。您需要在此处创建两个过渡,并且每个过渡仅使用一次。试试这个

final ChangeBounds firestTransition = new ChangeBounds();
final ChangeBounds secondTransition= new ChangeBounds();

startFloat.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        for(i=0;i<allCards.size();i++) {
            if(i%2 == 0) {
                firestTransition.setDuration(4000L);
                TransitionManager.beginDelayedTransition(allCards.get(i), transition);
                allButton.get(i).setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, dp10));
            }
            else{
                secondTransition.setDuration(400L);
                TransitionManager.beginDelayedTransition(allCards.get(i), transition);
                allButton.get(i).setLayoutParams(new MaterialCardView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, dp10));
            }
        }
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.