1. MainActivity.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| import android.os.Bundle;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
import android.view.ScaleGestureDetector;
class MainActivity : AppCompatActivity() {
// 제스처 이벤트 감지하는 변수
private var mScaleGestureDetector: ScaleGestureDetector? = null
private var scaleFactor = 1.0f
private lateinit var mImageView: ImageView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
mImageView= findViewById(R.id.imageView);
mScaleGestureDetector = ScaleGestureDetector(this, ScaleListener())
}
}
|
2. 이미지 확대/축소
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| // 제스처 이벤트가 발생하면 실행되는 메소드
override fun onTouchEvent(motionEvent: MotionEvent?): Boolean {
// 제스처 이벤트를 처리하는 메소드를 호출
mScaleGestureDetector!!.onTouchEvent(motionEvent)
return true
}
// 제스처 이벤트를 처리하는 클래스
inner class ScaleListener : ScaleGestureDetector.SimpleOnScaleGestureListener() {
override fun onScale(scaleGestureDetector: ScaleGestureDetector): Boolean {
scaleFactor *= scaleGestureDetector.scaleFactor
// 최소 0.5, 최대 2배
scaleFactor = Math.max(0.5f, Math.min(scaleFactor, 2.0f))
// 이미지에 적용
mImageView.scaleX = scaleFactor
mImageView.scaleY = scaleFactor
return true
}
}
|
3. 전체 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
| import android.view.MotionEvent;
import android.os.Bundle;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
import android.view.ScaleGestureDetector;
class MainActivity : AppCompatActivity() {
// 제스처 이벤트 감지하는 변수
private var mScaleGestureDetector: ScaleGestureDetector? = null
private var scaleFactor = 1.0f
private lateinit var mImageView: ImageView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
mImageView= findViewById(R.id.imageView);
mScaleGestureDetector = ScaleGestureDetector(this, ScaleListener())
}
// 제스처 이벤트가 발생하면 실행되는 메소드
override fun onTouchEvent(motionEvent: MotionEvent?): Boolean {
// 제스처 이벤트를 처리하는 메소드를 호출
mScaleGestureDetector!!.onTouchEvent(motionEvent)
return true
}
// 제스처 이벤트를 처리하는 클래스
inner class ScaleListener : ScaleGestureDetector.SimpleOnScaleGestureListener() {
override fun onScale(scaleGestureDetector: ScaleGestureDetector): Boolean {
scaleFactor *= scaleGestureDetector.scaleFactor
// 최소 0.5, 최대 2배
scaleFactor = Math.max(0.5f, Math.min(scaleFactor, 2.0f))
// 이미지에 적용
mImageView.scaleX = scaleFactor
mImageView.scaleY = scaleFactor
return true
}
}
}
|