@@ -6,7 +6,6 @@ import android.animation.ValueAnimator
6
6
import android.content.Intent
7
7
import android.graphics.BitmapFactory
8
8
import android.graphics.Matrix
9
- import android.graphics.drawable.BitmapDrawable
10
9
import android.media.ExifInterface
11
10
import android.os.Bundle
12
11
import android.util.Log
@@ -18,10 +17,7 @@ import androidx.core.graphics.rotationMatrix
18
17
import androidx.core.graphics.scaleMatrix
19
18
import androidx.core.net.toUri
20
19
import androidx.lifecycle.ViewModelProvider
21
- import fr.free.nrw.commons.R
22
- import kotlinx.android.synthetic.main.activity_edit.btn_save
23
- import kotlinx.android.synthetic.main.activity_edit.iv
24
- import kotlinx.android.synthetic.main.activity_edit.rotate_btn
20
+ import fr.free.nrw.commons.databinding.ActivityEditBinding
25
21
import timber.log.Timber
26
22
import java.io.File
27
23
@@ -37,10 +33,12 @@ class EditActivity : AppCompatActivity() {
37
33
private var imageUri = " "
38
34
private lateinit var vm: EditViewModel
39
35
private val sourceExifAttributeList = mutableListOf<Pair <String , String ?>>()
36
+ private lateinit var binding: ActivityEditBinding
40
37
41
38
override fun onCreate (savedInstanceState : Bundle ? ) {
42
39
super .onCreate(savedInstanceState)
43
- setContentView(R .layout.activity_edit)
40
+ binding = ActivityEditBinding .inflate(layoutInflater)
41
+ setContentView(binding.root)
44
42
supportActionBar?.title = " "
45
43
val intent = intent
46
44
imageUri = intent.getStringExtra(" image" ) ? : " "
@@ -87,9 +85,9 @@ class EditActivity : AppCompatActivity() {
87
85
* for the "Rotate" and "Save" buttons.
88
86
*/
89
87
private fun init () {
90
- iv.adjustViewBounds = true
91
- iv.scaleType = ImageView .ScaleType .MATRIX
92
- iv.post(Runnable {
88
+ binding. iv.adjustViewBounds = true
89
+ binding. iv.scaleType = ImageView .ScaleType .MATRIX
90
+ binding. iv.post(Runnable {
93
91
val options = BitmapFactory .Options ()
94
92
options.inJustDecodeBounds = true
95
93
BitmapFactory .decodeFile(imageUri, options)
@@ -104,26 +102,26 @@ class EditActivity : AppCompatActivity() {
104
102
options.inSampleSize = scaleFactor
105
103
options.inJustDecodeBounds = false
106
104
val scaledBitmap = BitmapFactory .decodeFile(imageUri, options)
107
- iv.setImageBitmap(scaledBitmap)
105
+ binding. iv.setImageBitmap(scaledBitmap)
108
106
// Update the ImageView with the scaled bitmap
109
- val scale = iv.measuredWidth.toFloat() / scaledBitmap.width.toFloat()
110
- iv.layoutParams.height = (scale * scaledBitmap.height).toInt()
111
- iv.imageMatrix = scaleMatrix(scale, scale)
107
+ val scale = binding. iv.measuredWidth.toFloat() / scaledBitmap.width.toFloat()
108
+ binding. iv.layoutParams.height = (scale * scaledBitmap.height).toInt()
109
+ binding. iv.imageMatrix = scaleMatrix(scale, scale)
112
110
} else {
113
111
114
112
options.inJustDecodeBounds = false
115
113
val bitmap = BitmapFactory .decodeFile(imageUri, options)
116
- iv.setImageBitmap(bitmap)
114
+ binding. iv.setImageBitmap(bitmap)
117
115
118
- val scale = iv.measuredWidth.toFloat() / bitmapWidth.toFloat()
119
- iv.layoutParams.height = (scale * bitmapHeight).toInt()
120
- iv.imageMatrix = scaleMatrix(scale, scale)
116
+ val scale = binding. iv.measuredWidth.toFloat() / bitmapWidth.toFloat()
117
+ binding. iv.layoutParams.height = (scale * bitmapHeight).toInt()
118
+ binding. iv.imageMatrix = scaleMatrix(scale, scale)
121
119
}
122
120
})
123
- rotate_btn .setOnClickListener {
121
+ binding.rotateBtn .setOnClickListener {
124
122
animateImageHeight()
125
123
}
126
- btn_save .setOnClickListener {
124
+ binding.btnSave .setOnClickListener {
127
125
getRotatedImage()
128
126
}
129
127
}
@@ -140,10 +138,10 @@ class EditActivity : AppCompatActivity() {
140
138
* further rotation actions.
141
139
*/
142
140
private fun animateImageHeight () {
143
- val drawableWidth: Float = iv.getDrawable().getIntrinsicWidth().toFloat()
144
- val drawableHeight: Float = iv.getDrawable().getIntrinsicHeight().toFloat()
145
- val viewWidth: Float = iv.getMeasuredWidth().toFloat()
146
- val viewHeight: Float = iv.getMeasuredHeight().toFloat()
141
+ val drawableWidth: Float = binding. iv.getDrawable().getIntrinsicWidth().toFloat()
142
+ val drawableHeight: Float = binding. iv.getDrawable().getIntrinsicHeight().toFloat()
143
+ val viewWidth: Float = binding. iv.getMeasuredWidth().toFloat()
144
+ val viewHeight: Float = binding. iv.getMeasuredHeight().toFloat()
147
145
val rotation = imageRotation % 360
148
146
val newRotation = rotation + 90
149
147
@@ -173,12 +171,12 @@ class EditActivity : AppCompatActivity() {
173
171
174
172
animator.addListener(object : AnimatorListener {
175
173
override fun onAnimationStart (animation : Animator ) {
176
- rotate_btn .setEnabled(false )
174
+ binding.rotateBtn .setEnabled(false )
177
175
}
178
176
179
177
override fun onAnimationEnd (animation : Animator ) {
180
178
imageRotation = newRotation % 360
181
- rotate_btn .setEnabled(true )
179
+ binding.rotateBtn .setEnabled(true )
182
180
}
183
181
184
182
override fun onAnimationCancel (animation : Animator ) {
@@ -196,7 +194,7 @@ class EditActivity : AppCompatActivity() {
196
194
(complementaryAnimVal * viewHeight + animVal * newViewHeight).toInt()
197
195
val animatedScale = complementaryAnimVal * imageScale + animVal * newImageScale
198
196
val animatedRotation = complementaryAnimVal * rotation + animVal * newRotation
199
- iv.getLayoutParams().height = animatedHeight
197
+ binding. iv.getLayoutParams().height = animatedHeight
200
198
val matrix: Matrix = rotationMatrix(
201
199
animatedRotation,
202
200
drawableWidth / 2 ,
@@ -209,11 +207,11 @@ class EditActivity : AppCompatActivity() {
209
207
drawableHeight / 2
210
208
)
211
209
matrix.postTranslate(
212
- - (drawableWidth - iv.getMeasuredWidth()) / 2 ,
213
- - (drawableHeight - iv.getMeasuredHeight()) / 2
210
+ - (drawableWidth - binding. iv.getMeasuredWidth()) / 2 ,
211
+ - (drawableHeight - binding. iv.getMeasuredHeight()) / 2
214
212
)
215
- iv.setImageMatrix(matrix)
216
- iv.requestLayout()
213
+ binding. iv.setImageMatrix(matrix)
214
+ binding. iv.requestLayout()
217
215
}
218
216
219
217
animator.start()
0 commit comments