dependencies {
implementation( " com.vanniktech:android-image-cropper:4.6.0 " )
}
Ada 3 cara menggunakan perpustakaan. Lihatlah aplikasi sampel untuk semua detail.
Catatan: Cara ini sudah usang dan akan dihapus di versi mendatang. Jalannya adalah untuk menulis aktivitas Anda sendiri, menangani semua barang Uri
sendiri dan menggunakan 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.
}
Catatan: Ini adalah satu -satunya jalan ke depan, tambahkan CropImageView
ke dalam aktivitas Anda sendiri dan lakukan apa pun yang Anda inginkan. Periksa sampel untuk lebih jelasnya.
<!-- 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()
Catatan: Cara ini juga sudah usang dan akan dihapus di versi mendatang. Jalannya adalah untuk menulis aktivitas Anda sendiri, menangani semua barang Uri
sendiri dan menggunakan CropImageView
.
Jika Anda ingin memperpanjang CropImageActivity
harap diperhatikan, Anda harus mengatur CropImageView
Anda
CropImageActivity
ke AndroidManifest.xml Anda <!-- 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
Anda Setelah Panggilan super.onCreate(savedInstanceState)
override fun onCreate ( savedInstanceState : Bundle ? ) {
super .onCreate(savedInstanceState)
setCropImageView(binding.cropImageView)
}
Saat memanggil tanaman secara langsung, perpustakaan akan meminta dialog untuk pengguna memilih antara galeri atau kamera (jika Anda tetap mengaktifkan keduanya). Kami menggunakan Android Default AlertDialog untuk ini. Jika Anda ingin menyesuaikannya dengan tema aplikasi Anda, Anda perlu mengganti metode showImageSourceDialog(..)
saat memperluas aktivitas (di atas)
override fun showImageSourceDialog ( openSource : ( Source ) -> Unit ) {
super .showImageSourceDialog(openCamera)
}
Mulailah dengan menggunakan versi 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
Saat menggunakan kontrak aktivitas, konsultasikan dengan aplikasi sampel tentang cara menggunakan kontrak aktivitas kami karena onActivityResult
menjadi sudah usang.
Versi Setelah 4.3.3 telah mengubah API sedikit, yang terbaik adalah meningkatkan ke setiap versi kecil secara individual, menghapus penggunaan API yang sudah usang dan terus meningkatkan. Jadi setelah menggunakan 4.3.3, tingkatkan ke 4.4.0, tingkatkan ke 4.5.0, 4.6.0, dll.
Forked dari Arthurhub awalnya bercabang dari Edmodo/Cropper.
Hak Cipta 2016, Arthur Teplitzki, 2013, Edmodo, Inc.
Berlisensi di bawah lisensi Apache, versi 2.0 ("lisensi"); Anda tidak boleh menggunakan pekerjaan ini kecuali sesuai dengan lisensi. Anda dapat memperoleh salinan lisensi di file lisensi, atau di:
http://www.apache.org/licenses/license-2.0
Kecuali diharuskan oleh hukum yang berlaku atau disepakati secara tertulis, perangkat lunak yang didistribusikan di bawah lisensi didistribusikan berdasarkan "sebagaimana adanya", tanpa jaminan atau ketentuan dalam bentuk apa pun, baik tersurat maupun tersirat. Lihat lisensi untuk bahasa spesifik yang mengatur izin dan batasan di bawah lisensi.