Mình có một vấn đề về transition trong android. Mình có chuyền vào một chuỗi các transition cần thực hiện và đệ quy sau khi thực hiện xong transition đầu thì sẽ vào thực hiện các transition sau. Sau khi khởi tạo 2 view và kích hoạt hàm hoạt động chạy transition thì view thứ nhất thực hiện được tất cả các transition truyền vào, view thứ 2 thì chỉ thực hiện được duy nhất transiiton đầu tiên của mảng transition chuyền vào, Ngược lại nếu mình gọi view 2 kích hoạt trước thì sẽ xảy ra ngược lại. và 2 view cùng thực hiện đồng thời cũng một lúc.
Mình muốn tất cả các transition của 2 view được truyền vào được thực hiện tất cả phải làm như thế nào?
Class chứa phương thức thực hiện.
public class AAA {
View v;
public AAA(View v) {
this.v = v;
}
public void excuteSwapView(final ConstraintLayout ctrl, final int position, final Transition... arrGuiOrAnim) {
if (position < arrGuiOrAnim.length) {
TransitionSet transitionSet = new TransitionSet();
Transition transition = arrGuiOrAnim[position];
ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(ctrl);
transitionSet.addTransition(transition);
transitionSet.addListener(new Transition.TransitionListener() {
@Override
public void onTransitionStart(Transition transition) {
}
@Override
public void onTransitionEnd(Transition transition) {
excuteSwapView(ctrl,position+1,arrGuiOrAnim);
}
@Override
public void onTransitionCancel(Transition transition) {
}
@Override
public void onTransitionPause(Transition transition) {
}
@Override
public void onTransitionResume(Transition transition) {
}
});
TransitionManager.beginDelayedTransition(ctrl, transitionSet);
constraintSet.applyTo(ctrl);
}
}
MainActivity thực hiện
public void runTransition(){
ConstraintLayout layout;
View v1, v2;
....
Transition x1[] = new Transition[5];
....
Transition x2[] = new Transition[5];
....
AAA a1 = new AAA(v1);
AAA a2 = new AAA(v2);
a1.excuteSwapView(layout, 0, x1);
a2.excuteSwapView(layout, 0, x2);
}