안드로이드스터디 4

2,891 views
2,775 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,891
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
32
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

안드로이드스터디 4

  1. 1. 0. View 와 ViewGroup <ul><li>- View 와 ViewGroup 의 관계 - </li></ul><ul><li>View 클래스 – 안드로이드의 사용자 인터페이스를 위한 기본적인 구축 요소임 </li></ul><ul><li>Button, Spinner, EditText 같은 모든 사용자 인터페이스 위젯은 </li></ul><ul><li>이 View 클래스에서 파생된 것 . </li></ul><ul><li>ViewGroup 클래스 – ViewGroup 의 파생클래스를 이용하면 View 객체들을 </li></ul><ul><li>화면에 조직적으로 표시할 수 있음 . 파생된 하위 클래스는 </li></ul><ul><li>레이아웃 , 뷰 컨테이너 위젯으로 나뉨 . </li></ul><ul><li>코드에서 ViewGroup 에 자식 뷰 객체들을 추가할 때 - addView() 메서드를 사용 </li></ul><ul><li>- XML 에서는 ViewGroup 객체를 정의하는 요소 안에 자식 뷰 요소들을 포함 시킴 </li></ul>
  2. 2. <ul><li>위젯들의 배치를 위한 ViewGroup – </li></ul><ul><li>ViewGroup 클래스를 직계 부모로 삼는 하위 클래스들은 이름이 Layout 으로 끝남 . </li></ul><ul><li>Ex) LinearLayout, RelativeLayout, AbsoluteLayout… </li></ul><ul><li>이런 레이아웃 클래스들은 View 객체들을 화면에 다양한 방식으로 배치하는데 씀 </li></ul><ul><li>ViewGroup 의 하위 클래스의 두 번째 범주는 간접적인 하위 클래스들로써 다른 뷰 객체들을 담는 컨테이너 역할을 하되 , 자기 자신도 보통의 위젯 들처럼 사용자와 상호작용하는 기능을 제공한다 . </li></ul><ul><li>Gallery – 자식뷰 들을 수평방향으로 나열 ( 현재 항복이 중앙에 좀 더 크게 표시 ) </li></ul><ul><li>ListView – 자식 뷰들을 수직방향의 목록형태로 표시 </li></ul><ul><li>TabHost – 여러 개의 탭들로 조직화 할 수 있게 함 . </li></ul><ul><li>GridView – Grid 방식으로 나눠져서 표시 </li></ul><ul><li>ImageSwitcher, ScrollView 등의 추가적인 기능 . </li></ul>0. View 와 ViewGroup
  3. 3. 1. 레이아웃을 이용한 사용자 인터페이스 설계 안드로이드 SDK 프레임워크가 제공하는 내장 레이아웃 클래스 1-1. LinearLayout 1-2. AbsoluteLayout 1-3. FrameLayout 1-4. RelativeLayout 1-5. TableLayout XML 에서 가급적 설정하는것이 바람직함 . 특성설적의 일반적인 형태 android:layout_ 특성 _ 이름 = “ 값”
  4. 4. 1. 레이아웃을 이용한 사용자 인터페이스 설계 특성이름 적용대상 설명 값 Android:layout_height 부모뷰 , 자식 뷰 뷰의 높이 , 자식 뷰의 경우 필수 크기 (dimension) 값 또는 fill_parent 또는 wrap_content Android:layout_width 부모 뷰 , 자식 뷰 뷰의 너비 , 자식 뷰의 경우 필수 크기 (dimension) 값 또는 fill_parent 또는 wrap_content Android:layout_margin 자식 뷰 뷰의 상하좌우의 여분 공간 크기 값 Android:layout _margininTop 자식 뷰 뷰의 위쪽 여분 공간 크기 값 Android:layout _marginBottom 자식 뷰 뷰의 아래쪽 여분 공간 크기 값 Android:layout _marginRight 자식 뷰 뷰의 오른쪽 여분 공간 크기 값 Android:layout _marginLeft 자식 뷰 뷰의 왼쪽 여분 공간 크기 값
  5. 5. 1. 레이아웃을 이용한 사용자 인터페이스 설계 TextView 하나를 담은 LinearLayout 의 XML 레이아웃 자원 . LinearLayout 은 화면을 꽉 채우도록 설정했고 TextView 역시 LinearLayout 을 꽉 채우도록 설정했다 . -> 결과적으로 LinearLayout 이 화면을 다 채운다 .
  6. 6. 1. 레이아웃을 이용한 사용자 인터페이스 설계 Button 객체를 정의하는 레이아웃 자원 왼쪽과 위쪽 여백을 크기 (dimension) 을 지정하여 사용 . Wrap_content 를 사용 레이아웃 요소들은 화면의 임의의 직사각형 공간을 차지함 . 레이아웃은 View 에서 파생된 뷰 객체임 (View v) (?) -> 한 레이아웃을 다른 레이아웃에 넣는 것 역시 가능함 .
  7. 7. 1-1. LinearLayout <ul><li>LinearLayout 의 요소 – </li></ul><ul><li>1. 기본적인 LinearLayout 객체를 정의 (ViewGroup 의 일종 ) </li></ul><ul><li>2. 자신의 자식 위젯 (View 객체 ) 들을 한 행 또는 한 열로 차례로 표시 </li></ul><ul><li>3. 이 위젯이 화면 전체에 적용되는 경우 , 수평 (horizontal) 수직 (vertical) 을 </li></ul><ul><li>표시하기 위해 setOrientation( 방향특성 ) 메소드를 사용 </li></ul><ul><li>참고 ) TextView 위젯도 일종의 View 임 . </li></ul>
  8. 8. 1-1. LinearLayout 특성이름 적용대상 설명 값 Android:orientation 부모 뷰 자식 뷰들을 하나의 행으로 ( 수평 ) 표시할 것인지 하나의 열로 ( 수직 ) 으로 표시할 것인지를 결정한다 . Horizontal 또는 Vertical Android:gravity 부모 뷰 부모 안에서 자식 뷰의 중력 다음 상수들 중 하나 또는 여러 개 ‘ |’ 로 결합한 것 : top,bottom,left,right,center_vertical,fill_vertical,center_horizontal,fill_hirizontal,center,fill Android:layout_gravity 자식 뷰 특정 자식 뷰의 중력 다음 상수들 중 하나 또는 여러 개 ‘ |’ 로 결합한 것 : top,bottom,left,right,center_vertical,fill_vertical,center_horizontal,fill_hirizontal,center,fill
  9. 9. 1-1. LinearLayout <ul><li>Java 코드에서 레이아웃 만들기– </li></ul><ul><li>♦ java 코드에서 인터페이스 구성요소를 생성하는 것도 가능하나 효율적인 </li></ul><ul><li>개발공정을 위해서는 XML 지원 파일을 이용하는 방법이 직관적이며 조직화 </li></ul><ul><li>하기 좋으므로 추천되어진다 . </li></ul>해당 내용은 같은 결과
  10. 10. 1-2. AbsoluteLayout <ul><li>AbsoluteLayout – </li></ul><ul><li>자식 뷰 들의 x,y 좌표를 정확하게 지정하고자 할 때 쓰임 </li></ul><ul><li>( 픽셀 단위까지 정확하게 맞아 떨어져야 하는 경우 ) </li></ul><ul><li>2. 화면 크기가 다른 기기에서는 레이아웃이 깨질 우려가 있음 ( 유연성 부족 ) </li></ul><ul><li>3. 따라서 화면 전체가 아닌 특정영역의 픽셀 수준을 제어할 때 사용 </li></ul><ul><li>주의 : AbsoluteLayout 클래스는 안드로이드 1.5 부터 폐기 대상으로 분류됨 </li></ul><ul><li>따라서 이후의 SDK 에서는 언제라도 제거 될 수 있으므로 FrameLayout </li></ul><ul><li>과 RelativeLayout 같은 레이아웃을 적절히 배치하여 사용할 것 . </li></ul>
  11. 11. 1-2. AbsoluteLayout 특성이름 적용대상 설명 값 Android:layout_x 자식 뷰 뷰의 왼쪽 최상단 모서리 기준 ( 부모 레이아웃 안에서 ) 크기 Android:layout_y 자식 뷰 뷰의 왼쪽 최상단 모서리 기준 ( 부모 레이아웃 안에서 ) 크기
  12. 12. 1-3. FrameLayout <ul><li>FrameLayout – </li></ul><ul><li>여러 자식 뷰 들을 겹쳐서 그리고자 할 때 사용하는 레이아웃이다 . </li></ul><ul><li>2. 이 레이아웃은 같은 영역에 여러 이미지들을 표시하고자 할 때 유용하다 . </li></ul>특성이름 적용대상 설명 값 Android:layout _foreground 부모 뷰 내용 위에 겹쳐 그릴 표시물 자원 표시물 자원 참조 Android:layout _foregroundGravity 부모 뷰 전경 표시물의 중력 ( 정렬 방식 ) 다음 상수들 중 하나 또는 여러 개 ‘ |’ 로 결합한 것 : top,bottom,left,right,center_vertical,fill_vertical,center_horizontal,fill_hirizontal,center,fill Android:layout _mearureAllchildren 부모 뷰 레이아웃의 크기를 모든 자식을 고려하여 결정할 것인지 아니면 VISIBLE 로 설정된 자식들만 (INVISIBLE 로 설정된 것들은 빼고 ) 고려할 것인지 여부 . true, false Android:layout _gravity 자식 뷰 부모 안에서 자식 뷰의 중력 ( 정렬 방식 ) 다음 상수들 중 하나 또는 여러 개 ‘ |’ 로 결합한 것 : top,bottom,left,right,center_vertical,fill_vertical,center_horizontal,fill_hirizontal,center,fill
  13. 13. 1-3. FrameLayout icon icon2
  14. 14. 1-4. RelativeLayout <ul><li>RelativeLayout – </li></ul><ul><li>자식 뷰들을 상대적인 관게에 따라 배치한다 . 예를 들어 A 는 자식 B 아래 </li></ul><ul><li>자식 B 는 자식 C 왼쪽에 등등으로 상대적인 위치를 설정해 주면 </li></ul><ul><li>RelativeLayout 이 그에 맞게 자식 뷰들의 위치를 결정 . </li></ul><ul><li>2. 또한 레이아웃 가장자리를 기준으로 해서 설정 가능 </li></ul><ul><li>3. 그룹을 사용하지 않고 흥미로운 사용자 인터페이스 구축 가능 </li></ul>특성은 교재 page 218 참고
  15. 15. 1-4. RelativeLayout Android:layout_centerVertical – 뷰를 부모의 수직 중앙에 배치 할 것인지르의 여부 Android:layout_centerInParent – 뷰를 부모의 수직 , 수평 중앙에 배치할 것인지의 여부 Android:layout_centerHorizontal – 뷰를 부모의 수평 중앙에 배치할 것인지의 여부 Android:layout_above – 뷰의 하단 가장자리를 대상 뷰의 상단에 붙임
  16. 16. 1-5. TableLayout <ul><li>TableLayout – </li></ul><ul><li>자식 뷰들을 열과 행으로 조직화된 표 형태로 배치 </li></ul><ul><li>개별 자식 뷰들은 “행 (row)” 에 해당하는 tableRow 레이아웃 ( 기본적으로 수평방향의 LinearLayout) 에 수평으로 나열되며 , 그런 TableRow 들이 여러 개 수직으로 나열된다 . </li></ul><ul><li>3. TableRow 의 각 열 (column) 은 하나의 뷰 객체 ( 또는 뷰 객체들을 담은 레이아웃 ) 만 담는다 . </li></ul><ul><li>4. 열 번호를 명시적으로 지정하지 않으면 자식 뷰는 기존 열의 오른쪽에 배치 </li></ul><ul><li>5. 디폴트로 각 열의 너비는 그 열에서 가장 큰 뷰 객체에 맞게 조정됨 </li></ul><ul><li>6. 하나의 뷰 객체가 한 행 전체를 차지하게 하고 싶다면 TableLayout 의 </li></ul><ul><li>그 행에 TableRow 요소 대신 해당 View 요소를 직접 포함 시키면 됨 . </li></ul><ul><li>7. 열 번호 (0 에서 시작 ) 들을 명시적으로 지정해서 합치는 것도 가능 </li></ul>
  17. 17. 1-5. TableLayout 특성이름 적용대상 설명 값 Android:layout _collapseColumns TableLayout 숨길 열들의 번호 (0 기반 ) 들을 쉼표로 분리해서 나열 문자열 또는 문자열 자원 참조 예 : 0.1.3.5.7 Android:layout _shrinkColumns TableLayout 줄일 수 있는 열들의 번호 (0 기반 ) 들을 쉼표로 분리해서 나열 한 것 문자열 또는 문자열 자원 참조 예 : 0.1.3.5.7 모들 열 지정시 *. Android:layout _stretchColumns TableLayout 늘릴 수 있는 열들의 번호 (0 기반 ) 들을 쉼표로 분리해서 나열 한 것 문자열 또는 문자열 자원 참조 예 : 0.1.3.5.7 모들 열 지정시 *. Android:layout_column TableRow 의 자식 뷰 이 뷰가 표시 될 열 번호 (0 기반 ) 정수 또는 정수 자원 참조 . 예 : 1. Android:layout_span TableRow 의 자식 뷰 이 뷰가 차지할 열들의 개수 1 이상의 정수 또는 정수 자원 참조 예 : 3.
  18. 18. 1-5. TableLayout

×