너무 오랜만에 복습을 하게 되었어요. 여러가지 이유가 있겠지만 역시 저의 게으름이 제일 문제인것 같습니다.
 그리고 지금 시간이 너무 늦어서 모든 내용을 복습하기는 힘들거 같아요. 그래서 공부할때 찍어놨던 이미지를 바탕으로 복습하겠습니다. 추가적으로 복습하면서 나오는 내용들은 계속 적어나갈께요.

  처음에 나오는 내용은 버튼을 클릭했을때의 이벤트리스너를 만드는 모습이에요.









이번에는 소스에서 layout리소스에 xml파일로 만들어놓은 각종 view를 사용하는 모습입니다. 
view의 크기를 지정하는 속성값 중에 fill-parent라는게 있는데요 이건 컨테이너의 길이만큼 크기를 늘리라는 거에요.




UI에 있는 view들의 id를 확인할 수 있어요. id라는 속성은 해당 뷰를 구분하는 데 쓰여요. 레이아웃에서 유일한 값을 갖죠.
그런데 id를 새로 선언할때 @+를 쓰는데요 id는 새로운 파일로 생기는게 아니라 추가되는 거니깐 그렇죠. id는 그냥 하나의 integer
값일 뿐이에요. 개발자가 보기 편하게 하려고 문자로 쓰죠.



이제 Activity UI의 여러 레이아웃을 확인해 보겠습니다.

레이아웃의 속성을 사용하기 위해 레퍼런스 문서를 참고할 수 있어요
속성중에 visivility라는 게 있는데요 속성값을 visiable로 주면 화면에 표시를 해준다는 거에요.
invisiable을 주면 화면에 표시는 안하는데 공간은 차지한다는 거죠.
gone으로 하면 화면에 표시도 않해주고, 공간도 차지 않해요.


 view 라는건 Activity를 구성하는 각각의 기본 구성요소라고 할 수 있죠. 개발할때는 일단 xml로 view를 그리고, 입력에 대한 
이벤트를 처리해요. 코드를 통해 view를 그릴수도 있는데요, xml로 그리면 xml을 파싱하는 비용만 들어가기 때문에 일반적으로 
xml에 구현하죠.
 view를 2개로 구분해 볼 수 있어요. 첫번째로 위젯이라는 건 말단의 view를 나타내죠. 그리고 레이아웃이라는 건 Lienear layout
같이 다른 애를 배치시키는 view에요. 여기서 위젯은 버튼, 텍스트Field, Edit박스 같은 걸 말하죠. 
 트리형태로 구성이 되는 view를 어떻게 사용하냐면요 일단 속성을 설정할 수 있어요. 그리고 화면 가장 위에 있어서 사용자의 입력
을 받을 수 있는 포커스를 설정하죠. 버튼클릭 등의 이벤트가 발생했을 때 처리할 수 있는 리스너를 설정할 수도 있어요.
setVisibility 메소드를 호출해서 뷰를 보이거나 감출 수도 있죠.
 보통 최상위에 하나의 layout이 들어가고요 child element로 위젯이 들어가요. 그리고 각각의 속성을 xml attribute로 처리하죠.
 소스코드에서 findViewById함수는 xml에서 정의한 위젯을 가져오는 일을 하고요 setContentView는 xml의 정보를 보고 메모리에
view를 구성하죠.

프레임레이아웃이라는 게 있는데요 무조건 새로운 뷰를 뷰들의 왼쪽위에 배치시켜요. 예를 활용하면 가려져있는 상태에서 어떨 때
는 A의 visivility를 보여주고, 어떨때는 B의 visivility를 보여주고 등등을 할수 있죠.

리니어 레이아웃부터 보겠어요. 예는 내부에 들어가는 자식뷰들을 수직 또는 수평으로 배치하죠.


남은 공간을 전부 활용하기 위해 weight를 줄 수 있어요. 여러 위젯이 남은 공간을 상대적으로 얼마나 점유할 것인지를 결정하죠.
vertical일 때는 height만 weight가 적용이 되요 gravity도 마찬가지죠. horizontal일 때는 그 반대에요.


정확한 위치를 주기 위해 gravity 속성을 줄 수도 있어요
android:gravity는 문자에 대한 위치를 바꾸는 거고요
android:layout_gravity는 view의 상대적 위치를 바꾸는 거에요.




레이아웃의 속성을 사용하는 모습이에요. 만약 TextView에서 margin을 준다면 TextView의 바깥을 비우라는 뜻이고
padding을 준다면 TextView안에서 특정 공간을 비우라는 거에요.
textSize를 줄때 18sp 이런식으로 보통 주는데요 sp는 크기를 상대적으로 결정하는 거에요. 사용자마다 font사이즈가
바뀔수 있으니깐 그런 경우를 대비한 거죠. 다양한 속성을 보고싶으면 d.android.com에 가서 찾아보세요. 자바의 어떤
메소드랑 연관되는지도 다 확인해 볼 수 있어요.
 버튼 얘기를 좀 할께요. 버튼은 TextView를 상속한 엘리먼트이기 때문에 TextView와 비슷하게 속성을 사용하면 되요.







relative layout의 사용모습이에요
frame이나 Linear같은 건 메모리에 view를 tree형태로 만든다고 얘기했었는데요 너무 tree를 많이 쓰면 stack overflow가 나죠
그래서 가능하면 relative layout을 많이 써요. 더 적은 stack을 차지하죠.













check box를 사용하는 모습입니다.
RadioButton도 있는데요 보통 RadioGroup과 같이 사용되요. RadioGroup은 LinearLayout의 자식 클래스로 배치를 담당하는 역할도
같이하죠. check box와 다른점은 라디오 버튼은 소스코드에서 사용할때 하나만 check를 확인하면 된다는 거죠.
 스크롤뷰도 있는데요 예는 view group의 하나일 뿐 레이아웃은 아니에요. 얘는 하나의 자식만을 가질 수 있죠.





 마지막으로 테이블 레이아웃에 대해 이야기 할께요. 그렇게 많이 사용되진 않아요. 테이블 레이아웃은 행을 결정해주는
TableRow와 함께 사용되요. 
 android:layout_span이라는 속성으로 두 컬럼을 하나로 합칠 수 있어요. 그리고 컬럼수가 맞지 않을때는 stretchColumns속성을
이용해서 공간을 채워주죠
 android:layout_column속성으로 몇번째 컬럼부터 채워지도록 할건지 결정할 수도 있어요.

 안드로이드의 리소스는 안드로이드의 패키지(apk)를 제외한 나머지 파일들을 관리하는 애에요. xml도 변환이 되서 들어가죠.
 이런 리소스를 직접 접근하기 위해선 Resuorces클래스를 사용해야 해요.










신고

'T아카데미' 카테고리의 다른 글

사용자인터페이스_02  (0) 2010.07.02
사용자인터페이스_02  (0) 2010.07.01
어플리케이션 구조  (0) 2010.07.01
사용자인터페이스_01  (0) 2010.07.01
안드로이드 개발환경  (0) 2010.06.27
안드로이드 개요  (0) 2010.06.26
Posted by 응큼미소


티스토리 툴바