# TransfereeImg
**Repository Path**: dengdaoyu/TransfereeImg
## Basic Information
- **Project Name**: TransfereeImg
- **Description**: Transferee可以帮助你完成从缩略图到原图的无缝过渡转变,功能体系仿照并涵盖 ios 版本的 QQ、微信朋友圈、新浪微博的图片浏览功能
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2019-05-22
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Transferee
transferee 可以帮助你完成从缩略图到原图的无缝过渡转变,功能体系仿照并涵盖 ios 版本的 QQ、微信朋友圈、新浪微博的图片浏览功能。
transferee 支持两种模式:
1. 只有原图,就是说九宫格列表中的图片和全屏显示的大图其实来源于一张图片。详见 [UniversalNoThumActivity](https://github.com/Hitomis/transferee/blob/trans/simple/app/src/main/java/com/hitomi/transferimage/activity/universal/UniversalNoThumActivity.java)
2. 既有原图,又有缩略图,例如我司使用了阿里云的图片裁剪功能提供了缩略图来源,在列表页使用阿里云裁剪后的缩略图,优化列表数据流量和流畅度,同时又能在详情页或者图片查看器中显示大图。这种情况下也是 transferee 最适合的模式。详见[UniversalNormalActivity](https://github.com/Hitomis/transferee/blob/master/app/src/main/java/com/hitomi/transferimage/activity/universal/UniversalNormalActivity.java)
如有任何问题可以提 Issues
# Preview
# Usage
step 1: 一个页面只创建一个 transferee 示例 (建议写在 onCreate 方法中)
```
transferee = Transferee.getDefault(context);
```
setp 2: 为 transferee 创建参数配置器,一般配置固定不变的参数
```
TransferConfig config = TransferConfig.build()
.setSourceImageList(sourceImageList)
.setThumbnailImageList(thumbnailImageList)
.setMissPlaceHolder(R.mipmap.ic_empty_photo)
.setErrorPlaceHolder(R.mipmap.ic_empty_photo)
.setProgressIndicator(new ProgressPieIndicator())
.setIndexIndicator(new NumberIndexIndicator())
.setJustLoadHitImage(true)
.setListView(gvImages)
.setImageId(R.id.image_view)
.setOnLongClcikListener(new Transferee.OnTransfereeLongClickListener() {
@Override
public void onLongClick(ImageView imageView, int pos) {
saveImage(imageView);
}
})
.create();
```
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 所设置的数值去做预加载和当前页面的加载动作 |
| originImageList | 缩略图 ImageView 集合 |
| thumbnailImageList | 缩略图路径集合 |
| sourceImageList | 原图路径集合 |
| progressIndicat | 图片加载进度指示器 (默认内置 ProgressPieIndicator 和 ProgressBarIndicator)。可实现 IProgressIndicator 接口定义自己的图片加载进度指示器 |
| indexIndicator | 图片索引指示器 (默认内置 CircleIndexIndicator 和 NumberIndexIndicator)。可实现 IIndexIndicator 接口定义自己的图片索引指示器 |
| imageLoader | 图片加载器 (默认 UniversalImageLoader )。可实现 ImageLoader 接口定义自己的图片加载器 |
| imageId | RecyclerView 或者 ListView 的 ItemView 中的 ImageView id|
| listView | 如果你是使用的 ListView 或者 GridView 来排列显示图片,那么需要将你的 ListView 或者 GridView 绑定到 listView 参数 |
| recyclerView | 如果你使用的 RecyclerView 来排列显示图片,需要将 RecyclerView 绑定到 recyclerView 参数 |
# Method
| 方法 | 说明 |
| :--: | :--: |
| getDefault(context) | 获取 transferee 实例 |
| apply(config) | 将配置参数对象应用到 transferee 实例中 |
| show() | 打开/显示 transferee |
| show(listener) | 打开/显示 transferee,并监听显示/关闭状态 |
| isShown() | transferee 是否显示 |
| dismiss() | 关闭 transferee |
| clear(imageLoader) | 清除 ImageLoader 中加载的缓存 |
| setOnTransfereeStateChangeListener(listener) | 设置 transferee 显示/关闭状态改变的监听器 |
# Update log
+ v0.5
- 优化打开或者关闭 transferee 时背景色显示效果,从直接显示背景色优化为渐变显示。
- 基于 [#26](https://github.com/Hitomis/transferee/issues/26) 添加 transferee 使用本地图片场景下的 Demo
- 为 transferee 组件添加背景色自定义功能
- 为 transferee 组件添加长按监听器,并添加了长按保存图片到相册的示例代码
- 更新了部分示例代码中失效的图片地址
# Todo
+ [x] 支持高清大图和长图浏览
+ [x] 支持扩展图片保存、收藏等相关操作
+ [x] 优化 TransferConfig 的参数配置。将固定不变的配置项从每次的参数对象创建中分离开来
+ [ ] 优化单个图片使用 transferee 的场景