Android如何做图像屏幕滑动?

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

我使用viewpager和使用sampleSize的pagerAdapter来完成一个实现来缩放图像。 我的问题是,实现是无效的默认图库应用程序,每次滑动图像,你必须等待大约200毫秒的下一个加载。 所以基本上我的想法是如何实现它没有工作。

我怎样才能有效地做到这一点,如果可能的话还有一个允许稍后放大和缩小的实现?


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


编辑:

我已经设法使用photoview(一个被黑客入侵的viewpager)来提高速度,但是将文件path转换为位图或绘图需要太多的工作。

我已经尝试了由dilix和iDroid Explorerbuild议的这两种方法:

// Method A Drawable d = Drawable.createFromPath(imagePath); imageView.setImageDrawable(d); // Method B Bitmap myBitmap = BitmapFactory.decodeFile(imagePath); imageView.setImageBitmap(myBitmap); 

但是都产生错误的Bitmap too large to be uploaded into a texture 。 我需要尽可能快地将图像映射到imageView,并以某种方式绕过这个错误,也许我会得到一个体面的速度。 现在我正在缩放图像并将其转换为可绘制的,但效率不高。

Solutions Collecting From Web of "Android如何做图像屏幕滑动?"

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

它有页面滚动,缩放和平移,因为你需要我用它在我的项目中进行了一些修改和懒惰的图像加载。 它正在按照你的需要工作。

请参阅官方文档以获得一个很好的示例,它将引导您高效地使用viewpager的位图。 您应该使用已经加载的图像caching,并且图像应该在UI线程之外加载。 您还想要将图像缩放到显示器所需的最小尺寸(通常为2的倍数 – 请注意,图像不会总是按照您的要求缩放)ViewPager也会在后台加载图像以准备下一步幻灯片,这是setOffScreenPageLimit方法设置(默认通常是好的,我认为是2)

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

我不确定你是否得到正确的解决scheme。 但是,如果你想继续你自己的实现与你给定的链接,那么:

 http://www.androidviews.net/2012/11/photoview/ //this link is given in your question 

你可以看到如何将文件的path转换为drawable。 现在,你可以绘制你指定的文件并在你给出的链接上实现。

我认为这个链接会很好用。

随意评论。

1)

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

您必须在您的适配器中不存储绘图列表,而是链接到SD卡上的文件,然后加载它。

2)但我可以想象,文件,而不是drawables将不会如此高效,因为从文件加载,你必须parsing它从SD卡。

我想你可以通过同时在内存中加载多个图像来节省时间(压缩),当你input到其他图像时,你已经拥有了图像和内存,而且你可以开始在内存中加载其他图像。

当冲过画廊时,您可能无法加载图像并在几乎停止后加载它。

这是主要的问题:内存消耗与性能。

UPDATE

我觉得比自己探索这个更好将探索现有的代码的谷歌画廊: https : //github.com/CyanogenMod/android_packages_apps_Gallery

正如我检查 – 他们存储caching(就像我已经说过加载多个位图一样),只存储resize的图像 – 似乎是有效的。