巨大图片显示 Subsampling Scale Image View
适用于 Android 的自定义图像视图,专为照片画廊而设计,无需OutOfMemoryError
s即可显示巨大的图像(例如地图和建筑计划)。包括捏缩放、平移、旋转和动画支持,并允许轻松扩展,因此您可以添加自己的覆盖和触摸事件检测。
该视图可选地使用二次采样和图块来支持非常大的图像 - 加载低分辨率基础层,当您放大时,它会与可见区域的较小高分辨率图块重叠。这避免了在内存中保存过多数据。它非常适合显示大图像,同时允许您放大高分辨率细节。您可以禁用较小图像的平铺以及显示位图对象时。禁用平铺有一些优点和缺点,以便决定哪个最好,请参阅wiki。
演示
特征
图像显示
- 显示来自资产、资源、文件系统或位图的图像
- 根据 EXIF 自动旋转文件系统(例如相机或图库)中的图像
- 以 90° 为增量手动旋转图像
- 显示源图像的一个区域
- 在加载大图像时使用预览图像
- 在运行时交换图像
- 使用自定义位图解码器
启用平铺:
- 显示巨大的图像,大于可以加载到内存中
- 在放大时显示高分辨率细节
- 测试高达 20,000x20,000 像素,但较大的图像速度较慢
手势检测
- 一指平底锅
- 两指捏合放大
- 快速缩放(一指缩放)
- 缩放时平移
- 在平移和缩放之间无缝切换
- 平移后抛出动量
- 双击可放大和缩小
- 禁用平移和/或缩放手势的选项
动画片
- 为比例和中心设置动画的公共方法
- 可定制的持续时间和缓动
- 可选的不间断动画
可覆盖的事件检测
- 支持
OnClickListener
和OnLongClickListener
- 支持使用
GestureDetector
和拦截事件OnTouchListener
- 扩展以添加您自己的手势
轻松集成
- 在 a 内使用
ViewPager
以创建照片库 - 屏幕旋转后轻松恢复比例、中心和方向
- 可以扩展以添加随图像移动和缩放的叠加图形
- 处理视图调整大小和
wrap_content
布局
快速开始
1)将此库添加为应用程序的 build.gradle 文件中的依赖项。
dependencies {
implementation 'com.davemorrissey.labs:subsampling-scale-image-view:3.10.0'
}
如果您的项目使用 AndroidX,请按如下方式更改工件名称:
dependencies {
implementation 'com.davemorrissey.labs:subsampling-scale-image-view-androidx:3.10.0'
}
2)将视图添加到您的布局 XML。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
3a)现在,在您的片段或活动中,设置图像资源、资产名称或文件路径。
SubsamplingScaleImageView imageView = (SubsamplingScaleImageView)findViewById(id.imageView);
imageView.setImage(ImageSource.resource(R.drawable.monkey));
// ... or ...
imageView.setImage(ImageSource.asset("map.png"))
// ... or ...
imageView.setImage(ImageSource.uri("/sdcard/DCIM/DSCM00123.JPG"));
3b)或者,如果您Bitmap
在内存中有一个对象,请将其加载到视图中。这不适合大图像,因为它绕过了子采样 - 您可能会得到一个OutOfMemoryError
.
SubsamplingScaleImageView imageView = (SubsamplingScaleImageView)findViewById(id.imageView);
imageView.setImage(ImageSource.bitmap(bitmap));
github地址:https://github.com/davemorrissey/subsampling-scale-image-view
下载地址:master.zip