Android:具有*正确旋转*图像的快速图像滑块

时间:2013-05-27 16:06:12

标签: android image imageview image-rotation

有很多例子如何将ViewPager用作图像滑块,但我还没有看到任何处理 正确旋转 图像的问题:

现在实际上我有一个解决方案,但问题是当图像大小超过大约3000 * 1500像素时图像滑动痛苦地慢因为额外的旋转步骤:

通过设置图像时,ImageView本身并不关心正确的方向 setImageURI或setImageBitmap。

这意味着您首先必须自己查找correct orientation,然后最终执行

matrix.postRotate(rotation) 

使用

创建一个新的位图
Bitmap.createBitmap(srcBitmap, 0, 0, srcBitmap.getWidth(),
                srcBitmap.getHeight(), matrix, true);

这个额外的位图创建确实减慢了它的速度。

如果这是一种加载“动态旋转”图像的方法? STH。比如BitmapFactory.decodeStream(stream,matrix)?

我还尝试将ViewPager.setOffscreenPageLimit值增加到3,但是 “java.lang.OutofMemoryError:位图大小超过VM预算”错误的结果。

不知何故,它必须是可能的,因为使用默认的“Gallery”应用程序,即使使用非常大的图像,滑动也非常快......但我想这不是一项微不足道的任务吗?

1 个答案:

答案 0 :(得分:1)

最后我找到了解决方案:获得快速响应,快速和安全流体图像滑动行为需要做两件事:

  1. 使用AsyncTask在后台加载位图 https://developer.android.com/training/displaying-bitmaps/process-bitmap.html

  2. 使用BitmapFactory.Options.inSampleSize(使用ViewPager和Bitmap维度之间的比率计算)加载位图的缩减采样版本

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