我目前正在尝试创建一个图像"播放器"展示一个人的动力。记录驱动器并将其存储为图像,每秒分割为1个图像。
我使用Glide拉动图像。然而,正如你可以想象的那样,有很多图像 - 成千上万。我的第一个想法是使用Glide的downloadOnly
选项下载图像,并使用Discrete
Seekbar,随着图像的下载,然后增加Seekbar的最大值。该方法的问题在于需要很长时间。
这是我目前下载图片的目的:
private void downloadOnlyImages(List<String> URLs){
totalImages = 0;
for(final String url: URLs){
Glide.with(this)
.load(url)
.downloadOnly(new SimpleTarget<File>() {
@Override
public void onResourceReady(File resource, GlideAnimation<? super File> glideAnimation) {
Log.i("glide", "image downloaded" + url);
mySeekBar.setMax(totalImages++);
}
});
}
}
这就是我目前使用的搜索栏:
mySeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
Glide.with(getActivity())
.load(URLs.get(progress))
.fitCenter()
.dontAnimate()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(imageView);
}
想法是,下载图像,然后使用搜索栏移动它们,始终用下一个图像替换相同的ImageView
。使用Glide的缓存,我试图检查它是否在缓存中然后拉出该图像,如果没有,则使用URL获取。但是,这会阻碍UI线程,导致延迟。
TLDR:我希望能够将搜索栏用作&#34;播放器&#34;我使用Glide拉动了数千张图像。然而,使用我天真的方法非常迟钝。试图想出一种更有效和更有效的方式来拉动图像,在更多的延迟加载中#34;方式。