لود تصاویر در کاتلین با کتابخانه Coil

کتابخانه Coil اولین لایبرری لود تصاویر در کاتلین است که سریع , سبک و مدرن هست که با استفاده از Coroutine , Okhttp , Okio به لود تصاویر کمک میکنه . Coil مخفف کلمه Coroutine Image Loader هست .

کتابخانه Coil
کتابخانه Coil

همونطور که میدونید لایبرری های زیادی برای لود عکس در اندروید وجود داره مثل گلاید , پیکاسو و Fressco اما Coil یسری برتری هایی نسبت به بقیه داره که جلوتر بررسی میکنیم:

با کاتلین نوشته شده

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

استفاده از Coroutines

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

کم حجم و سبک

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


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

نمونه
نمونه

به کمک این لایبرری شما پردازش های مختلفی مثل کم کردن حجم در لود تصاویر که برای نمونه عکس 500*500 رو در دیسک حفظ و 100*100 رو در ایمیج ویو نماش میده . با این حال شما میتونید کیفیت تصاویر رو مشخص کنید و اینکه نمایش تصاویر 100*100 گزینه مناسبی برای نمایش بصورت PlaceHolder هستش .

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

نمونه کد های استفاده :

https://gist.github.com/colinrtwhite/2b5a1a7dc353c0cf6c5a9ebeba456458#file-coil-kt

بنظرم Coil کتابخونه بسیار خوبیه و میتونه جایگزین Glide و.. بشه در پروژه های کاتلین حتی در مقیاس بزرگ مورد استفاده قرار بگیره .

استفاده از اون بسیار ساده ست و امکانات خیلی خوبی داره . برای مثال با Extension Function و براحتی با صدا زدن ImageView.load() براحتی تصاویر لود میشن که تو خوانایی کد هم کمک زیادی میکنه . همینطور با دادن URL عکس رو دانلود و Drawable رو در اختیارتون قرار میده که تو کاستوم ویو ها و... هم کمک زیادی میتونه بکنه .


امیدوارم که این مقاله مفید بوده باشه و برای اطلاعات بیشتر به صفحه Coil برید و خوشحال میشم نظراتتون رو بدونم و در این باره بحث کنیم .