使用Transitions框架延迟动画
问题描述:
我试图从支持库中使用TransitionManager.beginDelayedTransition()
来延迟转换。使用Transitions框架延迟动画
我想使用AutoTransition
使LinearLayout
出现/消失。该动画完美如预期,但不会延迟。
TransitionManager.beginDelayedTransition(rootViewGroup, new AutoTransition().setStartDelay(1000));
linearLayout.setVisibility(View.VISIBLE);
的linearLayout
是当然的rootViewGroup
的层次结构。
答
我做了一些测试,但不幸的是我也无法使它工作。它看起来像setStartDelay
只适用于ChangeBounds
过渡。
请看下面的例子(当您将在first
过渡startDelay
,延迟将无法正常工作):
linearLayout = (LinearLayout) findViewById(R.id.testLinearLayout);
mSceneRoot = (ViewGroup) findViewById(R.id.rootView);
mStaggeredTransition = new TransitionSet();
Transition first = new Fade(Fade.OUT);
Transition second = new ChangeBounds();
Transition third = new Fade(Fade.IN);
second.setStartDelay(1000).addTarget(linearLayout);
mStaggeredTransition.setOrdering(ORDERING_SEQUENTIAL);
mStaggeredTransition.addTransition(first).addTransition(second).addTransition(third);
findViewById(R.id.testbutton).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
linearLayout.setVisibility(View.GONE);
TransitionManager.beginDelayedTransition(mSceneRoot, mStaggeredTransition);
linearLayout.setVisibility(View.VISIBLE);
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) linearLayout.getLayoutParams();
params.addRule(ALIGN_PARENT_END);
linearLayout.setLayoutParams(params);
}
});
所以我建议你使用这样的:
mSceneRoot.postDelayed(new Runnable() {
@Override
public void run() {
TransitionManager.beginDelayedTransition(rootViewGroup, new AutoTransition().setStartDelay(1000));
linearLayout.setVisibility(View.VISIBLE);
}
}, 1000);
+0
我不想使用'Handler',因为我必须处理潜在的内存泄漏......但看起来像是要走的路。谢谢Jordy –
打开了一个机票https://issuetracker.google.com/issues/64139005 –