فول کده
ورود عضویت
تبلیغات

آموزش Glide در اندروید – بخش دوم (شروع کار با گلاید)

Glide | گلاید
هادی اکبرزاده
نوشته شده توسط هادی اکبرزاده

آموزش Glide در اندروید
بخش اول (راه اندازی گلاید)


حالا که گلاید را نصب کردیم، بیایید ببینیم چطور می‌شود از این کتابخانه در پروژه‌ی خود استفاده کرد.

انواع حالت لود کردن تصویر

برای مشخص کردن تصویری که قرار است بارگزاری شود، از متد load استفاده می‌کنیم. این متد، 8 حالت دارد و هرکدام شامل یک ورودی هستند:

1. ورودی String: لینک


2. ورودی Int: ریسورس


3. ورودی فایل


4. ورودی Uri


ورودی‌های Drawable، Bitmap، Object و byte[] را هم خودتان تست کنید.

ایجاد GlideApp

نکته: این مرحله را به صورت کلیشه‌ای رد کنید.
اگر سعی کنید به کلاس GlideApp دسترسی پیدا کنید، خواهید دید که چنین کلاسی وجود ندارد! برای ایجاد این کلاس، یک کلاس با نام MyAppGlideModule ایجاد کرده و آن را به صورت زیر کامل کنید.

حالا برای اطمینان، یک بار پروژه‌ی خود را build کنید. GlidApp برخی متدهای جدیدی در اختیار ما قرار می‌دهد. در این مورد، بعدا بیشتر توضیح خواهم داد.

از این به بعد، به جای Glide، از GlideApp استفاده می‌کنیم.

تصویر placeholder

می‌توانیم تصویری را مشخص کنیم تا قبل از لود شدن تصویر اصلی، نمایش داده شود. برای این‌کار از متد placeholder استفاده می‌کنیم که دونوع ورودی می‌گیرد.

  • int: آیدی تصویر در ریسورس
  • آبجکت drawable

نکته: چنانچه از Glide به جای GlideApp استفاده کنیم، متد placeholder وجود نخواهد داشت.
مثال: یک رنگ به عنوان placeholder قرار می‌دهیم:

ممکن است بخواهید یک رنگ تصادفی ایجاد کنید، به این‌پست مراجعه کنید.

تصویر error

ممکن است به دلیل قطع بودن اینترنت یا سرور و هردلیل دیگری، Glide قادر به دریافت تصویر نباشد که در این‌صورت اگر خطا را مدیریت نکنیم، ممکن است با مشکلاتی مواجه شویم. بدین منظور از متد error استفاده می‌کنیم تا در صورت بروز خطا، تصویر تنظیم شده برای error نمایش داده شود؛ این متد سه نوع ورودی متفاوت دارد:

  • int:آیدی تصویر در ریسورس
  • drawable
  • RequestBuilder (بعدا توضیح خواهم داد.)

این لینک در سایت ما وجود ندارد، بنابراین با خطا مواجه شده و اگر متد error را با یک تصویر از ریسورس تنظیم کرده باشیم، آن تصویر نمایش داده خواهد شد.

تنظیم dontAnimate

زمانی که تصویر لود شده در حال قرار گرفتن در ImageView است، شاید دوست داشته باشید این قرار گرفتن به نرمی صورت گیرد تا برای مثال تصویر قبلی ImageView همچون placeholder ، سریعا از بین نرفته و باعث آزار چشم نشود و زیبایی و نرمی در عین تغییر دیده شود. این حالت به صورت Fade (محو شدن) انجام می‌گیرد

به طور پیش‌فرض چنین چیزی فعال است و برای غیرفعال کردن آن باید از متد dontAnimate استفاده کنیم تا تصویر بدون درنگ، جایگزین شود:

تغییر اندازه تصویر

بتهرین کار این است که سرور تصویر را در اندازه‌ی مورد نیاز برای برنامه ارسال کند تا برنامه منابع سخت افزاری محدود سمت کلاینت را برای انجام چنین کاری صرف نکند.

  • سرعت کم نشود
  • اینترنت بیهوده استفاده نشود

اما بسنگی به دلایل خودتان، می‌توانید از متد override برای تغییر سایز تصویر استفاده کنید:

نکته: اندازه تصاویر بر واحد پیکسل است و همچنین ممکن است واحدهایی که تنظیم می‌کنید، باعث کشیدگی و زشت دیده شدن تصویر شوند.
نکته: متدهای centerCrop، centerInside و fitCenter بعدا توضیح داده خواهند شد.

نمایش تصویر Gif

از برتری‌های گلاید نصبت به سایر ایمیج لودرها، همین مورد است. مشکل این‌جاست که خود اندروید به صورت پیش‌فرض از تصاویر گیف پشتیبانی نمی‌کند اما همانطور که می‌دانید، این روزها گیف‌ها یکی از پرکاربردترین و پراستفاده‌ترین موارد در پیام‌رسان‌ها به شمار می‌روند.

