mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-29 05:43:55 +01:00
Migrate from Kotlin synthetics to Jetpack view binding (#5546)
This commit is contained in:
parent
b18117bc07
commit
1cbce77d5f
13 changed files with 73 additions and 68 deletions
|
|
@ -6,7 +6,6 @@ import android.animation.ValueAnimator
|
|||
import android.content.Intent
|
||||
import android.graphics.BitmapFactory
|
||||
import android.graphics.Matrix
|
||||
import android.graphics.drawable.BitmapDrawable
|
||||
import android.media.ExifInterface
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
|
|
@ -18,10 +17,7 @@ import androidx.core.graphics.rotationMatrix
|
|||
import androidx.core.graphics.scaleMatrix
|
||||
import androidx.core.net.toUri
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import fr.free.nrw.commons.R
|
||||
import kotlinx.android.synthetic.main.activity_edit.btn_save
|
||||
import kotlinx.android.synthetic.main.activity_edit.iv
|
||||
import kotlinx.android.synthetic.main.activity_edit.rotate_btn
|
||||
import fr.free.nrw.commons.databinding.ActivityEditBinding
|
||||
import timber.log.Timber
|
||||
import java.io.File
|
||||
|
||||
|
|
@ -37,10 +33,12 @@ class EditActivity : AppCompatActivity() {
|
|||
private var imageUri = ""
|
||||
private lateinit var vm: EditViewModel
|
||||
private val sourceExifAttributeList = mutableListOf<Pair<String, String?>>()
|
||||
private lateinit var binding: ActivityEditBinding
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_edit)
|
||||
binding = ActivityEditBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
supportActionBar?.title = ""
|
||||
val intent = intent
|
||||
imageUri = intent.getStringExtra("image") ?: ""
|
||||
|
|
@ -87,9 +85,9 @@ class EditActivity : AppCompatActivity() {
|
|||
* for the "Rotate" and "Save" buttons.
|
||||
*/
|
||||
private fun init() {
|
||||
iv.adjustViewBounds = true
|
||||
iv.scaleType = ImageView.ScaleType.MATRIX
|
||||
iv.post(Runnable {
|
||||
binding.iv.adjustViewBounds = true
|
||||
binding.iv.scaleType = ImageView.ScaleType.MATRIX
|
||||
binding.iv.post(Runnable {
|
||||
val options = BitmapFactory.Options()
|
||||
options.inJustDecodeBounds = true
|
||||
BitmapFactory.decodeFile(imageUri, options)
|
||||
|
|
@ -104,26 +102,26 @@ class EditActivity : AppCompatActivity() {
|
|||
options.inSampleSize = scaleFactor
|
||||
options.inJustDecodeBounds = false
|
||||
val scaledBitmap = BitmapFactory.decodeFile(imageUri, options)
|
||||
iv.setImageBitmap(scaledBitmap)
|
||||
binding.iv.setImageBitmap(scaledBitmap)
|
||||
// Update the ImageView with the scaled bitmap
|
||||
val scale = iv.measuredWidth.toFloat() / scaledBitmap.width.toFloat()
|
||||
iv.layoutParams.height = (scale * scaledBitmap.height).toInt()
|
||||
iv.imageMatrix = scaleMatrix(scale, scale)
|
||||
val scale = binding.iv.measuredWidth.toFloat() / scaledBitmap.width.toFloat()
|
||||
binding.iv.layoutParams.height = (scale * scaledBitmap.height).toInt()
|
||||
binding.iv.imageMatrix = scaleMatrix(scale, scale)
|
||||
} else {
|
||||
|
||||
options.inJustDecodeBounds = false
|
||||
val bitmap = BitmapFactory.decodeFile(imageUri, options)
|
||||
iv.setImageBitmap(bitmap)
|
||||
binding.iv.setImageBitmap(bitmap)
|
||||
|
||||
val scale = iv.measuredWidth.toFloat() / bitmapWidth.toFloat()
|
||||
iv.layoutParams.height = (scale * bitmapHeight).toInt()
|
||||
iv.imageMatrix = scaleMatrix(scale, scale)
|
||||
val scale = binding.iv.measuredWidth.toFloat() / bitmapWidth.toFloat()
|
||||
binding.iv.layoutParams.height = (scale * bitmapHeight).toInt()
|
||||
binding.iv.imageMatrix = scaleMatrix(scale, scale)
|
||||
}
|
||||
})
|
||||
rotate_btn.setOnClickListener {
|
||||
binding.rotateBtn.setOnClickListener {
|
||||
animateImageHeight()
|
||||
}
|
||||
btn_save.setOnClickListener {
|
||||
binding.btnSave.setOnClickListener {
|
||||
getRotatedImage()
|
||||
}
|
||||
}
|
||||
|
|
@ -140,10 +138,10 @@ class EditActivity : AppCompatActivity() {
|
|||
* further rotation actions.
|
||||
*/
|
||||
private fun animateImageHeight() {
|
||||
val drawableWidth: Float = iv.getDrawable().getIntrinsicWidth().toFloat()
|
||||
val drawableHeight: Float = iv.getDrawable().getIntrinsicHeight().toFloat()
|
||||
val viewWidth: Float = iv.getMeasuredWidth().toFloat()
|
||||
val viewHeight: Float = iv.getMeasuredHeight().toFloat()
|
||||
val drawableWidth: Float = binding.iv.getDrawable().getIntrinsicWidth().toFloat()
|
||||
val drawableHeight: Float = binding.iv.getDrawable().getIntrinsicHeight().toFloat()
|
||||
val viewWidth: Float = binding.iv.getMeasuredWidth().toFloat()
|
||||
val viewHeight: Float = binding.iv.getMeasuredHeight().toFloat()
|
||||
val rotation = imageRotation % 360
|
||||
val newRotation = rotation + 90
|
||||
|
||||
|
|
@ -173,12 +171,12 @@ class EditActivity : AppCompatActivity() {
|
|||
|
||||
animator.addListener(object : AnimatorListener {
|
||||
override fun onAnimationStart(animation: Animator) {
|
||||
rotate_btn.setEnabled(false)
|
||||
binding.rotateBtn.setEnabled(false)
|
||||
}
|
||||
|
||||
override fun onAnimationEnd(animation: Animator) {
|
||||
imageRotation = newRotation % 360
|
||||
rotate_btn.setEnabled(true)
|
||||
binding.rotateBtn.setEnabled(true)
|
||||
}
|
||||
|
||||
override fun onAnimationCancel(animation: Animator) {
|
||||
|
|
@ -196,7 +194,7 @@ class EditActivity : AppCompatActivity() {
|
|||
(complementaryAnimVal * viewHeight + animVal * newViewHeight).toInt()
|
||||
val animatedScale = complementaryAnimVal * imageScale + animVal * newImageScale
|
||||
val animatedRotation = complementaryAnimVal * rotation + animVal * newRotation
|
||||
iv.getLayoutParams().height = animatedHeight
|
||||
binding.iv.getLayoutParams().height = animatedHeight
|
||||
val matrix: Matrix = rotationMatrix(
|
||||
animatedRotation,
|
||||
drawableWidth / 2,
|
||||
|
|
@ -209,11 +207,11 @@ class EditActivity : AppCompatActivity() {
|
|||
drawableHeight / 2
|
||||
)
|
||||
matrix.postTranslate(
|
||||
-(drawableWidth - iv.getMeasuredWidth()) / 2,
|
||||
-(drawableHeight - iv.getMeasuredHeight()) / 2
|
||||
-(drawableWidth - binding.iv.getMeasuredWidth()) / 2,
|
||||
-(drawableHeight - binding.iv.getMeasuredHeight()) / 2
|
||||
)
|
||||
iv.setImageMatrix(matrix)
|
||||
iv.requestLayout()
|
||||
binding.iv.setImageMatrix(matrix)
|
||||
binding.iv.requestLayout()
|
||||
}
|
||||
|
||||
animator.start()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue