Hayden's Archive
[Android] Activity와 View / View의 종류 및 속성 본문
참고 : 한국방송통신대학교 모바일앱프로그래밍 교재( https://press.knou.ac.kr/goods/textBookView.do?condCmdtCode=9788920035999&condLscValue=001&condYr=&condSmst= )
1. Activity와 View
- Acitivity
- 안드로이드 앱의 각 화면을 구성하는 단위
- 액티비티 자체는 화면에 직접적으로 보이지 않으며 액티비티 안의 View가 사용자에게 보이는 실체를 구현하게 됨.
- 여러 개의 View가 모여서 액티비티 하나를 구성하고, 액티비티 여러 개가 모여서 하나의 안드로이드 앱을 구성하는 구조
- View
- View의 파생 클래스 개수는 방대하며, 각 클래스가 지원하는 속성이나 기능이 굉장히 많음
- 외우는 것은 불가함. 안드로이드 애플리케이션의 작동 원리를 익히고, 상황에 맞게 필요한 뷰를 개발자 문서를 참조하여 익히는 습관을 들이기.
- View의 파생 클래스 개수는 방대하며, 각 클래스가 지원하는 속성이나 기능이 굉장히 많음
2. View의 종류
- ViewGroup
- 직접적으로 보이지 않으며 다른 View를 담는 쟁반 역할을 함. 여러 개의 View를 유기적으로 모아놓기 위한 수단.
- 다른 뷰들을 정렬하거나 위치시키는 역할을 하므로 레이아웃이라고 함.
- 일반적으로 주로 사용되는 역할에 따라 위젯과 ViewGroup으로 나눔
- 하지만, 어떤 클래스는 ViewGroup이면서도 위젯처럼 사용되기도 함.
- ListView : 항목의 집합을 표시함. 다른 View를 포함하는 ViewGroup이면서, 사용자에 직접적으로 보이기도 함. 단순 위젯에 비해 여러 개의 View가 모여서 구현되며 많은 기능으로 인해 상대적으로 사용하기 어렵고 복잡함.
- 하지만, 어떤 클래스는 ViewGroup이면서도 위젯처럼 사용되기도 함.
- 위젯
- ViewGroup가 달리 직접적으로 보이며, 사용자 인터페이스를 구성하는 역할.
- 모든 위젯이 View 클래스로부터 파생되므로 뷰라고 부르기도 함.
- 스스로 그릴 수 있는 능력을 가지고 있고, 사용자들과 직접적인 상호작용을 이끌어내며, 상호작용의 결과를 표현하기 위해서도 사용됨.
- 사용자로부터 입력된 값을 JAVA 코드로 받아 처리하여 다시 위젯을 통해 사용자에게 출력
- 대표적인 위젯 : Button, TextView, EditView, RadioButton 등
3. View의 속성
안드로이드 애플리케이션의 데이터 영역은 XML 파일을 이용하여 정의하며, XML은 요소(Element)와 속성(Attribute)을 통하여 데이터를 구조적으로 표현하는 마크업 언어임.
- id 속성
- View의 이름을 정의하는 속성
- JAVA 코드나 XML 문서에서 View를 참조할 때 ID를 사용하므로 의미를 잘 설명할 수 있는 직관적인 이름을 붙이는 게 좋음
- 직관적인 이름 -> 코드의 이해도나 가독성을 높이고, 애플리케이션 구모가 커질수록 개발 난이도를 낮춤
- id 속성을 구성하는 세부 요소
- @ : ID를 R.java에 정의하거나 R.java를 참조할 때 사용
- + : ID를 새로 정의한다는 의미이며, 처음 정의할 때만 사용하고 참조할 때는 사용하지 않음
- id/ : 안드로이드 개발에 반드시 사용되어야 함
- ID : id/ 이후에 나오는 요소로써 id의 값이다. 고유한 값이므로 명칭 규칙에 맞아야 하며 View끼리 중복되어서는 안 됨
예시1) Button에 button이라는 id를 부여하기 위해 다음과 같이 정의
android:id="@+id/button"
예시2) Button에서 textView라는 id의 View에 접근하기 위해 다음과 같이 정의
android:layout_below="@id/textView"
- clickable과 longClickable 속성
- 클릭을 가능하게 할 것인지 정의하는 속성
- 버튼과 관련된 뷰는 이 속성이 기본으로 활성화되어 있음
- clickable : 마우스 클릭 이벤트 허용 여부를 정의
- longClickable : 롱 클릭 이벤트(뷰를 오랫동안 누르고 있는지)에 대한 허용 여부를 정의
- background 속성
- View의 배경을 채우는 방법을 지정하는 속성
예시1) 이미지로 배경 채우기
android:background="@mipmap/ic_launcher"
예시2) 색상으로 배경 채우기
android:background="#ffff1326"
- padding 속성
- View와 그 뷰의 내용물과의 간격을 지정하는 속성
- View의 안쪽 여백이며, TextView의 경우 TextView 자체와 중앙의 텍스트 사이에 padding 속성값만큼의 여백이 삽입됨
- android:padding, android:paddingLeft, android:paddingTop, android:paddingRight, android:paddingBottom
- visibility 속성
- 화면에 View의 표시 여부를 지정하는 속성
- 런타임에서도 변경 가능하므로 특정 뷰를 실행 시에 필요할 때만 보이거나 숨길 수 있는 기능을 쉽게 구현 가능
- visibility의 속성값
- visible
- View가 보이는 상태(디폴트)
- invisible
- View가 숨겨진 상태이지만 자리는 차지
- 일시적 투명 상태. 화면에는 보이지 않지만 자리는 여전히 차지하므로 gone과 다름
- gone
- View가 숨겨진 상태이며 자리도 차지하지 않음
- 완전히 사라진 상태.
- visible
- focusable 속성
- 키보드 포커스 허용 여부를 지정
- 기본값은 false임
- 하지만 EditText나 Button처럼 사용자의 입력을 받아야 하는 파생 클래스는 focusable 속성의 디폴트가 true