본문 바로가기

Daily Sample

[Day8] Android Custom Button 소스


TITLE : Android custom Button Source

Date : 2010/04/25

Writen by Dayyoung

Description :

This is Source that make custom button by extends original class

Download Link : 


버튼클래스를 상속받아 사용자 버튼 만들기 

안드로이드 버튼은 상대적으로 다양한 사용자 옵션을 제공한다.

특히 배경/글자/투명색 등은 버튼을 다양하게 꾸밀 수 있는 여지를 제공한다.

하지만, 이미지나 보다 독특한 프로그램을 만들기 위해서는 기존의 위젯을 사용자가 정의 해서 사용하는 것이 좋다.

특히, 안드로이드는 OOP게념이 적용되어 사용자정의를 위해서는 부모클래스를 상속받아야 한다.

모든 자바 클래스가 Object 버튼을 상속받는 것처럼

모든 뷰(버튼뷰/이미지뷰/웹뷰)등 은 View  클래스를 상속받으며,

특히 글자가 들어가는 모든 뷰는 텍스트뷰를 거의 대부분 상속받는 다고 봐도 무방하다.


안드로이드 뷰의 상속관계>

ViewClass

   ㄴTextView

      ㄴ ButtonView
 

일반적인 ButtonView 는 눌렀을 때 사용자가 눌렸다는 인식을 하기 좋다.

하지만, 버튼에 이미지를 삽입하는 경우 눌렸을 때 이미지를 변경시켜줘야 하는 부분이 필요한데 이것은 ButtonView 의 클릭이벤트 부분을 사용자정의 하여 구현할 수 있다.
 

1. 안드로이드에서 WebView에 대응하는 Button클래스를 상속받는 CustomButton 클래스를 만들어 준다.


2. 상황에 맞는 이미지 버튼을 준비해서 Drawable 폴더로 이동시킨다.

이 때 R.java 파일에 이미지 파일의 ID가 저장되는 데 이는 나중에 버튼을 지정할 때 쓰인다.

 

3. main.xml 에 사용자 뷰를 추가한다.

XML 에서 디자인을 추가할 때 상속한 뷰를 쓰려면 아무리 같은 클래스에 있다고 할지라도 Full Pakage Name 을 써주어야 사용할 수 가 있다.


4. onTouchEvent에서 case MotionEvent.ACTION_DOWN:
    setBackgroundResource(clickedBitmapId) 에서 배경그림을 설정한다.

 

5. onTouchEvent에서 case MotionEvent.ACTION_UP:    

    setBackgroundResource(normalBitmapId)에서 배경그림을 되돌린다.


앞으로 살펴보게되는 사용자 정의뷰의 대부분은 OOP의 다형성을 이용하여 구현되었다.

안드로이드에서 사용자가 기본뷰나 클래스를 가져 쓰기위해서는 어뎁터패턴/이터레이터패턴/팩토리패턴 등 다양한 패턴에 익숙해 질 필요가 있다.