안드로이드 초보편

터치이벤트(touch event) 중 핀치줌

Rabbit foot 2017. 6. 24. 15:30
반응형
SMALL

▩ 멀티터치 중 핀치즘(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)





이 애플리케이션의 결과를 확실히 알고 싶다면 스마트폰에 연결하여 실행하여서

확인해야한다. 두개의 손각으로 화살표 방향으로 동작하면 작은 화면이 큰 이미지로

변경되는 걸 알수 있습니다.


이번 포스트까지 해서 안드로이드에 나와있는 기본예제였습니다. 

다음 포스트에서는 연습예제를 통해서 터치이벤트 코드를 작성해보겠습니다.

반응형
LIST