فتح معرض الصور في الأندرويد || إصلاح الأخطاء وبعض الاضافات

السلام عليكم ورحمة الله وبركاته …..

لقد قمت بكتابة درس عن استخدام معرض الصور في الاندرويد لكي يأخذ
المستخدم صورة منه وبعدها يستخدمها في التطبيق (كصورة شخصية أو غير ذلك… )

هذا رابط الدرس :
http://andrody.com/2015/10/upload_photo_gallery_to_application_android_programmatically/

طبعا قبل قراءة هذا الدرس عليك مراجعة الدرس الماضي لاننا سنقوم بإصلاح الأخطاء الان والتعديل على الكود قليلا

أعتقد أن البعض قد واجه بعض المشاكل في استخدام الكود الذي وضعته في الدرس الماضي .. عند تشغيل البرنامج سوف يظهر خطأ عند اختيار الصورة من المعرض الذي تم فتحه
مما سيسبب توقف التطبيق والسبب في ذلك هو أنك لم تكتب الصلاحيات في ملف المينفيست ..

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

الآن , اذهب إلى ملف المينفيست وقم بإضافة هذا السطر :

هناك خطأ آخر بالكود قد يظهر عند استخدام ال InputStream وهو :Unhandled Exception : java.io.FileNotFoundException
والسبب انه قد يظهر هذا الخطأ عند اختيار صورة غير موجودة أو تم حذفها
لذلك سنقوم باستخدام try و catch لمعالجة هذا ال exception (الكاتش تقوم فقط بمعالجة هذا الخطأ حين ظهوره
لكن في الحالات العادية هو لن يظهر)
الآن سوف يصبح الكود داخل دالة onActivityResult

 

الآن قمنا بمعالجة الخطأ … أي ان ظهر هذا ال exception  سوف ينفذ الكود بداخل الكاتش  ..

الآن فلتجرب أن تقوم بتشغيل التطبيق على المحاكي أو على هاتفك واضغط على الزر .. سيفتح الاستديو ثم اختر الصورة التي تريدها   بعدها سيعود لتطبيقك وستجد الصورة  في مكان الImageView وهذه هي فائدة دالة onActivityResult

..وإذا واجهت أي خطأ آخر .. قم بالتعليق أسفل المدونة وأخبرنا عن الخطأ الذي واجهك

بعد أن تختر الصورة قد تظهر الصورة غير متناسقة أو كبيرة/صغيرة عند عرضها في ImageView ولذلك علينا تغيير حجم الصورة لتصبح متناسقة مع الImageView

في البداية … علينا تغيير عرض و ارتفاع الصورة ونجعلهما مثل العرض والطول للImageView

اذهب إلى ملف اللاياوت  الخاص بالاكتيفيتي الرئيسية xml   وقم بتغيير حجم الصورة عن طريق خاصية layout_width و layout_height   وقم بجعلهما 100dp :

layout_width = “100dp”

layout_height = “100dp “

والآن بما أن ارتفاع الصورة وعرضها أصبح يساوي 100 ,, علينا تغيير حجم الصورة التي اختارها المستخدم من المعرض إلى نفس حجم ال ImageView

في داخل دالة onActivityResult  أكمل الكود بإضافة التالي :

 

ما قمنا بفعله هو تغيير طول وعرض الصورة باستخدام دالة createScaledBitmap في الباراميتر الأول : البيتماب التي تريد تغيير حجمها , الثاني : العرض الذي تريده و الثالث : الارتفاع الذي تريده,,  والأخير نقوم بوضع true  كقيمة افتراضية

و الآن سيصبح حجم الصورة على حجم ال ImageView

ملاحظة : اذا قمت بتغيير ارتفاع أو عرض ال ImageViewمن ال xml  عليك تغيير قيمة ال 100 هنا أيضا 

الآن سنقوم بتدوير الصورة :rotate

أحيانا عندما تضع الصورة في ImageView  قد يتغير اتجاهها أيضا  كأن تصبح مائلة إلى اليمين أو اليسار قليلا  لذلك سنقوم بتدويرها لتصبح مستقيمة

قم بإضافة هذا الكود :

 

الماتركس هو مثل اعدادات للصورة .. بدالة postRotate قمنا بتغيير درجة الانحناء إلى 0 وبعدها بدالة createBitmap  قمنا باستخدام الارتفاع والعرض نفسه  واعطائها اعدادات الماتركس

الآن قم بتشغيل البرنامج .. سوف ترى الصورة مستقيمة بدون ميلان أو انحناء …. و بامكانك تغيير درجة النحناء إلى 45 مثلا لتجعل الصورة مائلة قليلا

هذه أحد طرق تغيير حجم الصورة وجعلها مائلة أيضا … من يواجه أي مشلكة في الكود أتمنى أن يخبرنا في التعليقات

انتظروا المزيد من الدروس قريبا .. والسلام عليكم

عن Yaser Alosh

ياسر , من سوريا , أحب أن استخدم الحاسوب وأتعلم كل ما يتعلق به ,, بدأت بتعلم البرمجة , ” كهواية ” منذ بضعة أشهر , أعجبني مجال الأندرويد لأنه بسيط وسهل التعلم ثم بدأت بتعلم برمجة تطبيقاته , ولقد ساعدني موقع “اندرودي عربي ” كثير في ذلك

شاهد أيضاً

تحميل ملف من السيرفر لجهازك الأندرويد برمجياً

بسم الله الرحمن الرحيم في هذه التدوينة إن شاء الله سوف نتعلم كيفية تحميل ملف …

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

13 − 5 =