动画系统警报类型视图

Posted

技术标签:

【中文标题】动画系统警报类型视图【英文标题】:Animate system alert type view 【发布时间】:2013-07-08 23:34:03 【问题描述】:

是否可以为系统警报类型视图设置动画?如果是这样呢?

我试过了,但没用:

public void onCreate(Bundle savedInstanceState)

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    View view = new View(this);
    view.setBackgroundColor(0x33FF0000);
    Animation animation = AnimationUtils.loadAnimation(this, R.anim.blink);
    view.startAnimation(animation);


    WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
    WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(-1, -1, 2006, 1336, -3);
    windowManager.addView(view, layoutParams);

blink.xml:

<alpha
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
    android:fromAlpha="0.0"
    android:toAlpha="1"
    android:duration="500"
    android:repeatMode="reverse"
    android:repeatCount="9999999"/>

此代码将视图添加到系统中,但它不是动画的。

【问题讨论】:

您是否尝试在开始动画之前将视图添加到窗口? @CoreyScott 是的,没用 【参考方案1】:

我找到了解决方案:

要动画的view不能直接添加到top window,因为android的top window不是真正的ViewGroup。因此必须先将视图添加到像 FrameLayout 这样的 ViewGroup 中,然后再将此 ViewGroup 添加到顶部窗口中。

【讨论】:

非常感谢它确实有效。你能解释一下为什么会这样吗? @Sushant 不客气,我指出了原因,因为 android 中最顶层的窗口不是视图组,不能为其子级设置动画!

以上是关于动画系统警报类型视图的主要内容,如果未能解决你的问题,请参考以下文章

07 动画系统

动画系统中的基础动画

动画系统中的基础动画

Android视图动画集合AndoridViewAnimations

Mecanim动画系统

Mecanim动画