transferee
v1.6.1
transferee 可以幫助你完成從縮視圖到原始視圖的無縫過渡轉變, 優雅的瀏覽普通圖片、長圖、gif圖、影片等不同格式的多媒體。
支援的功能:
如有任何問題歡迎提Issues
demo.apk
step1.
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
step2.
// 添加所有 module [包括 Transferee、GlideImageLoader、PicassoImageLoader、UniversalImageLoader]
implementation 'com.github.Hitomis:transferee:1.6.1'
// 单独添加核心 module Transferee, 之后至少还需要添加以下三种图片加载器中的一种
implementation 'com.github.Hitomis.transferee:Transferee:1.6.1'
// 添加 Glide 图片加载器
implementation 'com.github.Hitomis.transferee:GlideImageLoader:1.6.1'
// 添加 Picasso 图片加载器
implementation 'com.github.Hitomis.transferee:PicassoImageLoader:1.6.1'
// 添加 Universal 图片加载器
implementation 'com.github.Hitomis.transferee:UniversalImageLoader:1.6.1'
如果針對單一ImageView 使用,將非常簡單:
Transferee transfer = Transferee.getDefault(context);
transfer.apply(TransferConfig.build()
.setImageLoader(UniversalImageLoader.with(getApplicationContext()))
.setSourceUrlList(SourceConfig.getMixingSourceGroup())
.create()
).show());
// 离开页面不要忘记调用
transfer.destroy();
如果你需要更多的功能,以下是transferee 完整的使用範例:
step 1: 一個頁面只建立一個transferee 範例(建議寫在onCreate 方法中)
transferee = Transferee.getDefault(context);
step 2: 為transferee 建立參數配置器
TransferConfig config = TransferConfig.build()
.setSourceImageList(sourceUrlList) // 资源 url 集合, String 格式
.setSourceUriList(sourceUriList) // 资源 uri 集合, Uri 格式
.setMissPlaceHolder(R.mipmap.ic_empty_photo) // 资源加载前的占位图
.setErrorPlaceHolder(R.mipmap.ic_empty_photo) // 资源加载错误后的占位图
.setProgressIndicator(new ProgressPieIndicator()) // 资源加载进度指示器, 可以实现 IProgressIndicator 扩展
.setIndexIndicator(new NumberIndexIndicator()) // 资源数量索引指示器,可以实现 IIndexIndicator 扩展
.setImageLoader(GlideImageLoader.with(getApplicationContext())) // 图片加载器,可以实现 ImageLoader 扩展
.setBackgroundColor(Color.parseColor("#000000")) // 背景色
.setDuration(300) // 开启、关闭、手势拖拽关闭、显示、扩散消失等动画时长
.setOffscreenPageLimit(2) // 第一次初始化或者切换页面时预加载资源的数量,与 justLoadHitImage 属性冲突,默认为 1
.setCustomView(customView) // 自定义视图,将放在 transferee 的面板上
.setNowThumbnailIndex(index) // 缩略图在图组中的索引
.enableJustLoadHitPage(true) // 是否只加载当前显示在屏幕中的的资源,默认关闭
.enableDragClose(true) // 是否开启下拉手势关闭,默认开启
.enableDragHide(false) // 下拉拖拽关闭时,是否先隐藏页面上除主视图以外的其他视图,默认开启
.enableDragPause(false) // 下拉拖拽关闭时,如果当前是视频,是否暂停播放,默认关闭
.enableHideThumb(false) // 是否开启当 transferee 打开时,隐藏缩略图, 默认关闭
.enableScrollingWithPageChange(false) // 是否启动列表随着页面的切换而滚动你的列表,默认关闭
.setOnLongClickListener(new Transferee.OnTransfereeLongClickListener() { // 长按当前页面监听器
@Override
public void onLongClick(ImageView imageView, String imageUri, int pos) {
saveImageFile(imageUri); // 使用 transferee.getFile(imageUri) 获取缓存文件保存,视频不支持
}
})
.bindImageView(imageView, source) // 绑定一个 ImageView, 所有绑定方法只能调用一个
.bindListView(listView, R.id.iv_thumb) // 绑定一个 ListView, 所有绑定方法只能调用一个
.bindRecyclerView(recyclerView, R.id.iv_thumb) // 绑定一个 RecyclerView, 所有绑定方法只能调用一个
step 3: 顯示transferee
transferee.apply(config).show();
step 4: 離開頁面的時候需要銷毀transferee 中的資源,防止記憶體洩漏(建議寫在onDestroy 方法中)
transferee.destroy()
屬性 | 說明 |
---|---|
sourceUrlList | 將要預覽的資源url 集合, String 格式 |
sourceUriList | 將要預覽的資源uri 集合, Uri 格式 |
nowThumbnailIndex | 縮圖在圖組中的索引, 如果你綁定了ListView 或RecyclerView,這個屬性是必須的,否則可以忽略; 亦或可以作為打開transferee 時指定初始化顯示頁面的position |
offscreenPageLimit | 顯示transferee 時初始化載入的資源數量, 預設為1, 表示第一次載入3張(nowThumbnailIndex, nowThumbnailIndex + 1, nowThumbnailIndex - 1); 值為2, 表示載入5張。依序類推 |
missPlaceHolder | 缺省的佔位圖,資源id 格式。資源未載入完成時預設顯示的圖片 |
missDrawable | 缺省的佔位圖,Drawable 格式。資源未載入完成時預設顯示的圖片 |
errorPlaceHolder | 載入錯誤的佔位圖,資源id 格式。原圖載入錯誤時顯示的圖片 |
errorDrawable | 載入錯誤的佔位圖,Drawable 格式。原圖載入錯誤時顯示的圖片 |
backgroundColor | transferee 顯示時,transferee 背景色 |
duration | 開啟、關閉、手勢拖曳關閉、透明度動畫顯示、擴散消失等動畫的長度 |
justLoadHitPage | 是否只載入目前頁面中的資源。如果設定為true,那麼只有當transferee 切換到目前頁面時,才會觸發目前頁面的載入動作,否則按offscreenPageLimit 設定的數值去做預先載入和目前頁面的載入動作,預設為關閉 |
enableDragClose | 是否支援向下拖曳關閉,預設開啟 |
enableDragHide | 拖曳關閉時是否隱藏除主視圖以外的其他view, 預設開啟 |
enableDragPause | 拖曳關閉時是否暫停目前頁面影片播放, 預設關閉 |
enableHideThumb | 是否開啟當transferee 開啟時,隱藏縮圖,預設為開啟 |
enableScrollingWithPageChange | 是否啟動清單隨著page 的切換而滾動,僅針對綁定RecyclerView/GridView/ListView 有效, 啟動之後因為列表會實時滾動,縮圖view 將不會出現為空的現象,從而保證關閉transferee 時為過渡關閉動畫, 預設關閉 |
progressIndicator | 資源載入進度指示器(預設內建ProgressPieIndicator 和ProgressBarIndicator)。可實現IProgressIndicator 介面定義自己的資源載入進度指示器 |
indexIndicator | 資源索引指示器(預設內建CircleIndexIndicator 和NumberIndexIndicator)。可實現IIndexIndicator 介面定義自己的資源索引指示器 |
imageLoader | 資源加載器。可實作ImageLoader 介面定義自己的圖片載入器 |
imageId | RecyclerView 或ListView 的ItemView 中的ImageView id |
customView | 使用者自訂的視圖,放置在transferee 顯示後的面板之上 |
listView | 如果你是使用的ListView 或GridView 來排列顯示圖片,那麼需要將你的ListView 或GridView 傳入bindListView() 方法中 |
recyclerView | 如果你使用的RecyclerView 來排列顯示圖片,需要將RecyclerView 傳入bindRecyclerView() 方法中 |
imageView | 如果只想對單一ImageView 使用此庫的功能,或者介面上單一的ImageView 是相簿的封面,那麼使用bindImageView(...) 或者它的重載方法可以滿足你的需求 |
方法 | 說明 |
---|---|
getDefault(context) | 取得transferee 實例 |
apply(config) | 將組態參數物件套用到transferee 實例中 |
show() | 開啟/顯示transferee |
show(listener) | 開啟/顯示transferee,並監聽顯示/關閉狀態 |
isShown() | transferee 是否顯示 |
dismiss() | 關閉transferee |
clear() | 清除圖片和影片等所有快取文件 |
destroy() | 銷毀transferee 使用到的資源, 防止記憶體洩漏 |
getImageFile(url) | 取得與url 對應的快取圖片 |
setOnTransfereeStateChangeListener(listener) | 設定transferee 顯示/關閉狀態改變的監聽器 |
v1.6.1
v1.6.0
v1.5.2
v1.5.1
v1.5.0
v1.3.0
v1.2.0
v1.1.0
v1.0.0
v0.5
Copyright 2017 Vans, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.