安卓如何做图像屏幕幻灯片?

2022-09-03 15:56:48

我正在Android上构建一个非常基本的图库,它显示了相机文件夹中的最后一个图像,用户可以向左滑动以查看上一个图像。

我使用取页机完成了一个实现,并使用 sampleSize 缩放图像的寻呼机Adapter 完成了一个实现。我的问题是,实现的效率远不如默认的图库应用程序,每次滑动图像时,您都必须等待大约200毫秒才能加载下一个图像。因此,基本上我关于如何实现它的想法没有成功。

如何有效地执行此操作,如果可能的话,使用允许稍后放大和缩小的实现?


这看起来很有希望,但我不知道如何用文件而不是可绘制对象来实现它 http://www.androidviews.net/2012/11/photoview/


编辑:

我已经设法使用photoview(被黑客入侵的视图页)提高了速度,但是将文件路径转换为位图或可绘制对象需要太多时间。

我尝试了dilix和iDroid Explorer建议的这两种方法:

// Method A
Drawable d = Drawable.createFromPath(imagePath);
imageView.setImageDrawable(d);

// Method B
Bitmap myBitmap = BitmapFactory.decodeFile(imagePath);
imageView.setImageBitmap(myBitmap);

但是两者都会产生错误 。我需要尽快将图像发送到imageView,并以某种方式绕过此错误,也许我会获得不错的速度。现在,我正在缩放图像并将其转换为可绘制图像,但效率不是很高。Bitmap too large to be uploaded into a texture


答案 1

检查这个真棒网站:http://www.androidviews.net/ 也许这就是你想要的:http://www.androidviews.net/2012/11/photoview/

它具有页面滚动,缩放和平移,因为您需要,我已经在我的项目中使用它,并进行了一些修改和延迟图像加载。它完全按照您的需要工作。


答案 2

请参阅官方文档,了解一个很好的例子,它将引导您有效地使用带有取页机的位图。应使用已加载的图像的缓存,并且图像应加载到 UI 线程外部。您还希望将图像缩放到显示器所需的最小大小(通常是 2 的幂 - 请注意,图像并不总是缩放到您要求的大小!ViewPager还在后台加载图像以准备下一张幻灯片,该幻灯片是使用setOffScreenPageLimit方法设置的(默认值通常很好,我认为是2)。

https://developer.android.com/training/displaying-bitmaps/index.html


推荐