2

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

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

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

这意味着您首先必须自己找出 正确的方向,然后最终做一个

matrix.postRotate(rotation) 

并使用创建一个新的位图

Bitmap.createBitmap(srcBitmap, 0, 0, srcBitmap.getWidth(),
                srcBitmap.getHeight(), matrix, true);

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

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

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

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

4

1 回答 1

1

最后我找到了解决方案:要获得响应迅速、流畅的图像滑动行为,需要做两件事:

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

  2. 使用 BitmapFactory.Options.inSampleSize 加载位图的下采样版本(使用 ViewPager 和位图尺寸之间的比率计算)

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

于 2013-05-28T08:53:37.757 回答