我想显示创建活动时出现的TextView动画。我想要的是在没有TextView的情况下显示活动,然后在没有用户交互的情况下在最终位置出现TextView(理想情况下,从外部飞行)。
我尝试使用API级别19的转换框架,使XMLView布局中的TextView具有可见性,并使用以下代码将其设置为在onCreate()中可见:
ViewGroup layout = (ViewGroup) findViewById(R.id.main_layout);
TransitionManager.beginDelayedTransition(layout, new ChangeBounds());
textView.setVisibility(View.VISIBLE);
这不起作用。但是,如果我不在onCreate()中执行此操作,但作为对按钮单击的响应,它可以工作。我认为问题是布局尚未创建,因此当我在onCreate()中将可见性设置为visible时,将使用最终状态创建布局,并且没有两个场景供TransitionManager工作。 / p>
我已经尝试将代码放在onPause()中,但结果是一样的。有什么想法应该怎么做?
答案 0 :(得分:4)
像这样试试onWindowFocusChanged()
@Override
public void onWindowFocusChanged(boolean hasFocus) {
if(hasFocus){
// start your animation here
}
}
答案 1 :(得分:0)
您应该在创建布局后在onResume()中执行此操作。最初,可见性将是不可见的,然后视图将动画。
答案 2 :(得分:0)
尝试这样:
ViewGroup layout = (ViewGroup) findViewById(R.id.main_layout);
layout.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
TransitionManager.beginDelayedTransition(layout, new ChangeBounds());
textView.setVisibility(View.VISIBLE);
}
});
因为您的视图应该只能在创建后才能制作动画