يمكن أن يساعدك المنقول إليه في إكمال الانتقال السلس من العرض المصغر إلى العرض الأصلي، وتصفح الوسائط المتعددة بأناقة بتنسيقات مختلفة مثل الصور العادية والصور الطويلة وصور GIF ومقاطع الفيديو وما إلى ذلك.
الميزات المدعومة:
إذا كان لديك أي أسئلة، يرجى تقديم القضايا
demo.apk
الخطوة 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 للموارد المراد معاينتها، بتنسيق سلسلة |
sourceUriList | مجموعة الموارد uri المراد معاينتها، بتنسيق Uri |
nowThumbnailIndex | فهرس الصورة المصغرة في مجموعة الصور. إذا قمت بربط ListView أو RecyclerView، فستكون هذه السمة مطلوبة، وإلا فيمكن تجاهلها أو يمكن استخدامها لتحديد موضع صفحة العرض الأولية عند فتح المنقول إليه. |
offscreenPageLimit | عدد الموارد التي تم تحميلها في البداية عند عرض المنقول إليه. الافتراضي هو 1، مما يعني أنه تم تحميل 3 صور لأول مرة (nowThumbnailIndex، nowThumbnailIndex + 1، nowThumbnailIndex - 1)؛ القيمة هي 2، مما يعني أنه تم تحميل 5 صور. وهكذا |
MissPlaceHolder | صورة العنصر النائب الافتراضية، تنسيق معرف المورد. يتم عرض الصورة بشكل افتراضي عندما لا يتم تحميل المورد. |
MissDrawable | صورة العنصر النائب الافتراضية، تنسيق قابل للرسم. يتم عرض الصورة بشكل افتراضي عندما لا يتم تحميل المورد. |
errorPlaceHolder | تحميل صورة عنصر نائب غير صحيح، تنسيق معرف المورد. يتم عرض الصورة عند تحميل الصورة الأصلية بشكل غير صحيح |
errorDrawable | تحميل صورة عنصر نائب خاطئة، تنسيق قابل للرسم. يتم عرض الصورة عند تحميل الصورة الأصلية بشكل غير صحيح |
لون الخلفية | عندما يتم عرض المنقول إليه، يكون لون خلفية المنقول إليه |
مدة | مدة الرسوم المتحركة مثل الفتح والإغلاق والسحب بالإيماءة للإغلاق وعرض الرسوم المتحركة للشفافية واختفاء الانتشار وما إلى ذلك. |
justLoadHitPage | ما إذا كان سيتم تحميل الموارد فقط في الصفحة الحالية أم لا. إذا تم التعيين على "صحيح"، فسيتم تشغيل إجراء تحميل الصفحة الحالية فقط عندما ينتقل المنقول إليه. وإلا، فسيتم تنفيذ إجراء التحميل المسبق والتحميل للصفحة الحالية وفقًا للقيمة التي حددها offscreenPageLimit مغلق بشكل افتراضي. |
تمكين السحب | يتم تمكين ما إذا كان سيتم دعم السحب لأسفل للإغلاق بشكل افتراضي |
EnableDragHide | يتم تمكين ما إذا كان سيتم إخفاء طرق العرض الأخرى باستثناء العرض الرئيسي عند السحب والإغلاق. |
EnableDragPause | ما إذا كان سيتم إيقاف تشغيل الفيديو مؤقتًا على الصفحة الحالية عند السحب للإغلاق أم لا، يتم إغلاقه بشكل افتراضي. |
تمكينHideThumb | ما إذا كان سيتم تمكين الصور المصغرة أو إخفاؤها عند تمكين المنقول إليه، يتم تمكينه افتراضيًا |
تمكينالتمرير معPageChange | ما إذا كان سيتم بدء تمرير القائمة أثناء تبديل الصفحة، يكون صالحًا فقط لربط RecyclerView/GridView/ListView. بعد بدء التشغيل، نظرًا لأنه سيتم تمرير القائمة في الوقت الفعلي، لن تظهر الصورة المصغرة فارغة، وبالتالي ضمان إغلاق المنقول إليه بشكل انتقالي عندما يتم إغلاق الرسوم المتحركة، بشكل افتراضي |
progressIndicator | مؤشر تقدم تحميل الموارد (ProgressPieIndicator وProgressBarIndicator مدمجان بشكل افتراضي). يمكنك تنفيذ واجهة IProgressIndicator لتحديد مؤشر تقدم تحميل الموارد الخاص بك. |
مؤشر | مؤشر فهرس الموارد (CircleIndexIndicator وNumberIndexIndicator مدمجان بشكل افتراضي). يمكنك تنفيذ واجهة IIndexIndicator لتحديد مؤشر فهرس الموارد الخاص بك. |
imageLoader | محمل الموارد. يمكنك تنفيذ واجهة ImageLoader لتحديد أداة تحميل الصور الخاصة بك. |
معرف الصورة | معرف ImageView في RecyclerView أو ItemView الخاص بـ ListView |
customView | عرض محدد من قبل المستخدم، يتم وضعه على اللوحة المعروضة بواسطة المنقول إليه |
listView | إذا كنت تستخدم ListView أو GridView لترتيب الصور وعرضها، فستحتاج إلى تمرير ListView أو GridView إلى الأسلوب bindListView() |
recyclerView | إذا كنت تستخدم RecyclerView لترتيب الصور وعرضها، فستحتاج إلى تمرير RecyclerView إلى طريقة bindRecyclerView() |
imageView | إذا كنت تريد فقط استخدام وظائف هذه المكتبة لـ ImageView واحد، أو أن ImageView الفردي على الواجهة هو غلاف الألبوم، فإن استخدام bindImageView(...) أو طريقته المحملة بشكل زائد يمكن أن يلبي احتياجاتك. |
طريقة | يوضح |
---|---|
الحصول الافتراضي (السياق) | الحصول على مثيل المنقول إليه |
تطبيق (التكوين) | قم بتطبيق كائن معلمة التكوين على مثيل المنقول إليه |
يعرض() | فتح/إظهار المنقول |
عرض (مستمع) | فتح/عرض المنقول إليه ومراقبة حالة العرض/الإغلاق |
يظهر () | المنقول إليه ما إذا كان سيتم عرضه |
رفض() | إغلاق المنقول |
واضح() | مسح جميع الملفات المخزنة مؤقتًا مثل الصور ومقاطع الفيديو |
تدمير () | تدمير الموارد المستخدمة من قبل المنقول إليه لمنع تسرب الذاكرة |
getImageFile(url) | احصل على الصورة المخزنة مؤقتًا المطابقة لعنوان url |
setOnTransfereeStateChangeListener (المستمع) | قم بتعيين المنقول إليه لعرض/إغلاق المستمع لتغييرات الحالة |
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.