我开始使用ConstraintLayout。我创建了一些不错的动画。所以我有2个xml布局-开始和结束。我想在开始新活动时启动它。如何做到最好?
简而言之,当我不得不输入以下代码时:
TransitionManager.beginDelayedTransition(_layout, transition);
_set2.applyTo(_layout);
我将尝试将其放入onCreate(...)和onResume(...)方法中,但是当我开始新活动(通过Intnet)时,仅显示了最终布局-没有任何动画。
其唯一的工作方式是:
@Override
protected void onCreate() {
...
animate();
}
public void animate(){
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
ChangeBounds transition = new ChangeBounds();
transition .setInterpolator(new OvershootInterpolator());
transition .setDuration(1000);
TransitionManager.beginDelayedTransition(_layout, transition);
_set2.applyTo(_layout);
}
}, 500);
}
但是我不确定这是最好的方法
答案 0 :(得分:0)
Activity
获得焦点后即可开始动画。尝试像这样使用onWindowFocusChanged
:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
if(hasFocus) {
ChangeBounds transition = new ChangeBounds();
transition.setInterpolator(new OvershootInterpolator());
transition.setDuration(1000);
TransitionManager.beginDelayedTransition(_layout, transition);
_set2.applyTo(_layout);
}
}