안드로이드 이미지뷰(ImageView) 확대 축소 방법

안드로이드 이미지뷰(ImageView) 확대 축소 방법


안드로이드 블로그

신규 프로젝트를 하면서 이미지를 확대 축소해야하는 내용이 있었다.

구글링을하다가 좋은 내용이 있어서 복습겸 정리해본다.

class MainActivity : AppCompatActivity() {
private val TAG = MainActivity::class.java.simpleName

private var mScaleGestureDetector : ScaleGestureDetector? = null
private var scaleFactor = 1.0f
private lateinit var mImageView1: ImageView

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)
mImageView1 = findViewById(R.id.imageView1)

mScaleGestureDetector = ScaleGestureDetector(this, ScaleListener())    //1

}

override fun onTouchEvent(event: MotionEvent?): Boolean {
Log.d(TAG, "onTouchEvent")

mScaleGestureDetector!!.onTouchEvent(event)    //2
return true
}


inner class ScaleListener : ScaleGestureDetector.SimpleOnScaleGestureListener() {    //3
override fun onScale(detector: ScaleGestureDetector?): Boolean {
scaleFactor *= mScaleGestureDetector?.scaleFactor ?: 1F

scaleFactor = Math.max(0.5f, Math.min(scaleFactor, 2.0f))

mImageView1.scaleX = scaleFactor
mImageView1.scaleY = scaleFactor

return true
}
}
}

1 => ScaleGestureDetector를 초기화해준다.

2 => onTouchEvent를 override해서 터치이벤트가 발생하면 초기화한 ScaleGestureDetector를 사용해 onTouchEvent 메소드를 실행한다.

3 => 확대 축소 정도를 결정해주는 ScaleListener 클래스이다.