Hayden's Archive

[Android] Activity와 View / View의 종류 및 속성 본문

Study/ETC

[Android] Activity와 View / View의 종류 및 속성

_hayden 2021. 5. 19. 23:40

참고 : 한국방송통신대학교 모바일앱프로그래밍 교재( https://press.knou.ac.kr/goods/textBookView.do?condCmdtCode=9788920035999&condLscValue=001&condYr=&condSmst= )

 


1. Activity와 View

  • Acitivity
    • 안드로이드 앱의 각 화면을 구성하는 단위
    • 액티비티 자체는 화면에 직접적으로 보이지 않으며 액티비티 안의 View가 사용자에게 보이는 실체를 구현하게 됨.
    • 여러 개의 View가 모여서 액티비티 하나를 구성하고, 액티비티 여러 개가 모여서 하나의 안드로이드 앱을 구성하는 구조
  • View
    • View의 파생 클래스 개수는 방대하며, 각 클래스가 지원하는 속성이나 기능이 굉장히 많음
      • 외우는 것은 불가함. 안드로이드 애플리케이션의 작동 원리를 익히고, 상황에 맞게 필요한 뷰를 개발자 문서를 참조하여 익히는 습관을 들이기.

 


2. View의 종류

  • ViewGroup
    • 직접적으로 보이지 않으며 다른 View를 담는 쟁반 역할을 함. 여러 개의 View를 유기적으로 모아놓기 위한 수단.
    • 다른 뷰들을 정렬하거나 위치시키는 역할을 하므로 레이아웃이라고 함.
    • 일반적으로 주로 사용되는 역할에 따라 위젯과 ViewGroup으로 나눔
      • 하지만, 어떤 클래스는 ViewGroup이면서도 위젯처럼 사용되기도 함.
        • ListView : 항목의 집합을 표시함. 다른 View를 포함하는 ViewGroup이면서, 사용자에 직접적으로 보이기도 함. 단순 위젯에 비해 여러 개의 View가 모여서 구현되며 많은 기능으로 인해 상대적으로 사용하기 어렵고 복잡함.

  • 위젯
    • 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가 숨겨진 상태이며 자리도 차지하지 않음
        • 완전히 사라진 상태.

 


  • focusable 속성
    • 키보드 포커스 허용 여부를 지정
    • 기본값은 false임
      • 하지만 EditText나 Button처럼 사용자의 입력을 받아야 하는 파생 클래스는 focusable 속성의 디폴트가 true