Пройдя некоторое время, я смог успешно обнаружить и использовать «масштабный жест». Вот код Kotlin:
// ... snipped ...
var scaleFactor = 1f
val imageEditor = binding.imageEditor
val scaleGestureDetector = ScaleGestureDetector(
this,
object : ScaleGestureDetector.SimpleOnScaleGestureListener() {
override fun onScale(detector: ScaleGestureDetector): Boolean {
scaleFactor *= detector.scaleFactor
scaleFactor = scaleFactor.coerceIn(0.1f, 5.0f)
imageEditor.scaleX = scaleFactor
imageEditor.scaleY = scaleFactor
return super.onScale(detector)
}
}
)
imageEditor.setOnTouchListener { _, event ->
scaleGestureDetector.onTouchEvent(event)
}
// ... snipped ...
Но мне интересно, есть ли лучший способ написать предыдущий код. Мне кажется слишком многословным.
Вот целые файлы, если вам интересно:
https://gist.github.com/gchumillas/382b70c1983c15eb55a8e8358553aa66