窗口管理器布局参数 - 动画效果

3

我有一个 ImageView,是通过 WindowManager.addView(ImageView, WindowManager.LayoutParams) 添加的。当它出现在屏幕上时,我想对 ImageView 进行动画处理,但是在 addView() 方法之后调用 ImageView.startAnimation(Animation) 似乎不会进行动画处理。以下是我的代码...

image = new ImageView(context);
image.setImageResource(R.drawable.image);
image.setAlpha(180);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT,
     WindowManager.LayoutParams.WRAP_CONTENT,
     WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, 0, PixelFormat.TRANSLUCENT);
windowManager.addView(image, params);
image.startAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.grow));

这是 grow.xml 文件。
<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale android:fromXScale="0" 
           android:toXScale="1"
           android:fromYScale="0"
           android:toYScale="1"
           android:pivotX="50%"
           android:pivotY="50%"
           android:duration="350"/>
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="350" />
</set>

图片只是简单地出现在窗口中,没有动画效果,有人知道我如何让图片动起来吗?

你的grow.xml文件内容是什么? - peter.bartos
我刚刚添加了grow.xml文件的内容。 - Brian
不确定...也许尝试更长的持续时间?它需要一些时间来填充您的布局,动画是不可见的。 - peter.bartos
1
我已经尝试在布局上使用普通视图进行此动画,看起来效果很好。我不认为是持续时间的问题。我认为这与我使用WindowManager而不是普通视图将ImageView添加到其中有关。 - Brian
也许可以尝试使用LayoutInflater创建视图,并在onFinishInflate()中启动动画。 - peter.bartos
看看这个页面,也许会有帮助:http://android-er.blogspot.co.at/2012/07/dialog-animation-using-windowanimations.html - felly
1个回答

0
如果您决定使用windowAnimations字段,则指定的常量必须是系统资源,不能是应用程序资源,因为窗口管理器无法访问应用程序。请参见文档

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接