View : http://developer.android.com/reference/android/view/View.html (원문)

이 클래스는 사용자 인터페이스 구성요소에 대한 기본적인 생성 블록을 나타냅니다.


View는 화면의 사각 영역을  포함하며 그리기와 이벤트 처리를 포함합니다.
View는 Button, Text Field 등의 인터렉티브 UI 구성 요소를 만드는데 사용하는 기본 클래스입니다.
View Group의 하위 클래스는 레이아웃의 기본 클래스로, 투명 컨테이너에 View 또는 다른 View Group을 포함합니다.

안드로이드가 View를 그리는 방법 : http://developer.android.com/guide/topics/ui/how-android-draws.html (원문)

2단계에 걸쳐 작업은 진행 됩니다.

1. mesure(int, int)를 통한 영역 확인
: 나->자식 TopDown 방식으로 각각 요소에 대한 공간을 계산하여 확보 합니다.

2. layout(int,int,int,int,)를 통한 배치 작업
: 나->자식 TopDown 방식으로 위에서 지정된 영역 내에서 각각의 요소를 배치 합니다.

View 사용 방법

1. Properties 설정 : 각 요소의 프로퍼티를 설정한다.

2. Focus 설정 : 포커싱을 설정한다 (이벤트에서 포커스 획득, 손실을 이용하여 다양하게 처리 가능

3. Listener 설정 : 원하는 리스너를 등록하여 사용할 수 있다.
Ex) setOnFocusChangeListener(View.OnFocusChangeListener)

4. Visibility 설정 : 뷰를 보여줄지 여부를 설정할 수 있다. setVisibility(int)
    
ID

: View는 Widget과 관련된 상수 ID값을(R.java 참조) 가지고 있으며 일반적으로 xml을 통해 설정한다.

Xml 예시 )

       <Button id="@+id/my_button"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="@string/my_button_text"/>

Activity에서 사용예시 )

      Button myButton = (Button) findViewById(R.id.my_button);

    
기타

Position, Size, Padding & Margins, Layout, Drawing, Focus Handling, Touch Mode, Scrolling, Tags, Animation 은

http://developer.android.com/reference/android/view/View.html (원문) 을 참조하기 바람


Widget : http://developer.android.com/reference/android/widget/package-summary.html (Wdiget 패키지 요약)

Widget은 유저와 상호작용을 하는 View Object입니다. 안드로이드는 Button, Check Box, Text-Entry 등 다양한 Widget을 제공하여 빠른 UI설계를 도와 줍니다. Clock, Zoom, Date Picker와 같은 몇몇 Widget은 복잡하게 이뤄져 있습니다. Widget은 제한을 두고 있지 않으며 기존 Widget 조합 또는 자신만의 View Object를 만들 수도 있습니다.

UI Event : http://developer.android.com/guide/topics/ui/ui-events.html (UI 이벤트 처리)

이제 UI를 만들었으면 버튼을 눌러 다음 행동을 처리하는 Event 처리를 해야 하는데 2가지 방법이 존재한다.

1. 이벤트 리스너 정의 및 등록
View.OnClickListener : 클릭 이벤트 처리
View.OnTouchListener :  터치 이벤트 처리
View.OnKeyListener : 키 이벤트 처리

2. View에 존재하는 콜백 메소드 재정의
onTouchEvent() : 터치 콜백
onTrackballEvent() : 트랙볼 콜백
onKeyDown() : 키다운 콜백

Menu : http://developer.android.com/guide/topics/ui/menus.html (메뉴 만들기)

Menu는 UI의 중요한 부분 중 하나로 메뉴 키를 누를 때 동작하며 기본적으로 안드로이드에서 제공합니다.

메뉴는 View를 사용하면 자동 생성되며 onCreateOptionMenu(), onCreateContextMenu() 이 2개의 콜백 메소드로 알려주며, 항목 선택시에는 onOptionsItemSelected(), onContextItemSelected() 콜백 메소드를 통하여 제어 할 수 있습니다. 리스너를 생성 제어하지 않아도 됩니다.

고급기능


Adapter : http://developer.android.com/guide/topics/ui/binding.html (Apdater를 이용해 데이터 바인딩 하기)

View 또는 ViewGroup의 정보를 하드 코딩이 아니라 외부 정보를 바인딩하여 처리 하고 싶을 때 사용하는 것으로, View 및 각각의 자식 객체를 Adapter를 통해 초기화 및 생성할 수 있습니다.

Style & Themes : http://developer.android.com/guide/topics/ui/themes.html (스타일과 테마 적용하기)

단순한 View 만족하지 못할 경우 , 스타일과 테마을 적용하여 기존 UI를 좀더 멋있게 꾸밀 수 있다.

Style (작은 것) : 특정 View 요소에 적용 가능
Theme (큰 것) : 특정 Activity 및 전역 Application에 적용 가능

Create Custom Widget : http://developer.android.com/guide/topics/ui/custom-components.html (원문)

기본적인 접근

1. View또는 기존 생성한 클래스를 상속(Extends) 받는다.
2. 상위 클래스(Super Class)의 메소드(onXXX …) 를 오버라이드 한다. Ex) onDraw(), onKeyDown(), onMeasure()…
3. 이제 클래스를 새롭게 확장한 이후 이 클래스를 바탕으로 좀더 확장해 나간다.

참조

onDraw () : 2D 그래픽을 그리기 위한 메소드
onMeasure() : Widget의 크기(영역 : 폭, 높이)을 지정하는 메소드

기존 존재하는 클래스 확장 예시

1. 정의
public static class MyEditText extends EditText

2. 클래스 초기화
Super를 사용하여 상위 클래스를 초기화 한다 이후 xml 을 통해 레이아웃을 초기화 할 수 있다.

3. 메소드 오버라이드
onDraw(), onMeasure() 등을 오버라이딩 하여 원하는 형태로 꾸며준다.

4. 커스텀 컴포넌트 사용
      <view
        class="com.android.notepad.NoteEditor$MyEditText"
        id="@+id/note"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@android:drawable/empty"
        android:padding="10dip"
        android:scrollbars="vertical"
        android:fadingEdge="vertical" />

[잡설]

이정도면 40분동안 주저리는 충분하겠지 ..? 후후훗~ 음... 근데 공부하면서 느끼는건데 안드로하다 플렉스하다 와따가따 하면 변수위치가 해깔림 떱.

 Flex)
var sampel:Sample = new Sample;
 VS  Java)
Sample sample = new Sample();

음.. 뭐 이런거 ?




+ Recent posts