描述

transferee 可以帮助你完成从缩略图到原图的无缝过渡转变以及浏览查看下载图片,功能体系仿照并涵盖 ios 版本的 QQ、微信朋友圈、新浪微博的图片浏览功能

预览

支持的功能:

  • 缩略图到大图或者大图到缩略图的无缝过渡动画
  • 傻瓜式绑定 RecyclerView / ListView / GridView / ImageView
  • 支持预览图片缩放,拖动,旋转等手势操作
  • 支持自定义图片加载器[目前已经有 UniversalImageLoader / GlideImageLoader / PicassoImageLoader]
  • 支持自定义图片索引指示器
  • 支持自定义图片加载进度条
  • 支持图片保存
  • 支持大长图预览
  • 支持 Gif 图预览
  • 支持拖拽关闭

Dependency

step1.

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

step2.

// 添加所有 module  [包括 Transferee、GlideImageLoader、PicassoImageLoader、UniversalImageLoader]
implementation 'com.github.Hitomis:transferee:1.5.0'

// 单独添加核心 module Transferee, 之后至少还需要添加以下三种图片加载器中的一种
implementation 'com.github.Hitomis.transferee:Transferee:1.5.0'

// 添加 Glide 图片加载器
implementation 'com.github.Hitomis.transferee:GlideImageLoader:1.5.0'

// 添加 Picasso 图片加载器
implementation 'com.github.Hitomis.transferee:PicassoImageLoader:1.5.0'

// 添加 Universal 图片加载器
implementation 'com.github.Hitomis.transferee:UniversalImageLoader:1.5.0'

Usage

如果针对单个 ImageView 使用,将非常简单:

Transferee.getDefault(context)
        .apply(TransferConfig.build()
                .setImageLoader(GlideImageLoader.with(getApplicationContext()))
                .bindImageView(sourceIv, imageUrl)
        ).show();

如果你需要更多的功能,下面是 transferee 完整的使用示例:

step 1: 一个页面只创建一个 transferee 示例 (建议写在 onCreate 方法中)

transferee = Transferee.getDefault(context);

setp 2: 为 transferee 创建参数配置器,一般配置固定不变的参数

TransferConfig config = TransferConfig.build()
       .setSourceImageList(ImageConfig.getSourcePicUrlList()) // 图片url集合
       .setMissPlaceHolder(R.mipmap.ic_empty_photo) // 图片加载前的占位图
       .setErrorPlaceHolder(R.mipmap.ic_empty_photo) // 图片加载错误后的占位图
       .setProgressIndicator(new ProgressPieIndicator()) // 图片加载进度指示器
       .setIndexIndicator(new NumberIndexIndicator()) // 图片数量索引指示器
       .setImageLoader(GlideImageLoader.with(getApplicationContext())) // 设置图片加载器
       .setJustLoadHitImage(true) // 是否只加载当前显示在屏幕中的的图片
       .enableDragClose(true) // 开启拖拽关闭
       .setOnLongClickListener(new Transferee.OnTransfereeLongClickListener() {
            @Override
            public void onLongClick(ImageView imageView, String imageUri, int pos) {
                saveImageFile(imageUri); // 使用 transferee.getFile(imageUri) 获取缓存文件保存
            }
        })
       .bindRecyclerView(gvImages, R.id.iv_thum);
       
TransferConfig 可以绑定 ImageView, ListView, RecyclerView, 详见下面 api 说明
                                     

setp 3: 显示 transferee

config.setNowThumbnailIndex(position);
transferee.apply(config).show();

Config

属性 说明
nowThumbnailIndex 缩略图在图组中的索引
offscreenPageLimit 显示 transferee 时初始化加载的图片数量, 默认为1, 表示第一次加载3张(nowThumbnailIndex, nowThumbnailIndex + 1, nowThumbnailIndex - 1); 值为 2, 表示加载5张。依次类推
missPlaceHolder 缺省的占位图,资源 id 格式。图片未加载完成时默认显示的图片
missDrawable 缺省的占位图,Drawable 格式。图片未加载完成时默认显示的图片
errorPlaceHolder 加载错误的占位图,资源 id 格式。原图加载错误时显示的图片
errorDrawable 加载错误的占位图,Drawable 格式。原图加载错误时显示的图片
backgroundColor transferee 显示时,图片后的背景色
duration transferee 播放过渡动画的动画时长
justLoadHitImage 是否只加载当前显示在屏幕中的的原图。如果设置为 true,那么只有当 transferee 切换到当前页面时,才会触发当前页面原图的加载动作,否则按 offscreenPageLimit 所设置的数值去做预加载和当前页面的加载动作
enableDragClose 是否支持向下拖拽关闭
sourceImageList 原图路径集合
progressIndicat 图片加载进度指示器 (默认内置 ProgressPieIndicator 和 ProgressBarIndicator)。可实现 IProgressIndicator 接口定义自己的图片加载进度指示器
indexIndicator 图片索引指示器 (默认内置 CircleIndexIndicator 和 NumberIndexIndicator)。可实现 IIndexIndicator 接口定义自己的图片索引指示器
imageLoader 图片加载器 (默认 UniversalImageLoader )。可实现 ImageLoader 接口定义自己的图片加载器
imageId RecyclerView 或者 ListView 的 ItemView 中的 ImageView id
customView 用户自定义的视图,放置在 transferee 显示后的面板之上
listView 如果你是使用的 ListView 或者 GridView 来排列显示图片,那么需要将你的 ListView 或者 GridView 传入 bindListView() 方法中
recyclerView 如果你使用的 RecyclerView 来排列显示图片,需要将 RecyclerView 传入 bindRecyclerView() 方法中
imageView 如果只想对单个 ImageView 使用此库的功能,或者界面上单个的 ImageView 是相册的封面,那么使用 bindImageView(...) 或者它的重载方法可以满足你的需求

Method

方法 说明
getDefault(context) 获取 transferee 实例
apply(config) 将配置参数对象应用到 transferee 实例中
show() 打开/显示 transferee
show(listener) 打开/显示 transferee,并监听显示/关闭状态
isShown() transferee 是否显示
dismiss() 关闭 transferee
clear(imageLoader) 清除 ImageLoader 中加载的缓存
setOnTransfereeStateChangeListener(listener) 设置 transferee 显示/关闭状态改变的监听器

下载

transferee?t=202004091024-master.zip
源码下载

开源

项目地址:  https://github.com/Hitomis/transferee?t=202004091024

项目分类:  Android

提 交 者 :  vansz

授权协议 : Apache-2.0