728x90

안드로이드에서 자주 사용되는 속성들!

이름이 아주 직관적이어서 이름만으로도 의미를 파악하기 쉽게 되있다.

속성이름은 XML 문서에도 그대로 적용된다.

 

(id)

뷰를 칭하는 이름을 정의한다. 코드나 XML 문서에서 이 뷰를 참조할 때 id를 사용 하므로 의미를 잘 설명할 수 있는 이름을 붙여야 한다.

 

@[+] id/ID

 

@ : id를 리소스 (R.java)에 정의하거나, 참조한다는 뜻이며 무조건 붙여야 한다.

+ : ID를 새로 정의한다는 뜻이다, 처음 새로 정의할 때만 붙이고 참조할 때는 붙이지 않는다.

id : 예약어 이므로 그대로 쓰면되고 / 뒤에 원하는 이름을 작성한다.

ID : 고유한 명칭이므로 명칭 규칙에 맞추고, 같은 범위에 속한 뷰끼리 중복되어서는 안 된다.

 

android:id="@+id/name"

 

XML 문서에 ID를 지정해 놓으면 이 이름이 R.java에 정수 상수로 정의 된다. 코드에서 이 뷰를 참조할 때는 findViewById라는 메서드를 호출하여 인수로 참조할 뷰의 id를 전달한다.

예를 들어 name 위젯의 텍스트를 변경하고 싶다면 findViewById(R.id.name) 식으로 호출 한후 setText 메서드를 호출한다.

 

id는 뷰의 이름을 정의하는 중요한 속성이지만 모든 뷰에 id를 의무적으로 지정할 필요는 없다. 코드에서 참조할 필요가 없는 위젯은 보통 id를 생략한다. 예를 들어 배경에 이미지를 출력하는 이미지 뷰는 XML 문서에 배치되어 있으면 될 뿐 이후에 참조할 일은 없으므로 굳이 id를 줄 필요가 없다.

 

(layout_width, layout_height)

뷰의 폭과 높이를 지정한다. 뷰는 부모 뷰(또는 액티비티)안에 배치되는데 이 속성이 지정하는 만큼의 크기로 배치된다. 수평, 수직 각 방향에 대해 크기를 지정할 수 잇으며 다음 세 가지중 하나의 값을 가진다.

 

fill_parent : 부모의 주어진 크기를 다 채운다.

wrap_content : 내용물의 크기만큼만 채운다.

정수 크기 : 지정한 크기에 맞춘다.

 

 

 

(background)

뷰의 배경을 어떻게 채울 것인가를 지정한다. 

 

(padding)

뷰와 내용물간의 간격을 지정한다.

 

Padding : 4방향에 동일한 여백이 적용

PaddingLeft : 왼쪽변에 대해 여백이 적용

PaddingRight : 오른쪽변에 대해 여백이 적용

PaddingTop : 윗쪽변에 대해 여백이 적용

PaddingBottom : 아랫변에 대해 여백이 적용

 

(visibility)

뷰의 표시 유무를 지정한다. 별다른 지정이 없으면 당연히 보이는 상태로 배치되지만 이 속성을 지정하면 디자인 타임에 숨겨 놓았다가 런타임에 필요할 때만 보이도록 할 수도 있다.

 

visible : 보이는 상태

invisible : 숨겨진 상태이되 자리는 차지

gone : 숨겨지며 자리도 차지하지 않는다.

 

(clickable, longClickable)

마우스 클릭 이벤트를 받을 것인지, 롱클릭 이벤트를 받을 것인지를 지정

클릭은 손가락으로 뷰를 누르는 것이며 롱클릭은 누른 채로 잠시 기다리는 것이다. 진위형이므로 true 또는 false 둘 중 하나의 값을 지정한다.

 

(focusable)

키보드 포커스를 받을 수 있는지를 지정한다. 뷰 클래스 자체는 디폴트로 포커스를 받지 않도록 되어 있으므로 키 입력을 받으려면 이 속성을 true로 변경해야 한다.

(예외적으로, 에디트나 버튼처럼 사용자의 입력을 받아야 하는 파생클래스는 이 속성의 디폴트가 true로 지정되어 있다)

 

 

 

 

 

728x90

'Android' 카테고리의 다른 글

