移动TextViews,然后在转换完成后执行代码

时间:2019-07-19 16:08:39

标签: java android android-animation android-transitions

因此,我尝试使用此答案中描述的方法来重新创建2048:

Which LayoutManager for the animations of a 2048 game?

在完成TextView的过渡后,我需要更改其外观并删除与之合并的TextView。但是,如答案中所述,使用TransitionListener的onTransitionEnd方法无法正常工作。在所有转换完成后,它仅执行一次,即使多次调用包含转换代码的TextView方法也是如此。

Transition tileMoveTransition = new ChangeBounds();
    tileMoveTransition.addListener(new Transition.TransitionListener() {
        @Override
        public void onTransitionStart(Transition transition) {
        }
        @Override
        public void onTransitionEnd(Transition transition) {
            Log.d("debug", "Transition ended.");
            if (doesMerge) {
                removeTile(columnStop, rowStop);
                changeTileType(tileToMove, newValue);
            }
        }
        @Override
        public void onTransitionCancel(Transition transition) {
        }
        @Override
        public void onTransitionPause(Transition transition) {
        }
        @Override
        public void onTransitionResume(Transition transition) {
        }
    });
    tileMoveTransition.setDuration(2000); //*******************
    TransitionManager.beginDelayedTransition(fieldLayout, tileMoveTransition);
    constraintSet.applyTo(fieldLayout);

onTransitionEnd中的所有变量都需要声明为final,但这会导致它们具有无意义的值(例如,当newValue仅设置为2或4时,newValue将为-1),并且仍然只执行一次,因此反正只会影响其中一个TextView。

我是在做错什么,还是有更好的方法将TextView移到新位置,然后在完成后更改其外观(动画)并删除另一个TextView?

0 个答案:

没有答案