dependencies {
implementation( " com.vanniktech:android-image-cropper:4.6.0 " )
}
هناك 3 طرق لاستخدام المكتبة. تحقق من نموذج التطبيق للحصول على جميع التفاصيل.
ملاحظة: تم إهمال هذه الطريقة وسيتم إزالتها في الإصدارات المستقبلية. المسار إلى الأمام هو كتابة نشاطك الخاص ، والتعامل مع جميع أشياء Uri
بنفسك واستخدام CropImageView
.
class MainActivity : AppCompatActivity () {
private val cropImage = registerForActivityResult( CropImageContract ()) { result ->
if (result.isSuccessful) {
// Use the cropped image URI.
val croppedImageUri = result.uriContent
val croppedImageFilePath = result.getUriFilePath( this ) // optional usage
// Process the cropped image URI as needed.
} else {
// An error occurred.
val exception = result.error
// Handle the error.
}
}
private fun startCrop () {
// Start cropping activity with guidelines.
cropImage.launch(
CropImageContractOptions (
cropImageOptions = CropImageOptions (
guidelines = Guidelines . ON
)
)
)
// Start cropping activity with gallery picker only.
cropImage.launch(
CropImageContractOptions (
pickImageContractOptions = PickImageContractOptions (
includeGallery = true ,
includeCamera = false
)
)
)
// Start cropping activity for a pre-acquired image with custom settings.
cropImage.launch(
CropImageContractOptions (
uri = imageUri,
cropImageOptions = CropImageOptions (
guidelines = Guidelines . ON ,
outputCompressFormat = Bitmap . CompressFormat . PNG
)
)
)
}
// Call the startCrop function when needed.
}
ملاحظة: هذا هو السبيل الوحيد للمضي قدمًا ، وأضف CropImageView
إلى نشاطك الخاص وافعل ما تريده. الخروج العينة لمزيد من التفاصيل.
<!-- Image Cropper fill the remaining available height -->
< com .canhub.cropper.CropImageView
android : id = " @+id/cropImageView "
android : layout_width = " match_parent "
android : layout_height = " 0dp "
android : layout_weight = " 1 "
/>
cropImageView.setImageUriAsync(uri)
// Or prefer using uri for performance and better user experience.
cropImageView.setImageBitmap(bitmap)
// Subscribe to async event using cropImageView.setOnCropImageCompleteListener(listener)
cropImageView.getCroppedImageAsync()
// Or.
val cropped : Bitmap = cropImageView.getCroppedImage()
ملاحظة: يتم إهمال هذه الطريقة أيضًا وسيتم إزالتها في الإصدارات المستقبلية. المسار إلى الأمام هو كتابة نشاطك الخاص ، والتعامل مع جميع أشياء Uri
بنفسك واستخدام CropImageView
.
إذا كنت ترغب في تمديد CropImageActivity
فيرجى أن تكون على علم بأنك ستحتاج إلى إعداد CropImageView
CropImageActivity
إلى AndroidManifest.xml <!-- Theme is optional and only needed if default theme has no action bar. -->
< activity
android : name = " com.canhub.cropper.CropImageActivity "
android : theme = " @style/Base.Theme.AppCompat "
/>
CropImageView
بعد استدعاء super.onCreate(savedInstanceState)
override fun onCreate ( savedInstanceState : Bundle ? ) {
super .onCreate(savedInstanceState)
setCropImageView(binding.cropImageView)
}
عند استدعاء Crop مباشرة ، ستطالب المكتبة بحوار مربع حوار للمستخدم الاختيار بين المعرض أو الكاميرا (إذا احتفظت بالتمكين). نحن نستخدم Android Default Alertdialog لهذا. إذا كنت تريد تخصيصها باستخدام موضوع التطبيق الخاص بك ، فأنت بحاجة إلى تجاوز الطريقة showImageSourceDialog(..)
عند تمديد النشاط (أعلاه)
override fun showImageSourceDialog ( openSource : ( Source ) -> Unit ) {
super .showImageSourceDialog(openCamera)
}
ابدأ باستخدام الإصدار 4.3.3:
dependencies {
implementation( " com.vanniktech:android-image-cropper:4.3.3 " )
}
- import com.theartofdev.edmodo.cropper.CropImage
- import com.theartofdev.edmodo.cropper.CropImageActivity
+ import com.canhub.cropper.CropImage
+ import com.canhub.cropper.CropImageActivity
- <com.theartofdev.edmodo.cropper.CropImageView
+ <com.canhub.cropper.CropImageView
عند استخدام عقود النشاط ، استشر تطبيق العينة حول كيفية استخدام عقود نشاطنا منذ انخفاضها onActivityResult
.
قامت الإصدارات بعد 4.3.3 بتغيير واجهات برمجة التطبيقات قليلاً ، فمن الأفضل الترقية إلى كل إصدار ثانوي بشكل فردي ، وإزالة استخدامات واجهة برمجة التطبيقات المنهكة ومواصلة الترقية. لذلك بعد استخدام 4.3.3 ، ترقية إلى 4.4.0 ، الترقية إلى 4.5.0 ، 4.6.0 ، إلخ.
متشوق من Arthurhub في الأصل من إدمودو/كروبر.
حقوق الطبع والنشر 2016 ، Arthur Teplitzki ، 2013 ، Edmodo ، Inc.
مرخصة بموجب ترخيص Apache ، الإصدار 2.0 ("الترخيص") ؛ لا يجوز لك استخدام هذا العمل إلا في الامتثال للترخيص. يمكنك الحصول على نسخة من الترخيص في ملف الترخيص ، أو في:
http://www.apache.org/licenses/license-2.0
ما لم يكن مطلوبًا بموجب القانون المعمول به أو الموافقة على الكتابة ، يتم توزيع البرامج الموزعة بموجب الترخيص على أساس "كما هي" ، دون ضمانات أو شروط من أي نوع ، إما صريحة أو ضمنية. راجع ترخيص الأذونات والقيود التي تحكم اللغة المحددة بموجب الترخيص.