본문 바로가기

Android

Android UI

1. 안드로이드 UI 기본

1) UI 설계 개요

 

2) View

  • 안드로이드 앱의 UI를 구성하는 기본 단위

 

3) 위젯

  • View의 서브 클래스, 앱 화면을 구성하는 시각적인 모양을 지닌 UI 요소
  • ex. 버튼, 메뉴, 리스트

 

4) 레이아웃

  • ViewGrop의 서브 클래스
  • 다른 뷰를 포함하면서 이들을 정렬하는 기능을 지닌 UI 요소

 

 

2. 위젯

1) 위젯

  • View의 서브 클래스 중 화면의 보이는 것들
  • TextView, EditText, Button, ImageView, ImageButton, SurfaceView 등등

 

2) View

  • 모든 UI 컴포넌트들의 부모 클래스
  • 모든 UI 컴포넌트들에서 공통적으로 사용 할 수 있음
  • id : UI 컴포넌트를 고유하게 식별하는 식별자
android:id = “@id/my_button”
android:id = "@+id/my_button"

 

layout_width, layout_height

  • match_parent : 부모 UI 컴포넌트의 크기에 맞춤
  • wrap_content : UI 컴포넌트의 내용물 크기에 맞춤
  • px, in, mm : 해상도에 따라 view 크기 달라보임
  • dp : 밀도에 독립적인 단위, 해상도와 상관없이 다룰 수 있음

 

textView

  • textface : 텍스트 폰트 (normal, sans, serif, monspace)
  • singleLine : 속성값이 true면 텍스트가 위젯의 폭보다 길 때 강제로 한 줄에 출력

 

EditText

  • inputType : 입력 시 허용되는 키보드 타입 + 키보드 행위 설정
    • 키보드 타입 : “text”, “phone”, “textEmailAddress”
    • 키보드 행위
      • “textCapWords” (문장 시작 대문자로)
      • “textAutoCorrect”(입력된 단어와 유사한 단어 제시)
      • “textMultiLine” (여러 줄 입력 받음)

 

Button

  • 이벤트 처리
    • onClick 속성 활용 → 액티비티 클래스에 새로운 메소드 추가
    • 객체 이용 → setOnClickListener 활용

 

ImageView

  • 사용방법
    • layout 리소스 xml 파일에 ImageView 추가
    • 화면에 표시할 이미지 Drawable 리소스에 추가 (대부분 png)
    • ImageView의 src 속성에 지정
android:src = "@drawable/android_icon"

 

  • 이미지 확대, 축소
    • android:scaleType = “Ceneter” : 이미지 중앙을 ImageView의 중심에 맞춤

  • android:scaleType = "fitXY” : 이미지에 상관없이 꽉 차게 보여줌

 

 

 

3. 레이아웃

 

1) LinearLayout

  • 컨테이너에 포함 된 뷰들을 수평, 수직으로 일렬 배치하는 레이아웃
  • LinearLayout의 자식으로 배치되는 View 위젯은 오직 한 방향으로만 배치
  • 크기와 관계 없이 한 줄로만 배열
  • 중첩 X

 

 

  • layoutWeight : 자식들이 배치될 때 전체 영역 대비 비율의 개념으로 가중치 설정

 

 

2) Relative Layout

  • 뷰를 서로 간의 위치 관계나 컨테이너와의 위치 관계를 지정하여 배치하는 레이아웃
  • RealtiveLayout 자체가 상대적 위치의 기준점으로 사용 가능
  • 중첩 O

 

  • 속성

 

 

3) Table Layout

  • 표 형식으로 차일드를 배치하는 레이아웃
  • 자식 View 위젯들을 테이블(행과 열)로 나누어 표시

 

  • layout_height : 항상 wrap_content
  • layout_width : 항상 match_parent

 

4) Frame Layout

  • 컨테이너에 포함된 뷰들을 전부 좌상단에 배치하는 레이아웃
  • 하나의 자식 View 위젯만 자식으로 추가하면 겹쳐진 형태로 표시
  • 가장 최근에 추가한 View 위젯이 가장 상위

 

 

5) Constraint Layout

  • 제약 조건을 사용해 화면을 구성하는 방법
  • 형제 View들 과의 관계를 정의해서 레이아웃 구성
  • Releative Layout 보다 유연하고 다양한 기능 제공

 

  • Constraint 분류

 

 

 

4. Margin/Padding/Gravity

 

1) Margin

  • 뷰와 다른 뷰 간의 간격
  • layout_margin : 상하좌우로 동일한 마진 설정
  • layout_marginLeft, layout_marginRight, layout_marginTop, layout_marginBottom

 

2) Padding

  • padding : 상하좌우로 동일한 패딩 설정 시에 사용
  • paddingLeft, paddingRight, paddingTop, paddingBottom

 

3) Margin & Padding 모두 적용

 

 

4) Gravity

  • gravity : 해당 뷰 안의 내용물 위치에 대한 정렬 방식 지정
  • layout_gravity : 부모 뷰 안에서 해당 뷰의 정렬 방식 지정

 

 

5. 스타일 및 테마

 

1) Style

  • View or 창의 모양과 형식을 지정하는 속성 모음
  • 레이아웃을 지정하는 xml과 별개인 xml 리소스에 저장

 

//xml 코드
<TextView
	style="@style/RedTextView"/>

 

2) Theme

  • 개별 View가 아니라 전체 Activity or 애플리케이션에 적용되는 스타일
  • 스타일이 테마로 적용된 경우 액티비티 or 애플리케이션에 포함된 모든 뷰가 자신이 지원하는 각 스타일 속성 적용

 

'Android' 카테고리의 다른 글

Selector  (0) 2023.08.08
Font 변경  (0) 2023.08.04
ImageView 이미지 넣기 (코드)  (0) 2023.08.03
registerForActivityResult  (1) 2023.08.03
Android Activity와 Intent  (3) 2023.08.02