آخرین اثر Picasso, این بار در اندروید
حتما شما Pablo Ruiz y Picasso را میشناسید. یک مرد صاحب نام اسپانیولی در عرصه هنر و نقاشی که نام وی همچنن زنده است. اما در این مقاله ما فقط میزبان نام این هنرمند صاحب نام هستیم.
در ادامه مباحث client-server در اندروید به مبحث دریافت تصاویر و نمایش آنها در اندروید میپردازیم. تصاویر مهم ترین بخش و یا بهتر است به عنوان اصلی ترین بخش برنامه های اندرویدی تلقی شود. هرچه تصاویر با سرعت بیشتری برای کاربر به نمایش در آیند طبیعتا برنامه شما محبوب تر است. شما میتوانید از روش های بسیار زیادی استفاده کنید تا تصاویر را در اندروید اجرا کنید اما بهترین روش را میتوان استفاده از Picasso دانست و برای آشنایی بیشتر با ساختار آن میتوانید به اینجا مراجعه کنید.
مقالات ما برای تمام سطوح مقدماتی تا حرفه ای قابل استفاده است. اگر شما یک برنامه نویس در سطح مقدماتی هستید بهتر است با این روش ها مراحل حرفه ای شدن خود را سریع تر کنید و یا اگر یک برنامه نویس حرفه ای هستید و این ابزار ها از نگاه شما جا افتاده اند, کمی این ابزار را با ابزاری که تا بحال استفاده میکردید مقایسه کنید.
اولین نکته در تمام ابزاری که در اندروید میخواهیم اضافه کنیم gradle dependency می باشد
compile 'com.squareup.picasso:picasso:2.5.2'
و همچنین میتوانید از Maven استفاده کنید
<dependency> <groupId>com.squareup.picasso</groupId> <artifactId>picasso</artifactId> <version>2.5.2</version> </dependency>
و آموزش کار با Maven را میتوانید از اینجا به صورت قدم به قدم پیش بروید.
فرض را بر این میگذاریم که یک Image View داریم و نام zthImage اختصاص دادیم.
به صورت ساده ترین روش میتوان تصویر را در Image View قرار داد
Picasso.with(Context) .load(http://Image_Address) .centerCrop() .into(zhtImage);
و میتوانید Activity و یا Fragment خود را بعنوان Context در آن قرار دهید.
Picasso بدون نیاز به ایجاد یک async task جدید برای دریافت هر تصویر, به صورت اتومات اینکار را درون خود انجام میدهد.
picasso از OkHttp استفاده میکند و می توان با استفاده از callback وضعیت بارگذاری تصاویر را بررسی کنید:
Picasso.with(this).load("http://Image_Address").into(zhtImage, new Callback() { @Override public void onSuccess() { } @Override public void onError() { } });
همچنین میتوانید اگر تصاویرتان نیاز به تغییر سایز داشت از طریق ()resize آنرا اعمال کنید:
Picasso.with(this).load("http://Image_Address").resize(100,200).into( () {
تا به اینجا Picasso کار ما را بسیار راحت تر, سریع تر و حرفه ای تر کرده است. اما ممکن است این مشکل برای شما پیش آمده باشد که گاهی بدلیل تنوع رنگ تصاویر آیتم هایی مانند یک Text view که میخواهید توضیحاتی روی آن تصویر در نقش توضیح باشد, خوانایی خود را از دست میدهد.
این مشکل نیز با استفاده از picasso و یک ابزار دیگر به نام palette قابل حل است. با استفاده از این دو ابزار میتوانید متناسب با برآیند رنگ های تصویر, یک رنگ به صورت dynamic ایجاد کنید.
gradle dependency مربوط به palette به این صورت میباشد
compile 'com.android.support:palette-v7:23.2.1'
حال میتوانید با استفاده از picasso و palette چنین عمل کنید
final Palette.PaletteAsyncListener paletteAsyncListener=new Palette.PaletteAsyncListener() { @Override public void onGenerated(Palette palette) { Palette.Swatch swatch = palette.getMutedSwatch(); background.setBackgroundColor(swatch.getRgb()); } }; Picasso.with(this).load("http://Image_Address").into(zhtImage, new Callback() { @Override public void onSuccess() { Palette.from(((BitmapDrawable)zhtImage.getDrawable()).getBitmap()).generate(paletteAsyncListener); } @Override public void onError() { } });
با استفاده از این ابزار میتوانید فرآیند کد نویسی خود را سریعتر و حرفه ای تر کنید.
موفق باشید
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.