본문 바로가기

안드로이드 초보편

커스텀 컴포넌트 이벤트처리 방법

커스텀컴포넌트를 생성

 

컴스텀 컴포넌트를 생성하기 위해서는 다음과 같은 절차를 밟아야 한다.

첫번째, View 클래스를 상속받아서 자식 클래스를 생성한다.

두번째, 부모 클래스의 메소드를 재 정의한다. 주로 앞에 on이 붙어 있는 메소소드를 재정의

            하면 됩니다. OnDraw(), OnMeasure(), OnKeyDown() 메소드를 재정의 하여서 필요한

            기능을 추가한다.

세번째, 커스텀 컴포넌트는 뷰 클래스 객체가 사용될 수 있는 곳이면 어디서든 사용이 가능하

           다.

 

커스텀 컴포넌트 이벤트 처리 방법

사용자가 나름대로 커스텀 컴포넌트를 작서하려고 할 때 , 즉 다시 말해서 Button 클래스를

상속하여 나만의 버튼을 만들고 싶은 경우가 있다. 이때 onKeyDown()와 같은 이벤트 처리기를

재정의하여서 이벤트를 처리하면 좋다.

 

● OnkeyDown(int, KeyEvent) - 사용자가 키보드를 눌렀을때 호출됩니다.

● onKeyUP(int, Keyevent) - 사용자가 키에서 손을 뗐을 때 호출됩니다.

● OnTrackballEvent(MotionEvent) - 사용자가 트랙볼을 움직였을때 호출됩니다.

● OnTouchEvent(MotionEvent) - 사용자가 화면을 터지했을 때 호출됩니다.

● OnFocusChanged(boolean,int,Rect) - 뷰가 포커스를 얻거나 잃었을때 경우에 호출된다.

 

 

   class MyView extends view{

             int x, y;

 

     public MyView(Context context){

       super(context);

      setBackgroundColor(Color.YELLOW);

      }

     public boolean onTouchEvent(MotionEvent event){

        x =(int)event.getX(0);

        y =(int) event.getY(0);

        invalidate();

      return super.onTouchEvent(event);

      }

 

    protected void onDraw(Canvse canvse){

      Paint paint = new Paint();

      paint.setTextSize(60);

     canvas.drawText("("+x+","+y+") 에서 터치 이벤트가 발생하였음", x,y,paint);

   }

}

public class MyViewEventActivity extends ActionBarActivity{

    public void onCreate(Bundle savedInstanceState){

       super.onCreate(savedInstanceState);

 

      MyView w = new MyView(this);

     setContentView(w);

  }

}

 

컴스텀컴포넌트 실행 결과입니다.

빨강색 부분이 터치했을경우 나타내는 위치값입니다.

 

 

오늘 포스트 커스텀 컴포넌트을 예제를 통해서 알아봤습니다.