با سلام
برای دانلود و کش عکس در برنامه نویسی اندروید کتابخانه های زیادی وجود دارد که معروف ترین آن ها : picasoo و glide است.
لایبرری picasso نسبت به رقبای خود مزیت هایی دارد که از جمله آن ها میتوان به سرعت بارگذاری بالا ، حفظ کیفیت عکس ، آپشن های مختلف برای تغییر سایز عکس ، قابلیت کش عکس برای افزایش سرعت در فراخوانی های بعدی اشاره کرد.
در آموزش امروز نحوه فراخوانی و استفاده از کتابخانه پیکاسو (picasso) را در اندروید استودیو به شما آموزش خواهیم داد.
کار با picasso بسیار ساده است.
ابتدا از طریق یکی از ۲ روش زیر کتابخانه picasso را به پروژه خود اضافه نمایید :
راه اول :
دانلود فایل jar کتابخانه picasso از این لینک و قراردادن آن در پوشه libs پروژه.
راه دوم :
اضافه کردن خط زیر به فایل build.gradle پروژه در قسمت dependencies
1 |
compile 'com.squareup.picasso:picasso:2.5.2' |
پس از اضافه کردن لایبرری به پروژه با استفاده از کد ساده زیر می توانیم عکس را از یک url دانلود و در imageview نمایش دهیم
1 |
Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView); |
همچنین برای تغییر سایز عکس می توانیم با استفاده از کد زیر سایز دلخواه را به عکس بدهیم
1 2 3 4 5 |
Picasso.with(context) .load(url) .resize(50, 50) .centerCrop() .into(imageView) |
برای بارگذاری یک تعداد عکس در listview هم میتوانید به سادگی در adapter لیست ویو در قسمت onBindViewHolder از همین کد ها برای دانلود عکس ها با استفاده از url استفاده نمایید.
اگر سوالی داشتید لطفا در بخش نظرات مطرح کنید
موفق باشید.
خیلی عالی بود
تازه با سایت خویتون آشنا شدم. خواهشا کتابخانه های معروف دیگه رو هم معرفی و نحوه استفاده ازشون رو هم قرار بدین
با تشکر فراوان
تشکر
ازین که مطلب مفید واقع شده بسیار خرسندیم
ان شا.. بزودی در یک پست ۵ کتابخانه مفید اندروید رو معرفی میکنیم و آموزش استفاده از هرکدام را هم درآینده خواهیم گذاشت.
عالی بود .ساده. روان و کاربردی
درود
من با یه کلاس که اونم از اینترنت گرفتم عکسهارو دانلود و کش میکنم بعدم داخل لیستویو نشون میدم
اما یه مشکل دارم
مثلا وارد اکتیویتی که میشم و لیست عکسها رو از نت میگیرم و داخل لیست ویو نشون میدم یه چیزی نزدیک ۱۵ مگ رم اشغال میشه!اینش مهم نیست،زمانی که اکتیویتی رو میبندم و فرم اصلی میرم رم آزاد نمیشه و وقتی برمیگردم به اکتیویتی دوم و دوباره همون عکسا رو نشون میدم باز ۱۵ مگ به رم اضافه میشه!!چرا!!
با یه تست فهمیدم وقتی عکس و داخل imageview ست میکنم این اتفاق میوفته!!
آیا این picasoo مشکل من و حل میکنه!!
بعدم مگه آدابتر فقط سطرهایی که درحال نمایشن و نگه نمیدار؟پس چرا اکتیویتی و میبندم آزاد نمیشه
ممنون میشم کمکم کنید
سلام من از این روش ما استفاده کردم ولی خطا میده و برنامه بسته میشه .
Method call should not happen from the main thread.
لطفا راهنمایی کنید .
سلام کتابخانه پیکاسو بطور پیش فرض مموری کشه روانجام میده اما اگه تو حالت آفلاین وارد برنامه بشیم عکسا رو نشون نمیده که لازمش اینه که این لایبرری دیسک کشه رو انجام بده اما انجام نمیده برای اینکه این کتابخونه رو طوری تنظیم کنیم که دیسک کشه رو انجام بده چه راه حلی دارید؟ممنون میشم راهنمایی کنید