안드로이드 ImageView  (0) 2012.07.27
안드로이드 TextView  (0) 2012.07.27
안드로이드 뷰(view)의 계층  (0) 2012.07.27
안드로이드 에뮬레이터 사용법  (0) 2012.07.27
안드로이드 XML 레이아웃의 장점  (0) 2012.07.27
Posted by 정망스
,
728x90

안드로이드 응용 프로그램의 화면을 구성하는 주요 단위는 액티비티이다. 그러나 액티비티 자체는 화면에 직접적으로 보이지 않으며 액티비티 안의 뷰가 사용자를 대면하는 실체이다. 뷰 여러 개가 모여서 액티비티를 구성하고 액티비티 여러 개가 모여서 응용 프로그램이 된다. 뷰는 안드로이드의 사용자 인터페이(UI)를 구성하는 핵심 컴포넌트로써 화면상의 사각 영역을 차지하며 자신의 모양을 그리고 사용자로부터 입력을 받아들인다.

 

뷰는 크게 두 가지로 분류된다.

 

1.위젯 : 직접적으로 보이며 사용자 인터페이스를 구성한다. 버튼, 텍스트 뷰, 에디트, 라디오 버튼 등이 위젯이며 흔히 컨트롤이라고도 부른다. 사용자에게 정보를 보여주고 명령을 입력받는 역할을 한다.

 

 

 

초록색으로 표시되어 있는 클래스들은 빈번히 사용되는 것들이다.

 

 

2.뷰 그룹 : 직접적으로 보이지 않으며 다른 뷰를 담는 컨테이너 역할을 한다. 이름 그대로 여러 개의 뷰를 유기적으로 모아 놓은 것이다. 이 부류의 클래스들을 레이아웃 이라고 한다.

 

 

 

초록색으로 표시되어 있는 클래스들은 빈번히 사용되는 것들이다.

 

728x90

'Android' 카테고리의 다른 글

안드로이드 TextView  (0) 2012.07.27
안드로이드 뷰(View)의 속성  (0) 2012.07.27
안드로이드 에뮬레이터 사용법  (0) 2012.07.27
안드로이드 XML 레이아웃의 장점  (0) 2012.07.27
안드로이드의 레이아웃 파일  (0) 2012.07.27
Posted by 정망스
,
728x90

 이클립스에서 예제를 실행하거나 AVD 관리자에서 [Start] 버튼을 누르면 에뮬레이터가 뜬다.

 

 

각 버튼의 기능

 

 

 

728x90
Posted by 정망스
,
728x90

마법사가 만들어준 프로젝트는 XML 레이아웃을 쓰도록 되어 있지만 반드시 XML을 사용해야 하는 것은 아니다.

자바 소스에서 순수한 코드만으로도 레이아웃을 구성할 수 있다.

 

package exam.androidfirst;

 

import android.app.Activity;

import android.os.Bundle;

import android.widget.TextView;

 

public class AndroidFirst extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    TextView MyText = new TextView(this);

    MyText.setText("코드로 문자열 출력하기");

    setContentView(MyText);

    }

}


TextView는 화면에 문자열을 출력하는 가장 기본적인 위젯이다. 이 위젯을 사용하려면 소스 선두에 TextView 클래스를 사용하겠다는 import 선언을 해야한다. onCreate에서 MyText 변수를 선언하고 new 연산자로 TextView 객체를 생성했다. 빈 문자열을 가진 상태로 초기화 되므로 setText 메서드를 호출하여 원하는 문자열을 대입해야 한다. setContentView 메서드로 전달하여 액티비티의 내용물을 TextView 객체로 채우면 TextView의 내용물인 문자열이 액티비티에 나타난다.

 

 

 

그러나 코드에서 모든 것을 처리하는 방식은 규모가 아주 작은 프로젝트에서나 편리하고 규모가 큰 프로젝트에서 이러한 방법은 코드 관리의 한계점을 지닌다.

 

따라서 XML 레이아웃을 사용한다.

장점은.

코드와 데이터가 완벽하게 분리되므로 개발자와 디자이너의 분담 작업이 용이하다.

조건에 따라 레이아웃을 통째로 교체할 수 있으므로 호환성 확보, 국제화에 유리하다.

