Android AnimationDrawable缺少帧
我正在尝试使用AnimationDrawable对象显示一组位图。由于某些原因,在UI中呈现视图时,某些图像丢失:Android AnimationDrawable缺少帧,android,frames,animationdrawable,Android,Frames,Animationdrawable,我正在尝试使用AnimationDrawable对象显示一组位图。由于某些原因,在UI中呈现视图时,某些图像丢失: ... MediaMetadataRetriever retriever = new MediaMetadataRetriever(); retriever.setDataSource(mContext, videoUri); ... AnimationDrawable frameAnimation = new AnimationDrawable(); for(int i=0; i
...
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(mContext, videoUri);
...
AnimationDrawable frameAnimation = new AnimationDrawable();
for(int i=0; i < numberOfFrames; i++) {
Bitmap frame = retriever.getFrameAtTime(i * 500 * 1000); // get 2 frames per second
frameAnimation.addFrame(new BitmapDrawable(getResources(), frame), 100); //
}
...
frameAnimation.setOneShot(false);
frameAnimation.start();
调用frameAnimation.getNumberOfFrames返回正确的帧数,例如2秒剪辑的帧数为4
问题是frameAnimation.start仅显示UI中这些帧的子集,例如frameAnimation可能有17帧,并且只能播放其中的4帧
知道为什么AnimationDrawable对象在其帧中循环时缺少位图吗
谢谢 使用17和4的数字,帧持续时间为100ms,动画是在400ms后循环还是在1700ms后循环?瞧,是真的跳过帧导致循环时间为400ms,还是不改变帧导致循环时间为1700ms?如果是后者,您确定问题不在于getFrameAtTime,例如它多次返回相同的位图吗?@Commonware使用相同的示例,每100ms显示4帧,总共记录了17帧,我在400ms内看到4帧,然后动画重新启动。看起来像是跳过了中间的画面,真奇怪。看看,如果getNumberOfFrames确实返回17,我看不出它在仅仅4次之后会如何重复。请确保在前400毫秒过后的某个时间检查getNumberOfFrames-可能在检查getNumberOfFrames和之后的某个时间之间发生了冲突。我在frameAnimation.start之前调用了getNumberOfFrames,它返回的数字总是高于屏幕上呈现的位图。我还编写了一个函数来检查位图是否唯一,这似乎是真的。我可能必须将图像转储到磁盘上,并手动检查它们是否确实被正确记录。