상세 컨텐츠

본문 제목

안드로이드 레이아웃 뷰(view) 규칙 설정 테그내용 등등~

스마트기기개발관련/안드로이드 개발

by AlrepondTech 2011. 5. 31. 10:39

본문

반응형


난 정말로 안드로이드 어플리케이션을 개발할 때는 자바만 쓰는 줄 알았다.

안드로이드에 대해서 들을때 커널을 제외하고 달빅(Dalvik) 가상머신을 이용해서 자바로 구현되었다고 하기에 자바를 위주로 생각했었는데 막상 안드로이드를 접하고 나니 아니었다. XML도 필수! 라는 것.

스마트폰 어플리케이션이기 때문에 일단 눈에 보이는 UI는 거의 필수이다. 필요 없는 간단한 어플도 있지만 대부분 UI가 필요하다. 그래서 일단 UI부터 공부해 보기로 했다. UI가 좀 익숙해 지면 이제 슬슬 자바코드하고 같이 연동해 가면서 작성해 봐야겠다는 생각을 가지며 일단 레이아웃에 대해 알아보았다.

안드로이드의 화면

안드로이드의 화면을 구성해주는 주요 단위는 액티비티(Activity)이다. 그러나 액티비티 자체는 화면에 보이는 실체가 아니다. 액티비티는 개념이며 실체는 뷰(View)라는 것이 담당한다. 뷰가 여러개가 모여 화면을 구성하면 그 자체가 액티비티인 것이다. 그리고 이런 액티비티들이 모여 어플리케이션이 완성이 된다.

레이아웃은 거의 XML로 작성을 하는게 편하지만 역시 레이아웃과 뷰들도 자바의 클래스로 만들어졌다.때문에 기존의 자바처럼 상속관계가 있으며, 상속관계가 있는 덕분에 상위계층의 속성들도 잘 알아둬야 한다. 그래야 속성을 이용해서 레이아웃을 구성하니까...

View

View의 계층





View 계층의 클래스 이름은 직관적으로 작성되었다. 클래스 이름만 봐도 무엇을 할 것이라는 것을 알 수 있다. 이 계층구조를 전부 알 필요는 없다. 단지 자주 쓰는 것이 어떤 구조로 이뤄졌었다는 것만 알고 있다면 코드를 작성할 때 이해가 쉬울 것이다.

View의 속성

id

뷰를 칭하는 이름을 정의한다. 모든 뷰에 id가 필요하진 않다. @ 기호는 id를 리소스에 정의하거나 참조한다는 뜻이고 + 기호는 ID를 새로 정의한다는 뜻이다. id는 예약어이고 / 뒤에 원하는 이름으로 작성한다.

) android:id=”@+id/name”

layout_width, layout_height

뷰의 폭과 높이를 지정한다. 아래와 같은 속성 값을 가진다.

- fill_parent: 상위 항목의 크기를 모두 채운다.

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

- 지정 크기: 지정한 크기만큼 채운다.

단위는 다음과 같다.

표시

단위

px

픽셀

in

인치

mm

밀리미터

pt

포인트

dp

해상도에 독립적인 단위

sp

폰트 가변 크기

background

뷰의 배경을 어떤 색상으로 채울 것인가

padding

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

visibility

가시성을 지정한다.

- visible: 보이는 상태

- invisible: 보이지 않지만 있는 것

- gone: 저 멀리 떠나서 보이지도 않고 있지도 않는 것

focusable

키보드의 커서를 받는 것에 대해서 지정한다. 아무 설정을 하지 않는다면 받지 않도록 되어있다.

true일 경우, 키의 입력을 받을 수 있다.

clickable, longClickable

이벤트를 받을 것인지를 지정한다. clickable은 한 번 클릭하는 경우이고 longClickable은 꾸욱 누르고 있는 경우이다. true, false 중 하나를 선택해야 한다.

TextView의 속성

화면에 텍스트를 출력하는 위젯이다. 사용자의 입력은 받아들일 수 없다.

text

가장 중요한 속성인데 문자열을 지정하는 역할이다.

형식

설명

문자열

문자를 바로 대입한다.

@[패키지:]type:name

strings.xml에 문자열로 정의해 놓고 지정한다. @string/id 식으로 지정한다.

?[패키지:][type:]name

테마 속성으로 지정한다.

textcolor

문자열의 색상을 지정한다.

textSize

폰트 크기에 따라 가변적인 sp단위를 쓰는 것이 가장 합리적이다.

textStyle

폰트의 속성을 지정한다. normal, bold, italic 중 하나를 쓰거나 | 로 묶어 두 개 이상의 상수 값을 지정할 수도 있다.

typeface

글꼴의 모양을 지정한다.

width, height

텍스트 뷰의 폭과 높이이며 크기값과 단위를 같이 지정한다. 실무에선 거의 사용되지 않는다.

singleLine

텍스트가 위젯의 폭보다 더 길 때 강제로 한 줄에 출력하도록 한다. 한 줄에 다 표현하려면 true

ImageView의 속성

src

출력할 이미지를 지정하는 가장 중요한 속성. 지정해 놓은 이미지의 이름을 @drawable/ID 형식으로 이미지의 아이디를 지정한다.

maxHeight, maxWidth

이미지가 출력될 최대 크기를 지정한다.

adjustViewBounds

뷰의 종횡비를 맞추기 위해 이미지를 조절할 것인가를 정한다. true가 조정하는 것

cropToPadding

true일 경우 위젯의 주어진 여백에 맞추기 위해 이미지의 일부를 잘라낸다.

tint

이미지에 색조를 입힌다. #aarrggbb형식으로 색상을 지정한다.

scaleType

이미지의 원래 크기와 다르게 출력할 때 적용할 확대, 축소 알고리즘을 지정한다. matrix, fitXY, center, centerCrop, centerInside 등의 여러 가지 알고리즘 중 하나를 지정한다.

이미지의 위치

res/drawable-hdpi(240정도), mdpi(160정도), ldpi(120정도)

이미지는 가능한 소문자로 하도록 하자. 대 소문자를 구별하기 때문에 혼란을 피하기 위해서이다.

Button

사용자가 클릭해 명령을 내릴 수 있다. 매우 흔한 뷰이며 속성은 대부분 상속받은 것들이라서 고유 속성은 없다.

EditText

문자열을 입력받는다. TextView를 상속받아 거의 같은 속성을 사용하고 문자열을 편집하기 위한 메서드들이 제공된다.

사용 예)

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>

// 이미지 뷰

<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/pride"
/>

// 버튼

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn"
android:text="Push button"
/>

// 텍스트뷰

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Good Morning"

android:textColor="#8000ff00"

android:textSize="5mm" android:typeface="serif" />

</FrameLayout>

[출처] 레이아웃 - 뷰(View)|작성자 녹차


반응형


관련글 더보기

댓글 영역