我将过渡应用于几个按钮,在这些按钮中,我尝试将其宽度从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按钮时,所有过渡都同时发生。 我希望他们在上一个结束之后开始。
任何想法如何实现相同?
我几天前也遇到过同样的问题。解决方案是,您需要对不同的视图使用不同的过渡。您需要在此处创建两个过渡,并且每个过渡仅使用一次。试试这个
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));
}
}
}
});