안드로이드 이미지뷰(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 클래스이다.
댓글 없음:
댓글 쓰기