Transferee สามารถช่วยให้คุณเปลี่ยนจากมุมมองภาพขนาดย่อไปเป็นมุมมองดั้งเดิมได้อย่างราบรื่น และเรียกดูมัลติมีเดียในรูปแบบต่าง ๆ ได้อย่างหรูหรา เช่น รูปภาพธรรมดา รูปภาพขนาดยาว GIF วิดีโอ ฯลฯ
คุณสมบัติที่รองรับ:
หากคุณมีคำถามใด ๆ โปรดส่งปัญหา
เดโม.เอพีเค
ขั้นตอนที่ 1
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
ขั้นตอนที่ 2
// 添加所有 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();
หากคุณต้องการคุณสมบัติเพิ่มเติม นี่คือตัวอย่างการใช้งานที่สมบูรณ์ของผู้รับโอน:
ขั้นตอนที่ 1: สร้างตัวอย่างผู้รับโอนเพียงตัวอย่างเดียวสำหรับหนึ่งหน้า (แนะนำให้เขียนในวิธี onCreate)
transferee = Transferee.getDefault(context);
ขั้นตอนที่ 2: สร้างตัวกำหนดค่าพารามิเตอร์สำหรับผู้รับโอน
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, 所有绑定方法只能调用一个
ขั้นตอนที่ 3: แสดงผู้รับโอน
transferee.apply(config).show();
ขั้นตอนที่ 4: เมื่อออกจากหน้าคุณต้องทำลายทรัพยากรในผู้รับโอนเพื่อป้องกันหน่วยความจำรั่ว (แนะนำให้เขียนด้วยวิธี onDestroy)
transferee.destroy()
คุณสมบัติ | แสดงให้เห็น |
---|---|
sourceUrlList | การรวบรวม URL ทรัพยากรที่จะดูตัวอย่าง รูปแบบสตริง |
แหล่งที่มาUriList | คอลเลกชัน uri ทรัพยากรที่จะแสดงตัวอย่าง รูปแบบ Uri |
ตอนนี้ThumbnailIndex | ดัชนีของภาพขนาดย่อในกลุ่มรูปภาพ หากคุณผูก ListView หรือ RecyclerView จำเป็นต้องใช้แอตทริบิวต์นี้ ไม่เช่นนั้นก็สามารถละเว้นได้ หรือสามารถใช้เพื่อระบุตำแหน่งของหน้าที่แสดงเริ่มต้นเมื่อเปิดผู้รับโอน |
offscreenPageLimit | จำนวนทรัพยากรที่โหลดครั้งแรกเมื่อแสดงผู้รับโอน ค่าเริ่มต้นคือ 1 ซึ่งหมายความว่ามีการโหลดรูปภาพ 3 รูปในครั้งแรก (ตอนนี้ThumbnailIndex, ตอนนี้ThumbnailIndex + 1, ตอนนี้ThumbnailIndex - 1) ค่าคือ 2 ซึ่งหมายความว่ามีการโหลด 5 รูปภาพ และอื่นๆ |
missPlaceHolder | รูปภาพตัวยึดตำแหน่งเริ่มต้น รูปแบบรหัสทรัพยากร รูปภาพที่แสดงตามค่าเริ่มต้นเมื่อไม่ได้โหลดทรัพยากร |
missDrawable | รูปภาพตัวยึดตำแหน่งเริ่มต้น รูปแบบ Drawable รูปภาพที่แสดงตามค่าเริ่มต้นเมื่อไม่ได้โหลดทรัพยากร |
errorPlaceHolder | กำลังโหลดรูปภาพตัวยึดตำแหน่งที่ไม่ถูกต้อง รูปแบบรหัสทรัพยากร รูปภาพที่แสดงเมื่อโหลดรูปภาพต้นฉบับไม่ถูกต้อง |
error Drawable | กำลังโหลดรูปภาพตัวยึดตำแหน่งที่ไม่ถูกต้อง รูปแบบที่วาดได้ รูปภาพที่แสดงเมื่อโหลดรูปภาพต้นฉบับไม่ถูกต้อง |
สีพื้นหลัง | เมื่อผู้รับโอนแสดง สีพื้นหลังของผู้รับโอน |
ระยะเวลา | ระยะเวลาของภาพเคลื่อนไหว เช่น การเปิด การปิด การลากด้วยท่าทางเพื่อปิด การแสดงภาพเคลื่อนไหวแบบโปร่งใส การแพร่กระจายหายไป ฯลฯ |
เพียงแค่ LoadHitPage | ว่าจะโหลดเฉพาะทรัพยากรในหน้าปัจจุบันหรือไม่ หากตั้งค่าเป็นจริง เมื่อผู้รับโอนสลับไปที่หน้าปัจจุบันเท่านั้น การดำเนินการโหลดของหน้าปัจจุบันจะถูกทริกเกอร์ มิฉะนั้น การโหลดล่วงหน้าและการโหลดหน้าปัจจุบันจะดำเนินการตามค่าที่กำหนดโดย offscreenPageLimit ถูกปิดโดยค่าเริ่มต้น |
เปิดใช้งานDragClose | ไม่ว่าจะรองรับการลากลงเพื่อปิดหรือไม่ เปิดใช้งานตามค่าเริ่มต้น |
เปิดใช้งานDragHide | ไม่ว่าจะซ่อนมุมมองอื่นๆ ยกเว้นมุมมองหลักเมื่อลากและปิด โดยจะเปิดใช้งานตามค่าเริ่มต้น |
เปิดใช้งานDragPause | จะหยุดเล่นวิดีโอชั่วคราวบนหน้าปัจจุบันเมื่อลากเพื่อปิดหรือไม่ โดยค่าเริ่มต้นจะปิดไว้ |
เปิดใช้งานHideThumb | ไม่ว่าจะเปิดใช้งานหรือซ่อนภาพขนาดย่อเมื่อเปิดใช้งานผู้รับโอน ซึ่งเปิดใช้งานตามค่าเริ่มต้น |
เปิดใช้งานScrollingWithPageChange | ว่าจะเริ่มต้นรายการเพื่อเลื่อนในขณะที่สลับหน้าหรือไม่ จะใช้ได้กับการเชื่อมโยง RecyclerView/GridView/ListView เท่านั้น หลังจากเริ่มต้นระบบ เนื่องจากรายการจะเลื่อนแบบเรียลไทม์ มุมมองภาพขนาดย่อจะไม่ปรากฏว่าง ดังนั้น จึงมั่นใจได้ว่าผู้รับโอนจะถูกปิด เปลี่ยนผ่านเมื่อปิดภาพเคลื่อนไหว โดยค่าเริ่มต้น |
ตัวบ่งชี้ความคืบหน้า | ตัวบ่งชี้ความคืบหน้าในการโหลดทรัพยากร (ProgressPieIndicator และ ProgressBarIndicator มีอยู่แล้วภายในตามค่าเริ่มต้น) คุณสามารถใช้อินเทอร์เฟซ IProgressIndicator เพื่อกำหนดตัวบ่งชี้ความคืบหน้าในการโหลดทรัพยากรของคุณเอง |
ตัวบ่งชี้ดัชนี | ตัวบ่งชี้ดัชนีทรัพยากร (CircleIndexIndicator และ NumberIndexIndicator มีอยู่แล้วภายในตามค่าเริ่มต้น) คุณสามารถใช้อินเทอร์เฟซ IIndexIndicator เพื่อกำหนดตัวบ่งชี้ดัชนีทรัพยากรของคุณเอง |
imageLoader | ตัวโหลดทรัพยากร คุณสามารถใช้อินเทอร์เฟซ ImageLoader เพื่อกำหนดตัวโหลดรูปภาพของคุณเองได้ |
รหัสรูปภาพ | ImageView id ใน RecyclerView หรือ ItemView ของ ListView |
กำหนดเองดู | มุมมองที่ผู้ใช้กำหนด วางอยู่บนแผงที่แสดงโดยผู้รับโอน |
รายการมุมมอง | หากคุณใช้ ListView หรือ GridView เพื่อจัดเรียงและแสดงรูปภาพ คุณจะต้องส่ง ListView หรือ GridView ของคุณไปยังเมธอด bindListView() |
รีไซเคิลดู | หากคุณใช้ RecyclerView เพื่อจัดเรียงและแสดงรูปภาพ คุณจะต้องส่ง RecyclerView ไปยังเมธอด bindRecyclerView() |
ดูภาพ | หากคุณต้องการใช้ฟังก์ชันของไลบรารีนี้สำหรับ ImageView เดียวเท่านั้น หรือ ImageView เดียวบนอินเทอร์เฟซเป็นหน้าปกของอัลบั้ม การใช้bindImageView(...) หรือวิธีการโอเวอร์โหลดก็สามารถตอบสนองความต้องการของคุณได้ |
วิธี | แสดงให้เห็น |
---|---|
getDefault (บริบท) | รับอินสแตนซ์ผู้รับโอน |
ใช้ (กำหนดค่า) | ใช้ออบเจ็กต์พารามิเตอร์การกำหนดค่ากับอินสแตนซ์ผู้รับโอน |
แสดง() | เปิด/แสดงผู้รับโอน |
แสดง(ผู้ฟัง) | เปิด/แสดงผู้รับโอนและตรวจสอบสถานะการแสดงผล/ปิด |
isShown() | ผู้รับโอนไม่ว่าจะแสดงหรือไม่ |
อนุญาตให้ออกไป() | ปิดการโอน |
ชัดเจน() | ล้างไฟล์แคชทั้งหมด เช่น รูปภาพและวิดีโอ |
ทำลาย() | ทำลายทรัพยากรที่ผู้รับโอนใช้เพื่อป้องกันหน่วยความจำรั่ว |
getImageFile (URL) | รับภาพที่แคชไว้ซึ่งสอดคล้องกับ URL |
setOnTransfereeStateChangeListener (ผู้ฟัง) | ตั้งค่าผู้รับโอนให้แสดง/ปิด Listener เพื่อเปลี่ยนสถานะ |
เวอร์ชัน 1.6.1
เวอร์ชัน 1.6.0
เวอร์ชัน 1.5.2
เวอร์ชัน 1.5.1
เวอร์ชัน 1.5.0
เวอร์ชัน 1.3.0
เวอร์ชัน 1.2.0
เวอร์ชัน 1.1.0
เวอร์ชัน 1.0.0
เวอร์ชัน 0.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.