Juk*_*rpa 27 android android-ui android-animation
我有一个奇怪的问题AlphaAnimation.它应该在AsyncTask调用处理程序时重复运行.
但是,第一次调用处理程序时Activity,除非我触摸屏幕或更新UI(例如按下手机的菜单按钮),否则动画将无法启动.
奇怪的是,一旦动画至少运行一次,如果再次调用处理程序,它将毫无问题地启动.
这是代码的样子:
// AsyncTask handler
public void onNetworkEvent()
{
this.runOnUiThread(new Runnable() {
@Override
public void run()
{
flashScreen(Animation.INFINITE);
}
});
}
// Called method
private void flashScreen(int repeatCount)
{
final View flashView = this.findViewById(R.id.mainMenuFlashView);
AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);
alphaAnimation.setRepeatCount(repeatCount);
alphaAnimation.setRepeatMode(Animation.RESTART);
alphaAnimation.setDuration(300);
alphaAnimation.setInterpolator(new DecelerateInterpolator());
alphaAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation)
{
flashView.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationEnd(Animation animation)
{
flashView.setVisibility(View.GONE);
}
@Override
public void onAnimationRepeat(Animation animation) { }
});
flashView.startAnimation(alphaAnimation);
}
Run Code Online (Sandbox Code Playgroud)
我注意到runOnUIThread没有必要(如果我不使用它会发生相同的结果),但我更喜欢保留它,因为我不在UI线程上.
有什么可能导致这个问题的想法?
Juk*_*rpa 46
更多的研究表明我的问题与此问题相同: 布局动画在首次运行时无效
在flashView"可见性设置为GONE默认(导致Animation不能立即作为开始View从来没有被渲染),所以我只是需要将其设置为INVISIBLE呼叫前flashView.startAnimation()
Zeb*_*baz 26
如果将Viewto 设置为VISIBLE不起作用,就像在我的情况下一样,它requestLayout()在启动之前帮助我调用Animation,如下所示:
Animation an = new Animation() {
...
view.requestLayout();
view.startAnimation(an);
Run Code Online (Sandbox Code Playgroud)
就我而言,我的View是0dip它阻止高onAnimationStart被调用,这帮助我身边的这个问题.
| 归档时间: |
|
| 查看次数: |
19917 次 |
| 最近记录: |