View
뷰는 View 클라스의 오브젝트인데 이는 화면의 레이아웃과 컨텐트같은 요소들을 저장하고 있는 것이라 볼수 있겠습니다. 뷰 오브젝트는 레이아웃이나 그 내부에 놓여지는 오브젝트들의 정보를 저장하고 드로잉, 포커스 변화, 스크롤, 입력키나 제스추어등의 인터렉션을 핸들합니다.
View Group
뷰 그룹은 Viewgroup 클라스의 오브젝트로서 다른 뷰들을 모아 관리하거나 할 때 사용되는 특별한 뷰입니다. 하나의 뷰는 옆의 그림에서 보는 것 처럼 내부에 다른 뷰나 뷰 그룹을 하부에 포함할수도 있고 독자적으로 존재할수도 있습니다.
이렇게 뷰와 뷰 그룹이 정의되고 여기에 layout을 연결하고 Parameter 값을 주면서 뷰의 모양을 확실히 그려내게 됩니다.
Layout
레이아웃은 뷰의 서브클라스로 계층 구조내에서 하부에 붙어 뷰내 콘트롤들의 위치를 제어하는 역할을 담당합니다. 레이아웃을 자바 프로그램을 통해서 정의될수도 있지만 대부분 XML 레이아웃 파일에 따로 정의됩니다.
기본적으로 제공되는 레이아웃은
1. FrameLayout: 가장 간단한 레이아웃으로 내부에 있는 뷰나 콘트롤들은 왼편꼭대기에 겹쳐서 차곡차곡 쌓아놓습니다.
2. LinearLayout: 내부의 요소들을 횡이나 종으로 쭉 나열합니다.
3. RelativeLayout: 여기에서는 특정내부요소를 다른 내부요소에 관련되어 위치할수 있게 합니다.
4. TableLayout: 열과 횡의 테이블 모습을 이용해야할때 쓰입니다.
5. AbsoluteLayout: 각각 내부요소들의 위치가 좌표로 주어집니다.
더욱 자세한 내용은 http://code.google.com/android/devel/ui/layout.html 을 참조합니다.
1. FrameLayout: 가장 간단한 레이아웃으로 내부에 있는 뷰나 콘트롤들은 왼편꼭대기에 겹쳐서 차곡차곡 쌓아놓습니다.
2. LinearLayout: 내부의 요소들을 횡이나 종으로 쭉 나열합니다.
3. RelativeLayout: 여기에서는 특정내부요소를 다른 내부요소에 관련되어 위치할수 있게 합니다.
4. TableLayout: 열과 횡의 테이블 모습을 이용해야할때 쓰입니다.
5. AbsoluteLayout: 각각 내부요소들의 위치가 좌표로 주어집니다.
더욱 자세한 내용은 http://code.google.com/android/devel/ui/layout.html 을 참조합니다.
아래의 예는 가장 간단한 화면을 설명합니다. 내부요소를 종으로 쭉나열하는 리니어 레이아웃을 준비한후 그 내부에 TextView 와 Button 위짓을 집어넣었습니다.
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, I am a TextView" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, I am a Button" /></LinearLayout>
.
Widget
위짓도 레이아웃과 같이 뷰의 서브클라스로 존재합니다. 위짓이란 그 하나로 완전히 모습을 갖춘 텍스트 필드나 버튼 같은 오브젝트들을 칭합니다. 이들은 화면의 구성요소가 되기위해 하나하나 오브젝트화되어있습니다. 간단한 버튼 부터 복잡한 시계까지 위짓은 그 종류가 많습니다. 다음 링크를 그 자세한 내용을 확인할 수 있습니다. http://developer.android.com/reference/android/widget/package-summary.html
UI Event
뷰, 뷰그룹, 위짓으로 화면을 구성하고 나면 이제 사용자의 의도가 잡아내는 화면상의 이벤트들을 생각할 차례입니다.
이벤트를 준비하는 방법을 흔히 두가지로 생각합니다.
첫째: 이벤트를 View 클라스에 이미존재하는 Interface들 (예; View.OnClickListener, View.OnTouchListener, View.OnKeyListener )을 이용 리스너를 만들고 이걸 뷰에 연결하는겁니다.
이벤트를 준비하는 방법을 흔히 두가지로 생각합니다.
첫째: 이벤트를 View 클라스에 이미존재하는 Interface들 (예; View.OnClickListener, View.OnTouchListener, View.OnKeyListener )을 이용 리스너를 만들고 이걸 뷰에 연결하는겁니다.
private OnClickListener mCorkyListener = new OnClickListener() { public void onClick(View v) { // 여기에 클릭이 들어오면 무엇을 할건지에 대한 프로그램을 넣습니다. }};protected void onCreate(Bundle savedValues) { Button button = (Button)findViewById(R.id.corky); // 레이아웃에서 버튼을 찾아 오브젝트로 정의합니다. button.setOnClickListener(mCorkyListener); // 리스너를 버튼 오브젝트에 연결합니다. ...}
둘째: 이게 훨신 더 쉽고 예제는 이 방법으로 합니다. 클라스를 만들때 이미 정의되어있는 리스너들이 있는데 이것에 수정(override)하여 쓰는겁니다.
public class ExampleActivity extends Activity implements OnClickListener { protected void onCreate(Bundle savedValues) { ... Button button = (Button)findViewById(R.id.corky); // 레이아웃에서 버튼을 찾아 오브젝트로 정의합니다 button.setOnClickListener(this); // 리스너를 버튼 오브젝트에 연결합니다. } // OnClickListener 콜백시에 무엇을 할지를 정합니다. public void onClick(View v) { // 여기에 클릭이 들어오면 무엇을 할건지에 대한 프로그램을 넣습니다. } ...}
Menu
메뉴에는 두 가지가 있습니다.
1. Menu 버튼을 누름에 따라 나오는 메뉴와
2. 화면을 계속 누르고 있으면 나오는 Context Menu 입니다.
1. Menu 버튼을 누름에 따라 나오는 메뉴와
2. 화면을 계속 누르고 있으면 나오는 Context Menu 입니다.
Menu 버튼을 에서는 onCreateOptionsMenu() 에 메뉴 아이템들을 넣고, onOptionsItemSelected() 으로 어느 아이템이 선택되었는지를 잡아냅니다.
Context Menu에서는 onCreateContextMenu() 에 메뉴 아이템들을 넣고, onContextItemSelected() 으로 어느 아이템이 선택되었는지를 잡아냅니다.
Context Menu에서는 onCreateContextMenu() 에 메뉴 아이템들을 넣고, onContextItemSelected() 으로 어느 아이템이 선택되었는지를 잡아냅니다.
[개발실무&100%환급]SQL/자바/스프링/안드로이드/닷넷C#/웹퍼블… | 12-27 | 2437 | ||
[채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… | 12-11 | 1788 | ||
53 | [평일100%환급7건]Spring,자바&JSP,안드로이드,웹퍼블리싱,C#닷… | 03-15 | 1599 | |
52 | [주말]C#,ASP.NET마스터 | 01-31 | 1692 | |
51 | [기업100%환급,평일주간]SQL기초에서스키마오브젝트,PLSQL,힌트… | 01-31 | 2319 | |
50 | [평일주간야간,주말]C기본&자료구조,알고리즘 | 01-31 | 1335 | |
49 | [평일주간,평일야간,주말]Spring,MyBatis,Hibernate개발자과정-… | 01-19 | 1644 | |
48 | [평일야간,주말]안드로이드개발자과정(Android기초실무) | 01-11 | 1500 | |
47 | [평일야간,주말주간야간]JAVA,Network&JSP&Spring,MyBatis,Hiber… | 01-03 | 2029 | |
46 | [개발실무&100%환급]SQL/자바/스프링/안드로이드/닷넷C#/웹퍼블… | 12-27 | 2437 | |
45 | [기업100%환급,평일주간5일 교육]JAVA,JDBC,Servlet,JSP | 12-19 | 1755 | |
44 | [평일주간야간, 주말]웹퍼블리싱 마스터(HTML5,CSS3,jQUERY,AJAX… | 12-14 | 1731 | |
43 | [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… | 12-11 | 1788 | |
42 | [기업100%환급]웹퍼블리싱마스터(HTML5,CSS3,JavaScript,jQUERY) | 12-09 | 1403 | |
41 | [평일야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 | 12-01 | 1631 | |
40 | [기업100%환급]오라클&자바웹스프링신입과정3주(SQL,JAVA,JSP,Se… | 12-01 | 1806 | |
39 | [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) | 12-01 | 1280 |
댓글 없음:
댓글 쓰기