반응형
1. View 소개
Activity 와 View의 관계
Activity개요
- Activity는 안드로이드 앱의 각 화면을 구성하는 단위임
- Activity 자체는 독립적으로 화면에 보이지 않음
- Activity가 포함하는 View들이 사용자에게 보이는 실체(XML 구조의 코드 : 데이터 부분-1강 참조)
- 안드로이드 앱은 여러 개의 View가 모여서 하나의 Activity를 구성함
- Activity 여러 개가 모여서 하나의 안드로이드 앱을 구성하는 구조로 되어 있음
- View를 구현하는 JAVA 클래스는 다수의 속성과 메소드를 가지고 있지 만, View는 개발의 용이성을 위해 데이버 부분에서 XML 구조를 통해 구현함
View의 종류
- View는 크게 위젯(Widget)과 레이아웃(Layout)으로 구분됨
- 위젯은 사용자와 상호작용을 위한 인터페이스 역할
- 레이아웃은 이러한 위젯을 화면에 정렬하며 배치하는 역할
- 위젯은 레이아웃에 포함되고 레이아웃은 다른 레이아웃의 하위 구성요소로 포함될 수 있음
위젯(Widget)과 레이아웃(Layout)
- 하나의 화면을 구성하는 View들(위젯과 레이아웃)은 트리구조 형태로 연결됨
- 하나 이상의 Activity가 최상위 레이아웃을 참조하여 화면을 그리게 됨
- 하지만, 위젯과 레이아웃의 구분은 불명확해지고 있으며 레이아웃이면서 위젯의 특징을 가지고 있는 경우도 있음
위젯
- 스마트폰 화면에서 사용자 인터페이스를 구성하는 역할을 하는 위젯은 View 클래스로부터 파생되며, 간단하게 View라고 부르기도 함
- TextView, EditView, Button, RadioButton 등이 대표적인 위젯임
- 스스로 화면에 특정 내용을 출력할 수 있는 능력을 가지고있음
- 사용자들과 직접적인 상호작용(사용자 인터페이스; UI)을 이끌어 내고, 상호작용의 결과를 JAVA 코드에 전달하여 다른 위젯이 가진 UI(User Interface)에 출력하기도 함
레이아웃
- View를 담는 쟁반 역할을 하는 레이아웃은 ViewGroup 클래스로 구현됨
- 위젯과 레이아웃은 레이아웃에 담겨 출력될 수 있음
- 대부분의 ViewGroup 파생 클래스들은 화면에 보이지 않으면서 다른 View들을 유기적으로 모아 두는 쟁반 역할만 수행하는 것이 기본 기능임
레이아웃 예)
- 특정 ViewGroup 클래스는 화면에 리소스를 출력하면서 위젯 역할도 수행함 : 대표적인 예로 하위 View들을 순차적으로 배치하는 ListView 가있음
- ListView는 단순 위젯 대비 많은 기능을 가지고 있어 상대적으로 사용 방법과 절차가 어렵고 복잡함
위젯과 레이아웃(ViewGroup)
2. View 속성 1
id 속성
- View의 이름을 정의하는 것이 id 속성임
- JAVA 코드나 XML 문서에서 View를 참조할 때 ID 속성값을 사용하므로 View의 유형과 목적을 나타내는 직관적인 이름을 붙이는 것이 좋음
- 직관적인 ID 속성값의 사용은 JAVA 코드의 이해도나 가독성을 높여 주며, 앱의 규모가 커질수록 복잡해지는 소스 코드를 구조적으로 관리하는 것을 도와줌
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button" />
</LinearLayout>
“@+id/ID” id 속성을 구성하는 세부 요소
- @ : id를 R.java에 등록하거나 R.java로부터 참조할 때 사용됨
- +:ID를 새로 정의 한다는 의미이며, 처음 정의할 때만 사용하고 참조할 때는 사용하지 않음
- id/ : 안드로이드 개발에 반드시 사용되어야 함
- ID : id/ 이후에 나오는 요소로 ID 속성값(이름)임. 고유한 값으로 지정하여 View들 사이의 중복을 피하고 명칭 규칙을 준수해야 함
사용 예시
- 예를 들어, Button 위젯을 대상으로 button 이라는 id(이름)를 부여하기 위해서는 다음과 같이 정의할 수 있음
android:id="@+id/button"
- Button에서 textView라는 id를 가진 View에 접근하기 위해 다음과 같이 정의할 수 있음
android:layout_below="@id/textView"
- “button”이나 “textView”와 같이 View의 유형을 나타낼 수 있는 직관적인 이름을 ID 속성값으로 사용하는 것이 좋음
2. background 속성
- View의 배경을 이미지로 채우는 방식과 배경에 대한 정보를 정의하는 속성임
- 별다른 지정이 없다면 View에서 제공하는 기본 배경으로 채워지게 됨
- 단순한 색상 뿐만 아니라 여러가지 객체로 배경을 지정할 수 있는 방법을 제공함
<Button
...
android:background="@mipmap/ic_launcher"
...
/>
화면에 버튼을 출력하는 예제
- background 속성에 ic_launcher라는 id를 가진 이미지를 사용하고 있음
- ic_launcher를 background 속성에 대입하면 버튼의 기본 회색 모양이 사라지고 지정한 이미지로 Button의 배경이 변경됨
색상을 채워 넣는 방법
- background 속성에 이미지가 아닌 색상을 채워 넣는 방법도 있음
- background로 채울 색상을 지정하기 위해서 ‘#’ 기호로 시작되는 색상코드를 사용함
- 안드로이드에서 사용 가능한 색상 코드의 유형 네가지는 다음과 같음
#RGB
#ARGB
#RRGGBB
##AARRGGBB
색상을 지정하는 예제
- 웹에서 흔히 사용되는 표준화된 방식으로 ‘#’다음에 16진수로 각색 구성 요소의 강도를 지정할 수 있음
- 각 색 구성요소는 투명도(A), 빨강(R), 초록(G), 파랑(B)의 의미를 갖음
- background 속성에 #AARRGGBB 방식으로 ffff1326 값이 적용됨
3. rotation 속성
- rotation은 뷰의 각도를 설정하는 속성임
- 속성값으로 “1.2”와 같이 실수를 입력받음
- JAVA 코드에서 setRotation(float) 함수를 통해 수정할 수 있음
- 0.0부터 360.0 사이의 각도 정보를 입력받음
- 유사한 속성으로 rotationX와 rotationY가 있음
- rotationX는 수평으로 기울어지는 각도를 결정하고 rotationY는 수직으로 기울어지는 각도를 결정함
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView1"
android:src="@mipmap/ic_launcher"
android:layout_margin="30dp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView2"
android:src="@mipmap/ic_launcher"
android:layout_margin="30dp"
android:rotation="45" />
</LinearLayout>
- LinearLayout 내에 2개의 ImageView를 정의하고 20번 줄과 같이 두 번째 ImageView에 rotation 속성값을 45로 설정함
- 그 결과 두 번째 ImageView의 각도가 45도 기울어진 형태로 출력됨
3. View 속성 2
1. padding 속성
- Padding 속성은 View와 View의 콘텐츠 사이의 간격을 지정하는 속성 임
- View의 안쪽 여백이며, TextView의 경우 TextView 자체와 중앙의 텍스트 사이에 padding 속성값만큼의 여백이 삽입됨
- padding 속성은 한글 워드프로세서에서 표의 안쪽 여백이라고 생각하면 됨
- padding 속성에 값을 지정하면 네 방향에 대해 동일한 여백이 적용됨
- 각 방향에 개별적으로 여백을 주기 위해서는 paddingLeft, paddingRight, paddingTop, paddingBotton 속성을 사용할 수 있음
2. visibility 속성
- visibility 속성은 화면에 View의 표시 여부를 지정하는 속성임
- 일반적으로 View는 사용자와 상호작용하는 역할을 하므로 별다른 지정이 없으면 보이는 상태로 배치되지만, 이 속성을 사용하면 Activity 내 View의 표시 여부를 동적으로 변경할 수있음
- visibility 속성을 이용하여 Activity의 실행 중에 특정 조건이나 이벤트에 따라 View를 보이게 하거나 숨길 수 있음
visibility 속성 종류
- invisible 속성값은 화면에 보이지는 않지만 ViewGroup 내부에서 공간을 여전히 차지한다는 점이 gone과 다름
- gone 은 화면에 출력되지도 않고 자리도 차지하지 않게 하는 속성값
3. focusable
- focusable 속성은 View를 대상으로 포커스 기능의 사용 가능 여부를 지정하는 속성임
- 안드로이드에서 포커스는 Activity에 구성된 다양한 View들 중 사용자가 선택한 View를 구분하여 표시하고 상세 기능이 활성화되는 기능임
- View 클래스 자체는 기본값이 포커스를 받을 수 없는 false로 설정되어 있음
- 일반적인 View에서 사용자와의 상호작용으로 문자열을 입력 받으려면 focusable 속성의 속성값을 true로 정의해야 함
- 반대로 EditText나 Button 처럼 사용자와의 상호작용을 기본적인 기능으로 하는 위젯들은 focusable 속성의 기본값이 true로 지정되어 있음
4. alpha 속성
- alpha 속성은 View의 투명도를 의미함
- alpha의 속성값으로 0.0~1.0 사이의 실수값을 가짐
- 값이 높아질수록 View는 선명해지며, 값이 낮아질수록 View가 투명해 짐
- JAVA 코드에서 setAlpha(float) 함수를 통해 수정할 수 있음
정리
- Activity : 안드로이드 앱의 화면을 구성하는 컴포넌트이며 여러 개의 View로 구성됨
- View : 안드로이드의 사용자 인터페이스를 구성하는 핵심으로서 화 면상의 사각 영역에 자신의 모양을 그리고 사용자의 입력을 받아들이 는객체
- 위젯 : 사용자의 인터페이스를 구성하는 역할을 하며, 스스로 화면에 특정 내용을 출력할 수 있는 능력을 가지고 있음
- id 속성: View의 이름 정의하는 속성
- View의 속성 : id, background, rotation, padding, visibility, focusable, alpha
- • background 속성 : View의 뒷배경을 정의하는 속성
• rotation 속성 : View의 기울기를 정의하는 속성
• visibility 속성 : View의 화면 출력여부를 정의하는 속성
• focusable 속성 : View의 포커스 가능여부를 정의하는 속성
• alpha 속성 : View의 투명도를 정의하는 속성 - padding : View와 View의 콘텐츠 사이의 간격을 지정하는 속성
자료 출처: 모바일앱프로그래밍 - 정광식,유헌창 공저 | 한국방송통신대학교출판문화원 | 2023
반응형
'방통대' 카테고리의 다른 글
방통대 모바일앱프로그래밍 기말고사 대비 연습문제 풀이 (0) | 2024.05.07 |
---|---|
방통대 모바일앱프로그래밍 2019-1 기말고사 기출문제 문제와 해설 (PDF 문제지 다운로드) (0) | 2024.05.06 |
안드로이드 프로젝트와 앱의 동작 원리 (1) | 2024.05.06 |
해리스 테크놀로지 LHX 저평가된 배당주 (0) | 2022.07.30 |
알트리아 배당금 예측 (0) | 2022.07.30 |