android – AnimationDrawable自动启动

android – AnimationDrawable自动启动,第1张

概述我有一个动画创建的AnimationDrawable问题,一旦我通过imageView.setBackgroundDrawable(我支持API 8)将它分配给 ImageView就会启动. 这是我的代码的缩写: mSequence = new AnimationDrawable(); ImageView imageView = new ImageView(context); ImageVie 我有一个动画创建的AnimationDrawable问题,一旦我通过imageVIEw.setBackgroundDrawable(我支持API 8)将它分配给 ImageVIEw就会启动.

这是我的代码的缩写:

mSequence = new AnimationDrawable(); ImageVIEw imageVIEw = new ImageVIEw(context); ImageVIEw.setAdjustVIEwBounds(false);

我的所有资产都保存在本地,因此我将它们添加到AnimationDrawable中

for(String assetID : mAssets) {    bitmap = loadBitmap(assetID); // returns a bitmap saved earlIEr    if (bitmap != null) {        mSequence.addFrame(new BitmapDrawable(res,bitmap),mFrameDuration);    }}

最后我将AnimationDrawable分配给视图

if (mSequence.getNumberOfFrames() > 0) {    imageVIEw.setBackgroundDrawable(mSequence);}

现在,在我有机会调用start()函数之前,动画会在加载ImageVIEw后立即启动.

我希望能够根据我自己的逻辑控制动画的开始时间.

这发生在任何人身上吗?

**

编辑:

**

感谢Tom,我知道触发动画的原因是在分配AnimationDrawable后主动发生的ImageVIEw可见性的变化.在我的情况下解决方案并非微不足道,因为我有一个复杂的情况,但对于其他人,它可能更简单.

编辑2:

我回来根据class description将drawable设置为背景,我引述:

The simplest way to create a frame-by-frame animation is to define the
animation in an XML file,placed in the res/drawable/ folder,and set
it as the background to a VIEw object. Then,call start() to run the
animation.

解决方法 这很可能是因为你将它指定为带有setBackgroundDrawable的背景可绘制的 – 当你指定一个背景可绘制时,对super.setVisibility的一系列调用最终会出现在VIEw中,而setVisible(..)可以触发动画.

解决方案是使用ImageDrawable?

Here’s我是如何找到罪魁祸首的.

至于为什么会这样,它可能是一个我无法解释的设计选择,虽然我可以看到为什么 – 它标志着作为背景和成为图片之间的区别 – 前者在概念上具有更长的寿命,也许. (但这是一个geuss).

如果您想使用设置背景方法,可能尝试保持您的ImageVIEw不可见,直到您想要显示动画.

总结

以上是内存溢出为你收集整理的android – AnimationDrawable自动启动全部内容,希望文章能够帮你解决android – AnimationDrawable自动启动所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1141036.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存