레이아웃만 수정할 때는 코드를 컴파일하지 않아도 되므로 개발 속도가 빨라진다.

구조와 속성을 함축적으로 기술할 수 있으며 레이아웃 재활용도 가능하다.

 

XML 레이아웃은 용량이 큰 텍스트 파일이고 구조도 복잡해서 정확한 의미를 분석하는데 다소 시간이 걸린다. 그러나 XML레이아웃을 분석하는 작업은 컴파일시에 미리 수행되므로 성능상의 불이익은 전혀 없으며 분석된 결과는 이진 포맷으로 바뀌어 실행 파일에 포함되므로 용량상의 낭비도 없다.

 

실제 프로젝트에서는 코드 레이아웃과 XML 레이아웃을 둘 다 사용하여 때로는 두 방법을 동시에 적용하기도 한다. 디자인 타임에 결정되는 정적인 레이아웃주로 XML을 사용하고 실행 중에 결정해야 하는 동적인 레이아웃은 코드를 사용하는 것이 보편적이다.


 

 

728x90
Posted by 정망스
,
728x90

 setContentView의 인수로 전달된 R.layout.main은 구체적으로 main.xml 레이아웃 파일을 의미

 마법사가 프로젝트를 생성할 때 기본 레이아웃 파일을 만들어주는데 패키지 탐색기에서 res/layout 폴더 안의

 main.xml 파일을 열어보면 아래와 같은 GUI 디자인 뷰가 열린다.

 

 

이 화면에서 마우스로 레이아웃을 편집하고 확인 할 수 있다.

아래쪽의 main.xml을 클릭하면 텍스트 형태로 xml 파일을 보고 편집 할 수 있다.

 

 

xml 파일이다, xml 헤더가 있고 utf-8로 인코딩 되어 있다.

루트 엘리먼트에는 android 네임 스페이스(android:)가 정의 되어 있는데 네임 스페이스란 어휘의 중복을 방지하기 위한 xml 표준 장치이다. 모든 속성명 앞에 이 네임스페이스가 붙는다.

 

이 파일의 구조는 현재 리니어 레이아웃에 텍스트 뷰를 하나 배치하고 택스트 뷰에 @string/hello 를 출력하라는 뜻이다.

리니어 레이아웃은 가장 흔하게 사용되는 레이아웃이며 차일드를 수평, 수직으로 나란히 배열하는 컨테이너이다.

여기서 @은 리소스에서 ID를 참조하라는 뜻이다. @srting/hello는 values 폴더의 strings.xml 파일에 정의되어 있다.

 

 

GUI 편집 화면이 열리는데 직관적이고 사용하기 쉽다.

아래쪽의 strings.xml 탭을 누르면 텍스트 형태로 전환된다.

 

 

 

두 개의 문자열이 정의되어 있다.

hello 문자열은 뷰 안에 출력되고 app_name 문자열은 타이틀 바에 표시된다.

이 문자열을 수정한 후 재실행(ctrl+s, ctrl+F11)하면 바뀐 문자열이 화면에 나타난다.

코드나 xml 파일에서 참조하는 리소스 ID는 R.java 파일에 정의된다.

이 파일에는 상수를 정의하는 클래스만 잔뜩 선언되어 있으며 코드는 전혀 없다.

 

이 파일은 개발툴이 자동으로 관리하므로 개발자가 임의로 편집해서는 안 되며 그럴 필요도 없다.

R클래스 안에 종류별로 drawable, layout, string 등의 정적 클래스를 정의하고 그 안에 main, hello등의 상수가

정의되어 있다. 그래서 소스에서는 복잡한 16진수를 쓸 필요없이 R.layout.main이라고만 쓰면 된다.

 

R.java 파일에 정의된 16진수의 실제값인 0x7f030000 등은 리소스 간의 구분을 위해 붙이는 일련 번호이며 개발툴이 알아서 관리한다. 내부적인 규칙에 의해 값이 중복되지 않도록 관리할 것이다. 값 자체는 큰 의미가 없기 때문에 몰라도 상관없으며 코드에서 Icon, main, hello 같은 명칭만 잘 사용하면 된다.

 

 

 

728x90
Posted by 정망스
,


맨 위로
홈으로 ▲위로 ▼아래로 ♥댓글쓰기 새로고침