▩ 커스텀컴포넌트를 생성 ▩
컴스텀 컴포넌트를 생성하기 위해서는 다음과 같은 절차를 밟아야 한다.
첫번째, 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);
}
}
컴스텀컴포넌트 실행 결과입니다.
빨강색 부분이 터치했을경우 나타내는 위치값입니다.
오늘 포스트 커스텀 컴포넌트을 예제를 통해서 알아봤습니다.