تطوير تطبيقات الموبايل

مكتبة بيكاسو Picasso

Reading Time: 2 minutes

هناك عدة مكتبات للتعامل مع الصور مثل Glide، UImageLoader، Fresco و Picasso. في هذه المقالة سنتحدث عن مكتبة بيكاسو وكيفية استخدامها في تطبيقات أندرويد.

تُستخدم مكتبة بيكاسو Picasso لتحميل الصور وتسهيل عملية اضافة الصور للتطبيق سواء من احدى مجلدات الموارد أو من رابط URL.

تقوم مكتبة بيكاسو بتسهيل العديد من العمليات المعقدة المرتبطة بالتعامل مع الصور مثل image transformation أو تخزين الصور بذاكرة الكاش وتتميز بيكاسو بعدم استنزافها لذاكرة الهاتف.

إضافة بيكاسو إلى التطبيق
لإضافة مكتبة بيكاسو إلى مشروعك قم بإضافة الكود التالي في مجلد ال gradle

compile 'com.squareup.picasso:picasso:2.5.2'

استخدام مكتبة بيكاسو
استخدام مكتبة بيكاسو سهل للغاية. كل الذي تحتاجه هو السطر التالي:

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);

حيث ان دالة load() تأخذ مصدر الصورة ودالة into() تأخذ الهدف الذي سيستقبل الصورة.

في المثال السابق استخدمنا الرابط التالي http://i.imgur.com/DvpvklR.png كمصدر للصورة و ImageView الهدف الذي سيعرض الصورة.

يمكنك وضع السطر في أي مكان يناسبك، على سبيل المثال داخل Button.setOnClickListener وعند الضغط على الزر تُعرض الصورة.

 

استخدام placeholder
صورة ال placeholder هي صورة مؤقتة يتم عرضها للمستخدم قبل عرض الصورة الفعِلية. إذا كان المستخدم يعاني من بطء في الانترنت فيفضل عرض صورة مؤقتة للمستخدم بدلاً من لاشيء.

لاستخدام placeholder في بيكاسو نضيف الصورة المؤقتة لدالة placeholder() كالتالي:

Picasso.with(getApplicationContext())
                        .load(photoURL)
                        .placeholder(R.drawable.placeholder)
                        .into(imageView);

عند طلب صورة معينة تظهر أولا الصورة المؤقتة ثم عند توفر الصورة الفعلية يتم استبدال الصورة المؤقتة بالفعلية بشكل تلقائي.

placeholder

 

 

استخدام (صورة خطأ) عند تعذر الصورة المطلوبة
يمكنك أيضا استخدام صورة للتعبير عن عدم توفر الصورة المطلوبة بإضافة صورة الخطأ إلى دالة error() كالتالي:

Picasso.with(getApplicationContext())
                        .load(photoURL)
                        .placeholder(R.drawable.placeholder)
                        .error(R.drawable.not_available)
                        .into(imageView);

not available

 

تقوم مكتبة بيكاسو بعمل 3 محاولات لجلب الصورة قبل عرض صورة الخطأ.

 

الحصول على الصورة كـ Bitmap

لاحظ أنه في الأمثلة السابقة تم جلب الصورة ووضعها بشكل مباشر في ال imageView. للحصول على الصورة على شكل Bitmap لكي يتم التعامل معها بشكل مستقل نستخدم object من نوع Target كما في الكود التالي:

final Target mTarget = new Target() {
                       @Override
                       public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom loadedFrom) {
                           Log.d("DEBUG", "onBitmapLoaded");
                           mBitmap = bitmap;
                           imageView.setImageBitmap(mBitmap);
                       }

                       @Override
                       public void onBitmapFailed(Drawable drawable) {
                           Log.d("DEBUG", "onBitmapFailed");
                       }

                       @Override
                       public void onPrepareLoad(Drawable drawable) {
                           Log.d("DEBUG", "onPrepareLoad");
                       }
                   };

بعدها نجعل ال mTarget هو الهدف كالتالي:

Picasso.with(getApplicationContext()).load(photoURL).into(mTarget);

بعد حصولك على الصورة يمكنك استخدام الصورة في أي غرض آخر كـ ارسال الصورة أو عرضها في خانة الاشعارات كما هو موضح بالصورة التالية:

photo in notification area

 

لتحميل الكود المصدري من هنا.

 

المصدر:
http://square.github.io/picasso/

1
السابق
إضافة أكثر من لغة لتطبيق أندرويد
التالي
تأثير هرمون الدوبامين في الشبكات الاجتماعيه

اترك تعليقاً

هذا الموقع يستخدم Akismet للحدّ من التعليقات المزعجة والغير مرغوبة. تعرّف على كيفية معالجة بيانات تعليقك.