显示一堆图像

时间:2017-09-20 06:00:10

标签: android imageview drawable ui-thread layerdrawable

鉴于

  • 许多位于资产文件夹中的图像(10 - 15)(实践表明,更好的方法是将高分辨率图像保存在资产中)
  • Android UI线程(预先缓存drawables已在后台线程中完成)

问题:

在绘制图像后,需要在所有图像上显示平滑不阻止 UI线程。

已经使用的方法:

  • 动态创建所需数量的ImageView,然后调用.setImageDrawable()。这需要花费很多时间,但最糟糕的是,即使在ImageView上绘制了所有图像之后,UI线程仍被阻止。
  • 创建一个LayerDrawable对象,并将所需Drawable的数组作为参数传递。然后通过调用ImageView将其放在.setImageDrawable()上。此选项的行为与上述选项相同。

有没有办法解决这个问题?或者Android设备无法应对它?

2 个答案:

答案 0 :(得分:0)

尝试Picasso库:

http://square.github.io/picasso/

它支持资源:

Picasso.with(context).load(R.drawable.landing_screen).into(imageView1);
Picasso.with(context).load("file:///android_asset/DvpvklR.png").into(imageView2);
Picasso.with(context).load(new File(...)).into(imageView3);

答案 1 :(得分:0)

如果您需要在图像之间平滑过渡,请尝试使用viewFlipper https://developer.android.com/reference/android/widget/ViewFlipper.html

基本上你可以在viewflipper中添加imageView并启动动画以从上一个图像移动到下一个图像。我不确定您是否需要滚动或不滚动等用户交互。如果用户需要在图像之间滚动,可以尝试viewPager。

请注意,Glide确实提供了一些转换效果,可以在占位符和要显示的图像之间切换。但是不包括图像之间的过渡,你可以看看这里 http://bumptech.github.io/glide/doc/transitions.html

我希望这会有所帮助,因为如果您要求图像之间的过渡或渲染图像,我并不确定。