动画创建活动时出现的TextView

时间:2014-08-22 05:07:08

标签: android android-animation

我想显示创建活动时出现的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()中,但结果是一样的。有什么想法应该怎么做?

3 个答案:

答案 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);
             }
  });

因为您的视图应该只能在创建后才能制作动画