این پست رو به دو جهت میذارم
1-شاید شما سریع بخواهید به اموزشی که استاد دادن دسترسی داشته باشین
2-یکمی عمقیتر این لایبرری رو اموزش بدیم.
پس برو تا بریم.
-----------------------------------------------------------
همونطور که میدونید این لایبرری یکی از بهترین و معروفترین لایبرریهای لود تصویر از حافظه گوشی و نت هستش که کار باهاش بسیار سادست .
کد گریدل :
compile 'com.squareup.picasso:picasso:2.5.2'
برای لود کردن تصویر از نت روی ImageView از این کد میتونید استفاده کنید
String imageUri = "ImageUrl"; // دادن آدرس تصویر در اینترنت ImageView img = (ImageView) findViewById(R.img); // تعریف ایمیج ویو Picasso.with(context).load(imageUri).into(img); // لود کردن تصویر روی ایمیج ویو
اما کار به اینجا ختم نمیشه شما میتونید کنترل بیشتری داشته باشین
ممکنه تا زمانی که ایمیج میخواد لود شه بخواین یه تصویر دیگه نشون داده بشه تا اون که دانلود شد بیاد جای این تصویر اون تصویر جایگزینه رو بهش میگن place holder یا ممکنه بخواین اگه ارتباط با نت قطع شد یا تصویر دانلود نشد یه چیز دیگه جاش نشون داده بشه
همه اینا رو با Picasso میشه مدیریت کرد . این کد رو ببینید :
Picasso.with(context).load(imageUri).fit().centerCrop() .placeholder(R.drawable.user_placeholder) // place holder تعیین .error(R.drawable.user_placeholder_error) // تعیین تصویری که موقع ارور نشون داده بشه .into(imageView);
همینطور میتونید با متد noFade افکتی که خود پیکاسو ایجاد میکنه موقع لود تصویر غیر فعال کنید
یکی دیگه از ویژگیهای پیکاسو اینه که برای کم کردن اشغال مموری میتونید تصویر رو resize کنید . به این شکل :
Picasso.with(context).load(url).resize(50, 50). centerCrop().into(imageView);
ممکنه بخواید ارورها رو مدیریت کنید و مثلا اگه تصویر لود نشد یه پیام نشون بدید به این شکل این کار انجام میشه :
Picasso.Builder builder = new Picasso.Builder(getApplicationContext()); builder.listener(new Picasso.Listener() { @Override public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) { exception.printStackTrace(); });
شاید پیش بیاد بعد دانلود تصویر بخاین سایزشو عوض کنید برای اینکار اول یه Target تعریف میکنیم و بعد اون رو به عنوان تارگت به پیکاسو بدیم :
private Target target = new Target() { @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { // Bitmap is loaded, use image here imageView.setImageBitmap(bitmap); } @Override public void onBitmapFailed() { // Fires if bitmap couldn't be loaded. } } ... Picasso.with(this).load("url").into(target);
در آخر شاید بخواین از مموری گوشی فایلی رو لود کنید یا یه drawable لود کنید اینم سادست . به این شکل عمل کنید
Picasso.with(context).load(R.drawable.landing_screen).into(imageView1); Picasso.with(context).load("file:///android_asset/DvpvklR.png").into(imageView2); Picasso.with(context).load(new File(...)).into(imageView3);
نکته آخر این لایبرری قابلین کش کردن در گوشی شما هم داره.
امیدوارم مفید بوده باشه
سوالی بود کامنت کنید .