شروع 01 اولین قدم خیلی مهمه، خیلیا به خاطر ترس از شکست شروع نمیکنن
پس ترس رو بزار کنار و شروع کن
فقط شروع کن
تمرین و تکرار 02 خیلیا وارد حوزه برنامه نویسی میشن و به خاطر سختی هاش سریع جا میزنن و عقب میکشن
پس اگه میخوای موفق بشی فقط و فقط تمرین کن و پشتکار داشته باش
پشتکار
حرف اول و آخر رو میزنه
موفقیت 03 زمانی میتونی به این مرحله برسی که واقعا تلاش کرده باشی. برنامه نویسی واقعا راحت نیستش
اگه خوب تلاش کنی، مطمئن باش نتیجه زحماتت رو خیلی خوب دریافت میکنی
موفقیت رو باید به دست بیاری

وبلاگ

بارگذاری تصاویر بدون دردسر و خون ریزی با Coil

بارگذاری تصاویر بدون دردسر و خون ریزی
اندروید

بارگذاری تصاویر بدون دردسر و خون ریزی با Coil

بارگذاری تصاویر توی اپلیکیشن های آنلاین واقعا یکی از معضل هایی هست که هر برنامه نویس اندرویدی باهاش بارها سر و کله زده.

شاید توی نگاه اول بگی که خب یه عکس رو از اینترنت میگیریم و نشون میدیم و تمام! اینکه کاری نداره 😏 (یا حتی شاید بگی که محمد داره الکی یه موضوع به این کوچیکی رو بزرگ جلوه میده 😁 )

ولی نه، بارگذاری تصاویر به این سادگی ها هم که فکر میکنید نیست! 🤔

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

حالا فرض کن یه برنامه ای داری مینویسی که باید توش کلی عکس از اینترنت دانلود کنی و نشونش بدی و عملیات بارگذاری تصاویر رو هم خوب درست نکردی و کدهات هم اصلا اصولی و بهینه نیست!

اینجا چه اتفاقی میافته؟! مدام به GPU فشار میاد و حتی ممکنه منابع کم بیاره! یا ممکنه با اروری مثل OutOfMemory روبرو بشی!

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

اگه بخوای خودت یه کتابخونه درست کنی که تصاویر رو از اینترنت بارگذاری کنه و نشون بده، واقعا باید سطح برنامه نویسیت خیلی بالا باشه و علاوه براون باید بدونی GPU برای نمایش تصاویر چطور رفتار میکنه که واقعا پیچیده ست!

توی این پست میخوام یه کتابخونه خیلی خوب و عالی رو برای اینکار معرفی کنم و نحوه کارکردن باهاش رو هم کامل توضیح بدم.

البته واسه نمایش تصاویر کتابخونه های دیگه ای مثل Glide, Picasso, Fressco و … داریم . ولی توی این پست میخوام Coil رو معرفی کنم و بگم که چرا باید ازش استفاده کنیم.

Coil چیه؟

Coil مخفف کلمه Coroutine Image Loader هست. Coil با استفاده از Coroutine , Okhttp , Okio ساخته شده.

ویژگی های Coil
  • با کاتلین ساخته شده

کاتلین ویژگی های زیادی نسبت به جاوا داره که کمک های زیادی به ما میکنه مثل Extension Function , Lambda و… که تو این کتابخونه به خوبی ازشون استفاده شده و شما تصاویرتون رو میتونید مستقیما با استفاده از ImageView لود کنید.

  • استفاده از Coroutines

کتابخونه Coil از کتابخونه Coroutine استفاده میکنه که تو مباحث تردینگ و async به خوبی عمل میکنه.

  • کم حجم و سبک

کتابخونه Coil نسبت به Glide هشت برابر کد کمتری داره و همینطور کمتر از Picasso و Fressco هستش و حدود 1500 متد به فایل APK اضافه میکنه که باز هم کمتر از کتابخونه های دیگست .

این کتابخونه به دلیل استفاده نکردن از annotation به کم شدن سرعت کامپایل برنامه کمک زیادی میکنه .

با این کتابخونه به راحتی میتونی سایز تصاویر رو تغییر بدی، برای مثال یه عکسی از سمت سرور میاد که سایز 1080*1080 هست و خب عکس بزرگی هستش. خیلی راحت میتونی سایزش رو به 500*500 تغییر بدی.

از طرفی این کتابخونه از انیمیشن ها هم موقع بارگذاری پشتیبانی میکنه. به نمونه زیر توجه کن (ممکنه یکم طول بکشه تا بارگذاری بشه)

نحوه استفاده از کتابخونه

کد زیر رو به app/build.gradle اضافه کن و پروژه رو sync کن

implementation("io.coil-kt:coil:1.0.0-rc3")

استفاده سریع و ساده

// URL
imageView.load("https://www.example.com/image.jpg")

// Resource
imageView.load(R.drawable.image)

// File
imageView.load(File("/path/to/image.jpg"))

پیکربندی درخواست ها با کمک lambda :

imageView.load("https://www.example.com/image.jpg") {
    crossfade(true)
    placeholder(R.drawable.image)
    transformations(CircleCropTransformation())
}

نکته : imageView درواقع همون id مربوط به ImageView شماست. چون این کتابخونه ازبه روش Extension Function ساخته شده به همین دلیل میتونی مستقیم از id مربوط به ImageView هم استفاده کنی.

 

دیدگاه خود را به ما بگویید

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

14 + 20 =

فیلدهای دلخواه برای نمایش را انتخاب کنید. سایر فیلدها مخفی می شود. برای ترتیب دلخواه فیلدها را به محل دلخواه بکشید و رها کنید.
  • Image
  • SKU
  • Rating
  • Price
  • Stock
  • Availability
  • Add to cart
  • Description
  • Content
  • Weight
  • Dimensions
  • Additional information
  • Attributes
  • Custom attributes
  • Custom fields
مقایسه
علاقمندی ها 0