터치이벤트(touch event) 중 핀치줌
▩ 멀티터치 중 핀치즘(pinch zoom) ▩
멀티터치 중에서도 핀치즘은 가장 대표적인 터치이벤트라고 할수 있습니다. 두 개의 손가락으로 확대하거나 축소하는 코드입니다.
멀티터치 핀치즘에서 대해서 간단한 예제를 통해서 알아보도록 하겠습니다.
(1) ImageScale 프로젝트 파일을 생성합니다. (핀치즘 pinch zoom)
(2) 2-1) ImageScale.java는 자동생성됩니다.
2-2) MyImagView. java 파일을 만듭니다.
MyImageView.java 코드를 작성해 보도록 하겠습니다.(핀치즘pinch zoom)
public class MyImageView extends View{
private Drawable image;
private ScaleGestureDetector gestureDetector;
private float scale = 1.0f;
public MyImageView(Context context) {
super(context);
image = context.getResources().getDrawable(R.drawble.smile);
setFocusable(true);
image.setBounds(0,0,image.getIntrinsicWidth(),
image.getIntrinsicHeight());
gestureDetector = new ScaleGestureDetector(context, new ScaleListener()); |
▶ 제츠서 인식기 객체를 생성합니다.
}
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
canvas.save();
canvas.scale(scale, scale); |
▶ 캔버스에 신축 연산을 적용한다.
image.draw(canvas);
canvas.restore();
public boolean onTouchEvent(MotionEvent event){
gestureDetector.onTouchEvent(evnet); |
▶ 제스처 인식기 터치 이벤트 처리 메소드를 호출합니다.
invalidate();
return true;
}
private class ScaleListener extends
ScaleGestureDetector.SimpleOnScaleGestureListener{
public boolean onScale(ScaleGestureDetector detector){
scale *= detector.getScaleFactor();
if(scale < 0.1f)
scale = 01.f;
if(scale > 10.0f)
scale = 10.0f;
신축 연사이 감지가 되면 호출이 됩니다.
invalidate();
return true;
}
}
}
3) 실행결과입니다. (핀치즘 pinch zoom)
이 애플리케이션의 결과를 확실히 알고 싶다면 스마트폰에 연결하여 실행하여서
확인해야한다. 두개의 손각으로 화살표 방향으로 동작하면 작은 화면이 큰 이미지로
변경되는 걸 알수 있습니다.
이번 포스트까지 해서 안드로이드에 나와있는 기본예제였습니다.
다음 포스트에서는 연습예제를 통해서 터치이벤트 코드를 작성해보겠습니다.