آموزش Picasso در کاتلین
سلام دوستان عزیز در این سری از آموزش برنامه نویسی اندروید به آموزش Picasso در کاتلین می پردازیم همانطور که می دانید از کتابخانه Picasso به منظور لود عکس یا بارگذاری عکس استفاده می شود هدف اصلی ایجاد این کتابخانه caching و دانلود عکس بوده است در ادامه با ما همراه باشید تا نحوه استفاده از کتابخانه picasso در کاتلین را یاد گیرید.
مثل هیشمه قبل از اینکه از این کتابخانه استفاده کنید لازم است آن را به پروژه خود اضافه کنید , وارد فایل Build.gradle شده و در بخش dependencies خط زیر را اضافه کنید.
1 | implementation 'com.squareup.picasso:picasso:2.71828' |
پروژه را sync کنید فقط دقت داشته باشید اگر پروژه sync نشد MavenCenteral را به فایل گریدل اضافه کنید.
1 2 3 | repositories { mavenCentral() } |
خب برویم سراغ کد
1 | Picasso.with(context).load(path).into(imageView); |
اگر بخواهیم یک مقدار از picasso به صورت پیشرفته تر استفاده کنیم بهتر است یک کلاس به نام picasso.kt ایجاد کنید و فقط کد زیر را در آن قرار دهید.
1 2 | public val Context.picasso: Picasso get() = Picasso.with(this) |
این کار باعث می شود در هر Context از فرگمنت یا اکتیویتی به Picasso دسترسی راحت تر داشته باشیم.
اگر بخواهیم از ویژگی Extension Functions کاتلین برای کتابخانه Picasso استفاده کنیم می توانیم آن را مثل زیر بنویسیم.
1 2 3 | public fun ImageView.load(path: String, request: (RequestCreator) -> RequestCreator) { request(getContext().picasso.load(path)).into(this) } |
مزیت کد بالا اینکه هرجا Imaview داشتید راحت می توانید فقط متد load که به Imageview داده شده استفاده کنید یعنی مثل زیر استفاده کنید.
1 | imageView.load(path) { request -> request.centerCrop() } |
Extension Functions ها در پست قبلی توضیح دادیم می توانید از این لینک مطالعه کنید.
اگر خواستید عکسی را resize کنید می توانید مثل زیر عمل کنید.
1 2 3 4 5 | Picasso.get() .load(url) .resize(50, 50) .centerCrop() .into(imageView) |
اگر خواستید عکس را از منبعی به غیر از url لود کنید یه نگاهی به کد های زیر نیز بیندازید.
1 2 3 | Picasso.get().load(R.drawable.landing_screen).into(imageView1); Picasso.get().load("file:///android_asset/DvpvklR.png").into(imageView2); Picasso.get().load(new File(...)).into(imageView3); |
اگر نیاز به Callback لود شدن دارید مثل زیر عمل کنید.
1 2 3 4 5 6 7 8 9 10 | Picasso.with(MainActivity::this) .load(imageUrl) .into(imageView, object: com.squareup.picasso.Callback { override fun onSuccess() { //set animations here } override fun onError(e: java.lang.Exception?) { //do smth when there is picture loading error } }) |
موفق و پیروز باشید.