Android开发之--一activity加载长图

需求:  一个activity只加载显示一张长图,宽度固定为屏幕的宽,高度自适应滑动,并且可以手势放大缩小

不知道你们会怎么实现呢,今天我来记录一下自己的实现


SubsamplingScaleImageView  一个开源控件,使用方法:

布局中:只有这一个控件

xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_article_detail_hufu"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.jixiong.teen.activity.ArticleDetailHufuActivity">

            android:id="@+id/ivHufuDetail"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />


java代码中:

首先,找到这个控件

@Bind(R.id.ivHufuDetail)
SubsamplingScaleImageView ivHufuDetail;

然后设置初始值

ivHufuDetail.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CENTER_CROP);
ivHufuDetail.setMinScale(1.0F);//最小显示比例
ivHufuDetail.setMaxScale(10.0F);//最大显示比例(太大了图片显示会失真,因为一般微博长图的宽度不会太宽)

然后,加载服务器传来的图片,这里用的glide

if (!imageUrl.isEmpty()) {
    Glide.with(this)
            .load(imageUrl).downloadOnly(new SimpleTarget() {
        @Override
        public void onResourceReady(File resource, GlideAnimationsuper File> glideAnimation) {
            // 将保存的图片地址给SubsamplingScaleImageView,这里注意设置ImageViewState设置初始显示比例
            ivHufuDetail.setImage(ImageSource.uri(Uri.fromFile(resource)), new ImageViewState(1.0F, new PointF(0, 0), 0));
        }
    });
}

你可能感兴趣的:(Android)