نکته‌ی جالب این است که شما برای تنظیم گیف، دوباره به همان روش‌های بالا آن را درون ایمیج ویو قرار می‌دهید و خود گلاید شروع به پخش آن می‌کند!

بررسی گیف بودن تصویر

از آن‌جایی که گلاید هیچ تفاوتی بین تصویر عادی و گیف قائل نمی‌شود و چنانچه شما بخواهید تنها تصویر گیف روی ایمیج ویو قرار بگیرد، می‌توانید از متد asGif استفاده کنید تا در صورت گیف نبودن تصویر، تصویر تنظیم شده برای ارور نمایش داده شود.

نمایش تصویر به جای  پخش گیف

ممکن است تصاویر شما شامل گیف و تصویر ثابت باشند و شما بخواهید تصاویر گیف نیز همچون تصاویر عادی ثابت باشند؛ می‌توانید از متد asBitmap استفاده کنید تا در صورتی که تصویر گیف بود، بدون پخش نمایش داده شود.

تصاویر بند اندگشتی

البته بهتر است در صورت دریافت تصویر از سرور، خود سرور حالت کوچک شده‌ی تصویر، یعنی بند انگشتی یا thumbnail را برایمان داشته باشد اما چنانچه این گونه نبود، می‌توانید از متد thumbnail استفاده کنید.

نکته: مقدار وارد شده در ورودی این متد، نسبت آن به تصویر اصلی است.

اولویت دهی به درخواست‌ها

البته نمی‌شود اسم این قسمت را اولویت بندی گذاشت، چرا که با وجود آن هم تضمینی در ترتیب دریافت تصاویر وجود ندارد اما این مثل این است که سی‌پی‌یوی کامپیوتر، به جای این‌که بیشتر به فایرفاکس اهمیت دهد، بیشتر به Android Studio اهمیت می‌دهد تا سرعت آن بالا رود. البته این قفط یک مثال است.

در اینجا نیز با متد priority می‌توانیم گلایدی که می‌نویسیم را اولویت بندی کنیم. البته من اسم اهمیت دهی را بیشتر به جای اولویت بندی ترجیح می‌دهم.
با تنظیم این متد، گلاید آن تصویر را نسبت به تصاویر دیگر بیشتر یا کمتر در نظر خواهد گرفت و سرعت خود را برای تصاویر مختلف تنظیم خواهد کرد.

مقدارهای اولویت یا اهمیت، به شرح زیر از بیشتر به کمتر می‌باشند:

  • Prority.IMMEDIATE
  • Priority.HIGH
  • Priority.NORMAL
  • Priority.LOW

منتظر بخش بعدی باشید.

درس قبلی
تبلیغات
0
کانال تلگرام فول کده

درباره نویسنده

هادی اکبرزاده

هادی اکبرزاده

[ مدیر فول کده ]

متولد آبان 74. برنامه نویسی اندروید، ویندوز، وب و ...

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

قوانین نظرات

  • تعریف سیستم نظرات: سیستم نظرات، محلی است تا شما دوستان عزیز بتوانید دیدگاه خود را نسبت به مطلب قرار گرفته بنویسید، نه چیز دیگری!
  • نظراتی که به بهبود پست کمک کنند، با ذکر نام ارسال کننده به پست اضافه خواهند شد.
  • برای ارسال نظر، نیازی به سلام و احوال‌پرسی نیست و این فقط به خاطر ساده‌تر و سریع تر شدن متن می‌باشد.
  • دیدگاهی که ارسال می‌کنید، حتما باید درباره‌ی پست قرار گرفته باشد؛ نظرات پست‌های دیگر را در جای خود بنویسید در غیر این‌صورت تایید یا پاسخ داده نخواهند شد.
  • سوالی که جواب آن در پست وجود داشته باشد، تایید یا پاسخ داده نخواهد شد.
  • برای پاسخ دادن به نظرات دیگران، از گزینه‌ی پاسخ کنار هر دیدگاه استفاده کرده و یک نظر جدید ارسال نفرمایید. همچنین برای ارسال نظر جدید از گزینه‌های مربوط به پاسخ استفاده نکنید.
  • دوستان عزیز واقعا نظر لطف شماست اما متن‌های کوتاهی مانند "مرسی"، "عالی بود" ممکن است تایید نشوند. این به خاطر شلوغ نشدن قسمت نظرات است.
  • بهتر است برای ارسال نظر در سایت ثبت نام کنید و سپس با اکانت خود وارد شده و نظرتان را ارسال کنید.
  • قوانین نظرات در طول زمان در این قسمت اضافه و تغییر داده می‌شوند و می‌توانید از این قسمت بررسی کنید.
  • این قوانین شامل پست های قدیمی نمی‌شود ولی نظرات پست های قدیمی نیز در صورت نیاز اصلاح خواهند شد.

نظرات ثبت شده بدون دیدگاه