Android:带有*正确旋转*图像的快速图像 slider

标签 android image imageview image-rotation

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

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

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

这意味着您首先必须找出 correct orientation你自己然后最终做一个

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 预算”错误的结果。

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

最佳答案

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

  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

关于Android:带有*正确旋转*图像的快速图像 slider ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16776918/

相关文章:

java - 具有不同 fragment 和不同操作栏图标的Android标签栏

android - 试图从一项 Activity 中获取文本并打印到文本 Activity ,但它失败了

ios - 无法将屏幕截图上传到 iTunes Connect

c++ - 如何在 OpenCV 中设置 ROI?

Android:将 <img> 标签替换为 ImageViews

android - 如何确定viewflipper的当前 View ?

android - 无法从联系人列表中获取电话号码...内部代码

android - Volley 无法创建缓存目录。无法清理文件

javascript - 使用 Hermite-resize 缩小图像会莫名其妙地产生细黑线

android - 如何在设置 `ImageView` 时设置 `layout_weight` 的高度以匹配其宽度?