انتخاب تصاویر و ویدیو از گالری در اندروید با کتابخانه Matisse
انتخاب تصاویر و ویدیوها به صورت چندتایی
اگر با پیامرسان تلگرام کار کرده باشید، خواهید دید که میتوان از گالری به جای یک تصویر، چند تصویر انتخاب کرد! و حالا کتابخانهی Matisse، علاوه بر اینکه امکان انتخاب چندتایی را برایتان محیا میسازد، در کنار آن شامل طراحی عالی و امکانات دیگری نیز میباشد.
راهاندازی Matisse
آن را به صورت زیر به Gradle خو اضافه کنید:
1 2 3 4 5 6 7 |
repositories { jcenter() } dependencies { compile 'com.zhihu.android:matisse:$latest_version' } |
اگر چنانچه از Proguard استفاده میکنید، در صورت استفاده از Glide به عنوان موتور تصویر، دستور زیر را نیز به آن اضافه کنید:
1 |
-dontwarn com.squareup.picasso.** |
و اگر از Picaso به عنوان موتور تصویر استفاده میکنید، دستور زیر را اضافه کنید:
1 |
-dontwarn com.bumptech.glide.** |
دو دسترسی زیر را نیز به AndroidManifest.xml خود اضافه کنید:
1 2 |
android.permission.READ_EXTERNAL_STORAGE android.permission.WRITE_EXTERNAL_STORAGE |
و فراموش نکنید که این دو دسترسی در اندروید +6.0 به بالا، نیاز به تایید از طرف کاربر دارند.
روش استفاده
فرض کنید در یک اکتیویتی یا فرگمنت قرار داریم؛ حال برای باز کردن انتخابگر تصویر یا ویدیو، به صورت زیر عمل میکنیم:
1 2 3 4 5 6 7 8 9 10 |
Matisse.from(MainActivity.this) .choose(MimeType.allOf()) .countable(true) .maxSelectable(9) .addFilter(new GifSizeFilter(320, 320, 5 * Filter.K * Filter.K)) .gridExpectedSize(getResources().getDimensionPixelSize(R.dimen.grid_expected_size)) .restrictOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) .thumbnailScale(0.85f) .imageEngine(new GlideEngine()) .forResult(REQUEST_CODE_CHOOSE); |
- from: تعیین اکتیویتی یا فرگمنت فعلی
- choose: نوع انتخابی
- countable: شمارش تعداد انتخاب شده
- maxSelectable: حداکثر مقدار انتخابی
- addFilter: اضافه کردن فیلتر انتخابی
- gridExpectedSize: …
- restrictOrientation: افقی یا عمودی بودن صفحه انتخابی
- thumbnailScale: میزان بزرگنمایی تصاویر بند انگشتی
- imageEngine: موتور تصاویر (Glide یا Picaso)
- forResult: کد بازگشتی برای بررسی در رویداد onActivityResult اکتیویتی یا فرگمنت
رویداد بازشگتی onActivityResult
آن را به صورت زیر مینویسیم:
1 2 3 4 5 6 7 8 9 10 |
List<Uri> mSelected; @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE_CHOOSE && resultCode == RESULT_OK) { mSelected = Matisse.obtainResult(data); Log.d("Matisse", "mSelected: " + mSelected); } } |
کل فایلهای انتخابی در داخل لیست mSelected قرار میگیرند و میتوانیم از آن استفاده کنیم.
نظرات ثبت شده بدون دیدگاه