آموزش Picasso در کوتلین
سلام دوستان در این سری از آموزش های برنامه نویسی اندروید به آموزش Picasso در کوتلین (kotlin ) می پردازیم قبلا نحوه استفاده از کتاب خانه picasso را در اندروید برای شما قرار داده ایم و همانطور که می دانید Picasso یکی از قدرتمند ترین کتاب خانه در زمنیه load یا بارگذاری است است در ادامه با ما همراه باشید تا نحوه پیاده سازی Picasso را در کوتلین یاد گیرید.
ابتدا مثل همیشه باید این کتاب خانه را به پروژه خود اضافه کنید برای اینکار همانند زیر عمل کنید.
وارد فایل Build.gradle از نوع Top-Level شده سپس در تگ repositories دو تگ زیر را اضافه کنید (شاید وجود داشته باشد به صورت پیشفرض)
1 2 3 4 | repositories { google() jcenter() } |
در مرحله دوم وارد فایل Build.gradle از وع Module شده سپس در بخش dependencies خط زیر را اضافه کنید.
1 | implementation 'com.squareup.picasso:picasso:2.71828' |
پروژه را sync کنید. قند شکن فراموش نشود تحریم ها هنوز ادامه دارند.
بیس کد Picasso همانند زیر است.
1 | Picasso.with(context).load(path).into(imageView); |
حالا باید این رو به شکل زیر تغییر بدهیم.
1 2 | public val Context.picasso: Picasso get() = Picasso.with(this) |
در بالا ابتدا باید آن را در برنامه بارگذاری کنیم با استفاده از کد بالا بعد از اینکار برای لود کردن در حالت های مختلف می توانید از کدهای زیر استفاده کنید.
1 2 3 4 | picasso.load(path).into(imageView) public fun ImageView.load(path: String, request: (RequestCreator) -> RequestCreator) { request(getContext().picasso.load(path)).into(this) } |
حالا اگر بخوایم عکس را Crop یا ببریم می توانیم از کد زیر استفاده کنیم.
1 | imageView.load(path) { request -> request.centerCrop() } |
به غیر از این کتاب خانه یک شخص دیگر Picasso را به صورت کامل برای کوتلین قابل استفاده کرده است که در ادامه به آن می پردازیم.
ابتدا کتاب خانه را همانند زیر به پروژه اضافه کنید.
1 | compile 'com.hendraanggrian:pikasso:0.2' |
سپس با استفاده از کد زیر می توانید عکس را لود کنید.
1 | picasso.load(url).into(imageView) |
برای اینکه CallBack براش تعریف کنید مثل زیر می توانید عمل کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Picasso.get().load(url).into(imageView, object : Callback { override fun onSuccess() { } override fun onError(e: Exception) { } }) Picasso.get().load(url).into(object : Target { override fun onBitmapFailed(e: Exception, errorDrawable: Drawable?) { } override fun onBitmapLoaded(bitmap: Bitmap, from: Picasso.LoadedFrom) { } override fun onPrepareLoad(placeHolderDrawable: Drawable?) { } }) |
یک مدل ساده تره از callback می توانید مثل زیر استفاده شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | picasso.load(url).into(imageView) { onSuccess { } onFailed { } } picasso.load(url).into { onFailed { e, drawable -> } onLoaded { bitmap, from -> } onPrepare { drawable -> } } |
اگر بخواهید عکس را گرد , مربع یا به شکل های مختلف در آوردید می توانید از دو راه استفاده کنید
اولین راه دو نوع از آن را استفاده کنید مثلا هم عکس گرد شود و هم مربعی .
دومین راه فقط عکس به طور مثال گرد شود.
1 2 3 4 5 6 7 8 9 | Picasso.with(context) .load(image) .circle() .into(target) // multiple transformation Picasso.with(context) .load(image) .transform(listOf(CropCircleTransformation(), ColorGrayscaleTransformation())) .into(target) |
در بالا در بخش دوم کد عکس را به دو شکل در آوردیم.
لیستی از انواع شکل ها و Transform هایی که این کتاب خانه پیشتیبانی می کند همانند زیر است.
crop square | square() |
crop circle | circle() |
crop rounded | rounded(radius) rounded(radius, margin)<br> rounded(radius, margin, usedDp) |
overlay | overlay(color, alpha) overlay(context, colorRes, alpha) |
grayscale | grayscale() |
این آموزش هم به پایان رسید.
موفق باشید.
سلام ، ممنون از آموزش خوبتون
یک سوال ، من که جاوا کار هستم و کوتلین کار نمیکنمدچطور از مطالب سایتتون که با کوتلین آموزش میدین استفاده کنم؟؟؟
سلام بله مشکلی نداره می تونید شروع کنید به یادگیری زیاد طول نمی کشه یاد بگیرید البته یکم از نظر syntax با جاوا متفاوت است.
سلام
نه منظورم یادگیری کوتلین نیست … چون زیاد با سینتکش راحت نیستم
میگم راهی نداره این کدهایی که شما زدین با کوتلین رو یک جوری به جاوا تبدیل کنم؟؟؟؟
تمامی کدهای که به کوتلین زده شده قبلا به جاوا قرار گرفته ولی غیر قابل تبدیل است یعنی نمیشه آن را تبدیل کرد باید به هر دو زبان مسلط باشید تا تبدیل را انجام دهید.
سلام میشه بگید اون get() واسه چی هست
چون یه متغییر به یه شی اشاره کرده نمیدونم اون get برای چی گذاشته میشه راهنمایی کنید لطفا؟
سلام
در ورژن جدید picasso از واژه get برای لود کتاب خانه استفاده می شود سپس ادامه کد.
موفق باشید.