这是我的代码的缩写:
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设置为背景,我引述:
解决方法 这很可能是因为你将它指定为带有setBackgroundDrawable的背景可绘制的 – 当你指定一个背景可绘制时,对super.setVisibility的一系列调用最终会出现在VIEw中,而setVisible(..)可以触发动画.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.
解决方案是使用ImageDrawable?
Here’s我是如何找到罪魁祸首的.
至于为什么会这样,它可能是一个我无法解释的设计选择,虽然我可以看到为什么 – 它标志着作为背景和成为图片之间的区别 – 前者在概念上具有更长的寿命,也许. (但这是一个geuss).
如果您想使用设置背景方法,可能尝试保持您的ImageVIEw不可见,直到您想要显示动画.
总结以上是内存溢出为你收集整理的android – AnimationDrawable自动启动全部内容,希望文章能够帮你解决android – AnimationDrawable自动启动所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)