Á¦½ºÃÄ

À̺¥Æ®ÀÇ Á¶ÇÕÀ¸·Î »ç¿ëÀÚ°¡ ¾î¶² µ¿ÀÛÀ» Çß´ÂÁö °¨Áö ÇÒ¼ö ÀÖ´Ù.
ÀÌ°ÍÀ» Á¦½ºÃĶó ºÎ¸¥´Ù.
¾Èµå·ÎÀ̵忡¼­´Â GestureDetector·Î Á¦½ºÃĸ¦ ó¸® ÇÑ´Ù.

public class HelloView extends View implements GestureDetector.OnGestureListener

View Ŭ·¡½º¿¡ Á¦½ºÃÄ À̺¥Æ® Çڵ鷯¸¦ Ãß°¡ ÇÒ·Á¸é GestureDetector.OnGestureListener ÀÎÅÍÆäÀ̽º¸¦ »ó¼Ó ÇÑ´Ù.

À̺¥Æ®¸¦ ±¸ÇöÇϱâ Àü¿¡ GestureDetector¸¦ »ý¼ºÇÑ´Ù.

private GestureDetector gesdet;
gesdet = new GestureDetector( context, this);

GestureDetector¿¡ ÅÍÄ¡ À̺¥Æ®¸¦ ³Ñ°ÜÁÖ¸é ÅÍÄ¡ À̺¥Æ®¸¦ ºÐ¼®ÇÏ¿© Á¦½ºÃÄ À̺¥Æ®·Î ¸¸µç´Ù.

    @Override
    public boolean onTouchEvent( MotionEvent event)
    {
        gesdet.onTouchEvent(event);
        return true;
    }

´ÙÀ½ÀÇ À̺¥Æ®¸¦ ±¸Çö  ÇÑ´Ù.
¹Ýȯ°ªÀº º¸Åë false·Î ÁöÁ¤ÇÑ´Ù. À̺¥Æ®¸¦ ±¸ÇöÇÑ °æ¿ì¿¡¼­´Â true¸¦ ¹ÝȯÇÑ´Ù.

±æ°Ô ´©¸£±â : onLongPress
½ºÅ©·Ñ : onScroll
Çø¯ : onFling
´©¸¥ ä ½ºÅ©·Ñ µîÀ» ÇÏÁö ¾ÊÀ½ : onShowPress
´©¸¥´Ù :  onDown
¶¾´Ù :  onSingleTapUp



package com.example.helloworld;

import java.util.ArrayList;

import android.view.MotionEvent;
import android.view.View;

//Äڵ带 À§ÇØ Ãß°¡
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
//import android.view.View;
import android.graphics.PointF;
import android.view.GestureDetector;
import android.view.MotionEvent;

public class HelloView extends View
    implements GestureDetector.OnGestureListener
{
    private Paint paint = new Paint(); //½ºÅ¸ÀÏ, »öÀ» À§Çؼ­
    private GestureDetector gesdet;
    private ArrayList<String> status = new ArrayList<String>();
   
    public HelloView( Context context)
    {
        super( context);
        setBackgroundColor( Color.WHITE);
        gesdet = new GestureDetector( context, this);
        setFocusable(true);  //Æ÷Ä¿½º°¡ ÀÖ´Â À̺¥Æ®¸¦ ¹ÞÀ» °ÍÀÎÁö, ¹ÞÁö ¾ÊÀ» °ÍÀÎÁö¸¦ ÁöÁ¤
    }
   
    @Override
    public void onDraw(Canvas canvas)
    {
        paint.setAntiAlias(true); //¼±ÀÌ ºÎµå·´°Ô ±×·ÁÁø´Ù
        paint.setTextSize( 20); //¹®ÀÚÀÇ Å©±â¸¦ ¹Ù²Û´Ù
       
        for( int i = 0; i < Math.min(10,  status.size()); i++)
        {
            canvas.drawText( status.get(i), 0, 40 + i * 20, paint);
        }
    }
   
    @Override
    public boolean onTouchEvent( MotionEvent event)
    {
        gesdet.onTouchEvent(event);
        return true;
    }
   
   
    public void onLongPress( MotionEvent event)
    {
        status.add( 0, "LongPress");
        invalidate();
    }
   
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float dx, float dy)
    {
        status.add(0, "onScroll dx=" + dx + " dy=" + dy);
        invalidate();
        return false;
    }
   
    public boolean onFling( MotionEvent e1, MotionEvent e2, float vx, float vy)
    {
        status.add(0, "onFling vx=" + vx + "vy=" + vy);
        invalidate();
        return false;
    }   
   
    public void onShowPress(MotionEvent e)
    {
        status.add(0, "onShowPress");
        invalidate();
    }
   
    public boolean onDown(MotionEvent e)
    {
        status.add(0, "onDown");
        invalidate();
        return true;
    }
   
    public boolean onSingleTapUp( MotionEvent e)
    {
        status.add(0, "onSingleTapUp");
        invalidate();
        return false;
    }
}


½ÇÇà È­¸éÀÌ´Ù