Prologue

Android 가볍게 보는 특징

  • Google에서 만든 모바일 운영체제
  • 가장 많이 사용하는 OS
  • 오픈소스
  • 다양한 라이브러리 지원
  • 개발 접근이 용이
  • 빈번한 SDK 업그레이드

Subject

최근 이슈

최근에 구글과 오라클의 소송에서 구글이 패배함으로써 자바가 위협을 받고 Kotlin이 대두되고 있습니다. SOPT에서는 Kotlin을 이용하여 안드로이드 개발을 배우고 세미나를 진행합니다.

Kotlin의 특징

  • 자동 형 변환 기능을 허용하지 않는다. [타입이 다르면 반드시 형 변환을 해야 한다.]
  • NPE에 대응 [NPE = Null Pointer Exception]
  • 뛰어난 자바와의 호환성
  • 표현이 자바에 비해 훨씬 간결
  • 문장 끝에 세미콜론을 사용하지 않는다.
View / Layout이란??

[View와 ViewGroup]

  • View
    버튼, 텍스트, 이미지 등 모든 유저 인터페이스(UI)의 통칭
    사용자 눈에 보이는 화면 구성 요소
    Activity 상에서 직접 Code를 작성해서 구현할 수 있지만 더 쉽고 정교하게 작성하기 위해서 XML사용

  • layout_width -> 뷰의 너비(가로 길이)
  • layout_height -> 뷰의 높이(세로 길이)
  • wrap_content -> 내용의 길이(혹은 크기)에 맞게 조절
  • match_parent -> 부모 뷰에 꽉 채워진 크기(여백 제외)
    위의 두 가지가 아닌 경우에는 직접 설정
  • 배경 지정 / 뿐만 아니라 이미지도 지정 가능
  • 화면에 보여지는 속성
  1. visible : 공간도 차지하고 화면에 보임
  2. invisible : 공간은 차지하는데 보이지는 않음
  3. gone : 공간도 차지하지 않고 보이지도 않음

  • View여백 설정
  • margin -> 부모 혹은 View와의 여백
  • padding -> View 외곽과 내용 사이의 여백

ViewGroup

  • 뷰들을 여러 개 포함하고 있는 것
  • 뷰 그룹도 뷰에서 상속하여 뷰가 된다. 즉, 위의 뷰는 버튼, 텍스트 뿐만 아니라 이것들을 포함하는 눈에 보이지 않는 영역을 포함

위젯
뷰 중에서 일반적인 컨트롤 역할을 하고 있는 것
ex) 버튼, 텍스트뷰 등등

Layout

View들이 배치 될 그룹
Layout에 따라 배치되는 방식이 달라짐
XML을 통해 작성
LinearLayout, RelativeLayout, FrameLayout, ConstraintLayout 등등 존재

레이아웃은 그 안에 다른 뷰들을 담을 수 있는데, 레이아웃도 뷰를 상속하여 정의되었기 때문에 레이아웃 안에 다른 레이아웃을 담을 수 있다. 이를 이용하여 복잡한 화면 구성을 할 수 있다.

LinearLayout

  • View들의 선형 배치를 제공하는 Layout
  • 수직 방향, 수평 방향으로 배치 가능
  • 수직 배치시 다음 뷰는 가장 아래 뷰를 기준으로 밑에
    수평 배치시 다음 뷰는 가장 오른쪽 뷰를 기준으로 오른쪽에 배치
  • 배치 기준이 정해져 있어서 직접 정해주지 않아도 됨
  • 특정 뷰 기준으로 배치하는 것은 불가능하다.
  • 방향성이 존재하기 때문에 뷰 위에 뷰를 쌓는 것이 불가능하다.
  • 계단식으로 배치할 때 용이하게 사용할 수 있다.

  • orientation : 뷰 배치에 방향성을 부여한다.(horizontal, vertical)
  • layout_gravity : 부모 컨테이너 안에서 뷰의 위치를 정함
  • gravity : 뷰 안에서 내용물의 위치를 정함
  • layout_weight : 뷰의 가중치로 비율을 통해 너비 혹은 길이를 정함

RalativeLayout

  • View들의 상대적 배치를 제공하는 Layout
  • 특정 뷰를 기준으로 다른 뷰를 배치하는 특징을 가지고 있다.
  • 기준을 정해주지 않게 되면 뷰가 왼쪽 상단에 쌓이게 된다.
  • 뷰 위에 뷰를 겹칠 수 있따.
  • 원하는 배치를 하기 위해서 직접 기준을 정해주면 된다.
  • 복잡한 뷰를 작성할 때 용이하게 사용할 수 있다.

Github : https://github.com/WooVictory/SOPT_22th_Seminar1_HomeWork