Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android AnimationDrawable缺少帧_Android_Frames_Animationdrawable - Fatal编程技术网

Android AnimationDrawable缺少帧

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

我正在尝试使用AnimationDrawable对象显示一组位图。由于某些原因,在UI中呈现视图时,某些图像丢失:

...
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,它返回的数字总是高于屏幕上呈现的位图。我还编写了一个函数来检查位图是否唯一,这似乎是真的。我可能必须将图像转储到磁盘上,并手动检查它们是否确实被正确记录。