بارگذاری عکس از url
سلام دوستان با بارگذاری عکس از یک url در خدمتتون هستیم شاید تا به حال فکر کرده باشید که بهتر است یک عکس را از یک url لود کنید تا این که آن را static قرار دهید مزیت این کار در تغییر عکس است اگر شما به آن عکس دسترسی داشته باشید به راحتی می توانید آن را تغییر داده و عکس بارگذاری شده در برنامه نیز تغییر خواهد کرد.با ما همراه باشید.
ما از کتاب خانه picasso برای این کار استفاده می کنیم چون هم حجم پایینی و هم امکانات بسیار خوبی در اختیارمون قرار می دهد.
ابتدا picasso رو از jitpack.io دریافت می کنیم توسط خط زیر (در قسمت gradle باید وارد شود)
[code] compile ‘com.squareup.picasso:picasso:2.5.0’
[/code]
سپس دکمه sync را بزنید و منتظر بروزرسانی ها بمانید (اگر پروژه sync نشد این مطلب را بخوانید )
پس از آن باید دسترسی یا Permission استفاده از اینترنت را در androidmanifet تعریف کنید چون می خواهیم یک دیتا در اینجا عکس را از از اینترنت بخوانیم در صورت نذاشتن این خط برنامه ارور های پی در پی خواهد داشت و برنامه باز نخواهد شد.
1 | <uses-permission android:name="android.permission.INTERNET" /> |
بعد از دادن دسترسی به سراغ بخش اصلی برنامه در Mainactivity یا اکتیویتی که شما با نام دیگر درست کردیم میریم خب باید یک Imageview هم از قبل در layout خود تعریف کنید پس کد به شکل زیر می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ImageView imgurl=(ImageView)findViewById(R.id.imageurl); Picasso.with(this) .load("https://media.kulturbanause.de/blog/2015/12/material-design.png") .centerCrop() .error(R.drawable.error) .into(imgurl, new Callback() { @Override public void onSuccess() { Toast.makeText(MainActivity.this, "Success full Loading Image", Toast.LENGTH_SHORT).show(); } @Override public void onError() { Toast.makeText(MainActivity.this, "Failed Loading image", Toast.LENGTH_SHORT).show(); } }); |
بالا centerCrop() میاد عکس رو به صورت کاملا واضح و دقیقا در وسط نمایش میده البته اگر عکس بزرگ باشه تمام ImageView رو فرا می گیرد و بخش into به معنی وارد کردن اون عکس به Imageview است که اسم Imageview ما imageurl هست.
من کد بالا رو یک توضیح بدم در کتاب خانه picasso یکسری callback یا متد بازگشتی وجود دارد که می توانیم یکسری از ارور ها را با استفاده از آنها هندل کنیم
اولین callback که شامل void ی به نام onSuccess هست اگر به صورت کامل لود انجام بشه پیام موفقیت آمیز به کاربر نمایش داده می شود(البته من فارسیش رو گفتم ).
و onError اگر به هر دلیلی عکس لود یا همان بارگذاری نشود پیام موفق آمیر نبودن به کاربر نمایش داده می شود.
در کد بالا کتاب خانه های زیر را فراخونی کردیم و استفاده شده.
1 2 3 4 | import android.widget.ImageView; import android.widget.Toast; import com.squareup.picasso.Callback; import com.squareup.picasso.Picasso; |
امیدوارم که مفید واقع شده باشد.