onCreate() 方法中 View 的动画
Animation of View in onCreate() method
我想在 activity 启动时以 onCreate()
方法为 TextView
设置动画。但是,当我尝试获取视图的高度或宽度时,它始终为 0。在我的例子中,了解视图的高度或宽度很重要,因为我想设置 Y 或 X 的平移。例如,考虑以下代码:
TextView text=(TextView)(findViewById(R.id.text));
text.setText(R.string.some_text);
text.setTranslationY(-text.getHeight());
ObjectAnimator moveTextAnimator=ObjectAnimator.ofFloat(text,"translationY",-text.getHeight(),0);
moveTextAnimator.setDuration(1000);
ObjectAnimator fadeTextAnimator=ObjectAnimator.ofFloat(text,"alpha",0,1);
fadeTextAnimator.setDuration(2000);
AnimatorSet textAnimatorSet=new AnimatorSet();
textAnimatorSet.playSequentially(moveTextAnimator,fadeTextAnimator);
textAnimatorSet.start();
我想在 onCreate() 方法中 运行 这段代码。你知道如何解决这个问题吗?我相信解决方案之一就是简单地等待直到绘制视图。但是,如果我想 运行 为布局中的每个视图使用相同的动画怎么办?我需要等待每次观看吗?我该怎么做?
只需使用 text.post(new Runnable(){});
在runnable中调用text.getHeight()
会得到正确的结果;
我想在 activity 启动时以 onCreate()
方法为 TextView
设置动画。但是,当我尝试获取视图的高度或宽度时,它始终为 0。在我的例子中,了解视图的高度或宽度很重要,因为我想设置 Y 或 X 的平移。例如,考虑以下代码:
TextView text=(TextView)(findViewById(R.id.text));
text.setText(R.string.some_text);
text.setTranslationY(-text.getHeight());
ObjectAnimator moveTextAnimator=ObjectAnimator.ofFloat(text,"translationY",-text.getHeight(),0);
moveTextAnimator.setDuration(1000);
ObjectAnimator fadeTextAnimator=ObjectAnimator.ofFloat(text,"alpha",0,1);
fadeTextAnimator.setDuration(2000);
AnimatorSet textAnimatorSet=new AnimatorSet();
textAnimatorSet.playSequentially(moveTextAnimator,fadeTextAnimator);
textAnimatorSet.start();
我想在 onCreate() 方法中 运行 这段代码。你知道如何解决这个问题吗?我相信解决方案之一就是简单地等待直到绘制视图。但是,如果我想 运行 为布局中的每个视图使用相同的动画怎么办?我需要等待每次观看吗?我该怎么做?
只需使用 text.post(new Runnable(){});
在runnable中调用text.getHeight()
会得到正确的结果;