dependencies {
implementation( " com.vanniktech:android-image-cropper:4.6.0 " )
}
Existem 3 maneiras de usar a biblioteca. Confira o aplicativo de amostra para obter todos os detalhes.
NOTA: desta maneira está depreciada e será removida em versões futuras. O caminho a seguir é escrever sua própria atividade, lidar com todas as coisas Uri
e usar 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.
}
Nota: Este é o único caminho a seguir, adicione CropImageView
à sua própria atividade e faça o que quiser. Confira a amostra para obter mais detalhes.
<!-- 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()
NOTA: Desta forma também é obsoleto e será removido em versões futuras. O caminho a seguir é escrever sua própria atividade, lidar com todas as coisas Uri
e usar CropImageView
.
Se você deseja estender a CropImageActivity
esteja ciente de que você precisará configurar seu CropImageView
CropImageActivity
ao seu 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
após a chamada super.onCreate(savedInstanceState)
override fun onCreate ( savedInstanceState : Bundle ? ) {
super .onCreate(savedInstanceState)
setCropImageView(binding.cropImageView)
}
Ao ligar para a colheita diretamente, a biblioteca solicitará uma caixa de diálogo para o usuário escolher entre a galeria ou a câmera (se você mantiver ambos). Usamos o Android padrão alertdialog para isso. Se você deseja personalizá -lo com o tema do seu aplicativo, você precisa substituir o Method showImageSourceDialog(..)
ao estender a atividade (acima)
override fun showImageSourceDialog ( openSource : ( Source ) -> Unit ) {
super .showImageSourceDialog(openCamera)
}
Comece usando a versão 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
Ao usar os contratos de atividade, consulte o aplicativo de amostra sobre como usar nossos contratos de atividade, pois onActivityResult
foi depreciado.
As versões após 4.3.3 mudaram bastante as APIs, é melhor atualizar para cada versão menor individualmente, remover os usos de API depreciados e continuar atualizando. Então, depois de usar 4.3.3, atualize para 4.4.0, atualize para 4.5.0, 4.6.0, etc.
Bifurcado de Arthurhub originalmente bifurcado de Edmodo/Cropper.
Copyright 2016, Arthur Teplitzki, 2013, Edmodo, Inc.
Licenciado sob a licença Apache, versão 2.0 (a "licença"); Você não pode usar este trabalho, exceto em conformidade com a licença. Você pode obter uma cópia da licença no arquivo de licença ou em:
http://www.apache.org/license/license-2.0
A menos que exigido pela lei aplicável ou acordada por escrito, o software distribuído pela licença é distribuído "como está", sem garantias ou condições de qualquer tipo, expressa ou implícita. Consulte a licença para o idioma específico que rege as permissões e limitações sob a licença.