1. 뷰(View) : 일반적으로 컨트롤이나 위젯이라는 이름으로 불리는 UI 구성 요소
2. 뷰그룹(ViewGroup) : 이러한 뷰들을 여러 개 포함하고 있는 것
3. 위젯(Widget) : 뷰 중에서 일반적인 컨트롤의 역할을 하고 있는 것
4. 레이아웃(Layout) : 뷰그룹 중에서 내부에 뷰들을 포함하고 있으면서 그것들을 배치하는 역할을 하는 것
*자주 사용되는 대표적인 뷰의 속성
속성 |
설명 |
layout_width, layout_height |
뷰의 폭과 높이를 설정합니다. |
id |
뷰의 ID를 지정합니다. |
background |
뷰의 배경을 설정합니다. |
1) layout_width, layout_height
① match_parent : 무조건 남아 있는 여유 공간을 채움.
② wrap_content : 뷰에 드어 있는 내용물의 크기에 따라 뷰의 크기를 결정
③ 정수값 : 크기를 고정된 값으로 만들고 싶을 때 사용
*프로요(2.2) 버전부터는 fill_parent 속성이 아니라 match_parent 속성을 사용함.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<Button
android:id="@+id/button01"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Button01"
/>
</LinearLayout> |
cs |
*뷰의 크기를 정수값으로 지정하는 경우
단위 |
단위 표현 |
설명 |
px |
픽셀 |
화면 픽셀 |
dp 또는 dip |
밀도 독립적 픽셀 (density independent pixel) |
160dip 화면을 기준으로 한 픽셀 예) 1인치 당 160개의 점이 있는 디스플레이 1dp는 1px와 같음. 1인치 당 320개의 점이 있는 디스플레이 화면에서 1dp는 2px와 같음. |
sp 또는 sip |
축척 독립적 픽셀 (scale independent pixel) |
가변 글꼴을 기준으로 한 픽셀로 dp와 유사하나 글꼴의 설정에 따라 달라짐 |
in |
인치 |
1인치로 된 물리적 길이 |
mm |
밀리미터 |
1밀리미터로 된 물리적 길이 |
em |
텍스트 크기 |
글꼴과 상관없이 동일한 텍스트 크기 표시 |
- 이 단위들은 뷰의 크뿐만 아니라 텍스트의 크기를 지정하는 데도 사용됨.
- 특히 'sp' 또는 'sip'는 글꼴을 기준으로 한 텍스트 크기를 나타내므로 뷰의 크기에는 사용되지 않음.
- 뷰의 크기를 해상도에 비례하여 비슷한 크기로 보이게 하려면 'dp'나 'dip'를 단위로 사용할 수 있음.
- 마켓에 올리는 실제 앱의 화면을 구성할 때는 'dp' 단위를 주로 사용하게 됨.
2) ID
- 인플레이션(Inflation) : 눈에 보이지는 않지만 프로젝트 파일이 빌드될 때 XML 레이아웃에 정의된 정보는 내부적으로 해석되어 자바 코드에서 new 연산자로 객체를 만드는 것처럼 동일하게 객체를 만들게 됨. → 메모리에 객체로 만드는 객체화 과정.
- 자바 코드에서는 메모리의 어느 위치에 객체가 만들어져 있는지 알 수 없으므로 ID를 지정한 후 이 ID를 이용해 자바 코드에서 객체를 찾아냄.
- XML 레이아웃에 정의된 뷰의 id 속성은 자바 코드 상에서 참조될 수 있으며 R.id.[ID]와 같은 형태로 참조함.
- ID는 각 뷰 객체의 메모리 상 포인터와 같은 개념으로 생각할 수 있는데 이 때 XML 레이아웃에서 사용하는 형식은 '@+id/...'가 됨. (+기호는 새로운 ID를 추가하는 의미로 사용되지만 복잡하게 생각할 것 없이 사용자가 새로 정의하는 뷰의 ID 값은 항상 이런 형식을 사용한다고 생각해도 무방함)
- 나중에 ID 값을 참조할 경우에는 '@id/...' 형식으로 참조할 수도 있음.
1
2
3
4
5
6
7
8
9
10
11
12 |
public void onButton1Clicked(View v) {
setContentView(R.layout.linear_layout);
Button button1 = (Button) findViewById(R.id.button01);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "버튼이 클릭되었습니다.", Toast.LENGTH_LONG).show();
}
}); |
cs |
3) background
- XML 레이아웃에서 색상을 지정할 때는 '#'기호를 앞에 붙인 후 ARGM(A: Alpha, R: Red, G: Green, B: Blue)의 순서대로 색상의 값을 기록함.
- 16진수 값을 지정할 때는 여러 가지 포맷을 사용할 수 있는데 색상을 기록하는 방법은 다음과 같음.
[Format]
#RGB #ARGB #RRGGBB #AARRGGBB |
예)
#ff0000 : 빨간색
#00ff00 : 녹색
#ffff0000 : 빨간색
#88ff0000 : 반투명 빨간색
#00ff0000 : 투명색
출처 : Do It! 안드로이드 앱 프로그래밍 (정재곤 지음, 이지스퍼블리싱)
'Programming > Android' 카테고리의 다른 글
스크롤뷰 (0) | 2017.01.17 |
---|---|
테이블 레이아웃 (0) | 2017.01.17 |
상대 레이아웃 (0) | 2017.01.17 |
리니어 레이아웃 (0) | 2017.01.16 |
레이아웃 (0) | 2017.01.16 |
인텐트와 데이터 전달 (0) | 2017.01.08 |
화면 구성과 화면 간 이동 (0) | 2016.12.25 |
[안드로이드] 안드로이드에서 제공하는 대표적인 레이아웃 (0) | 2016.12.20 |