كيفية قص وتحديد ابعاد الصورة داخل تطبيقك في الاندرويد ستوديو
بسم الله الرحمن الرحيم ، السلام عليكم ورحمة الله وبركاتة لكل المهتمين في شروحات الاندرويد في هذا المقال نقدم لكم كيف يمكنك اخذ صورة من الاستوديو الخاص بك وقصها ومن ثم بتخزينها سواء في التطبيق او في firebase .
الخطوة الاولى : اولا قم بإضافة المكتبة التالية داخل build.gradle
dependencies {
api 'com.theartofdev.edmodo:android-image-cropper:2.8.+'
}
الخطوة الثانية : والان توجة الى ملف manifest لاضافة الاكواد التالية اسفل اسم package بالاعلى
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
اذا كنت تستخدم اصدار جديد من برنامج ألاندرويد ستوديو ستجد انة ظهر لك على السطر الثاني من الكود لون اصفر محيط به لذلك قم بتحذفة وتوجة اسفل application واضف الكود التالي
android:requestLegacyExternalStorage="true"
لماذا قمنا بهذة العملية ؟ لانة بكل بساطة اذا وضعت الماوس على السطر الملون بالاصفر سيخبرك بان هذة الاضافة تعمل على اجهزة الاندرويد الى الاصدار التاسع ولكن اذا كان اصدار الهاتف اندرويد 10 فما فوق لن تعمل معه حيث ظهر تغيير في الاصدار العاشر متعلق بالامان بشكل اكبر قليلا لذلك قمنا بعمل هذة الحركة
الخطوة الثالثة : عمل permission للتخزين
الان فوق </application> واسفل </activity> اضف الكود التالي وبعدها اغلق manifest
<activity
android:name="com.theartofdev.edmodo.cropper.CropImageActivity"
android:theme="@style/Base.Theme.AppCompat" />
مزيد من الاكواد
- حل مشكلة مساحة الاندرويد ستوديو ونقل ملف SDK بدون مشاكل
- شرح كيفية تكبير وتصغير الكود داخل الاندرويد ستوديو
- شرح كيفية استخدام Data Binding داخل Recyclerview
- كيفية إضافة صفحة البداية ( صفحة انتظار ) - splash screen
الخطوة الرابعة : اضافة المكتبات اللازمه
الان توجة الى ملف Proguard والموجود اسفل build.gradle وسوف تجد الاكواد هناك باللون الرصاصي توجة الى اخر كود واضف اسفل الامر التالي
-keep class androidx.appcompat.widget.* { *; }
اختر ما يناسبك من الاكواد التاليه الى صفحة كلاس الكود الذي تعمل عليه java.class
// start picker to get image for cropping and then use the image in cropping activity
CropImage.activity()
.setGuidelines(CropImageView.Guidelines.ON)
.start(this);
// start cropping activity for pre-acquired image saved on the device
CropImage.activity(imageUri)
.start(this);
// for fragment (DO NOT use `getActivity()`)
CropImage.activity()
.start(getContext(), this);
اذا كنت تستخدم fragment استخدم الكود الاخير واذا كنت تستخدم empty activity استخدام الكود الاول
يفضل وضع الكود الذي اخترتة داخل setOnClickListener بحيث عندما ينقر المستخدم على الزر يفتح له واجهة تسمح له بإختيار مكان الصورة
الخطوة الخامسة : عمل methode لقص الصور
وفي النهاية قم بعمل Methode اخر شيئ خارج onCreat بإسم onActivityResult وضع بداخلها الكود التالي
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if (resultCode == RESULT_OK) {
imageURI = result.getUri();
binding.profileImage.setImageURI(imageURI);
} else if (resultCode ==
CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
Exception error = result.getError();
Toast.makeText(this, error.getLocalizedMessage(),
Toast.LENGTH_SHORT).show();
}
}
قم بتعريف imageURI Uri بالاعلى واعطاء قيمها لها وهي null لكي تتمكن من استخدامها في اي مكان
ستشاهد في السطر رقم 5 انة يأتي بالصورة من xml ويحظر مسارها uri ويتم تخزينة داخل imageURI والتي كانت قيمتها بالاعلى null عندما يتم تخزينة الصورة بداخلها ستتغير القيمة واسفل if اذا حدث خطأ سيخبر المستخدم بالخطأ الذي وقيه فية .
شاهد ايضا
- شرح كيفية عمل Progress Dialog داخل تطبيقك
- اضافة زر للعودة للصفحة السابقه وتعديل اسم toolbar
- حل مشاكل المحاكي AVD داخل الاندرويد ستوديو
- تعريف وشرح Data Binding وما اهميتها في تطوير تطبيقات الاندرويد ستوديو