Android SubsamplingScaleImageView简单应用

SubsamplingScaleImageView是一个图片浏览库,支持点击和缩放,支持长图和超大图。

导入库

dependencies {
    implementation 'com.davemorrissey.labs:subsampling-scale-image-view:3.10.0'
    // androidx项目使用
    implementation 'com.davemorrissey.labs:subsampling-scale-image-view-androidx:3.10.0'
}

布局文件引用SubsamplingScaleImageView

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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/image_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>

SubsamplingScaleImageView使用ImageSource来加载图片

setImage(@NonNull ImageSource imageSource)
setImage(@NonNull ImageSource imageSource, ImageViewState state)
setImage(@NonNull ImageSource imageSource, ImageSource previewSource)
setImage(@NonNull ImageSource imageSource, ImageSource previewSource, ImageViewState state)

ImageSource目前只支持本土访问,可配合图片管理工具使用

ImageSource resource(int resId)
ImageSource asset(@NonNull String assetName)
ImageSource uri(@NonNull String uri)
ImageSource uri(@NonNull Uri uri)
ImageSource bitmap(@NonNull Bitmap bitmap)

加载后的图片会居中显示,

在这里插入图片描述

如果加载的是长图,图片也会居中显示,为了让图片适应宽度,我们可以设置minimumScaleTypeminScale,并指定起始位置

var imageView: SubsamplingScaleImageView = findViewById(R.id.image_view)

var bitmap = BitmapFactory.decodeResource(resources, R.drawable.long_pic)
var dm = DisplayMetrics()
windowManager.defaultDisplay.getMetrics(dm)

imageView.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CENTER_CROP)
imageView.minScale = bitmap.width/dm.widthPixels.toFloat()
imageView.setImage(ImageSource.bitmap(bitmap), ImageViewState(0f, PointF(0f, 0f), 0))

显示如下
在这里插入图片描述

github地址: https://github.com/davemorrissey/subsampling-scale-image-view

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值