강의 3주차 4주차를 듣고 실습하면서 배워보았다.
UI의 구성 기본 단위는 뷰(view)로 레이아웃과 위젯으로 이루어져있으며 xml을 사용하여 UI를 설계한다.
view는 모든 UI 컴포넌트들의 부모 클래스로 view클래스의 속성은 모든 UI컴포넌트들에서 공통적으로 사용 가능하다.
휴대폰의 다양한 해상도에 대응하기 위하여 위젯 size는 dp를 보통 사용하고 각 해상도에 맞는 이미지 크기를 따로 저장해둔다.
레이아웃
- Linear Layout
- 컨테이너에 포함 된 뷰들을 수평 또는 수직으로 일렬 배치하는 레이아웃이다.
- Relative Layout
- 뷰를 서로 간의 위치 관계나 컨테이너와의 위치 관계를 지정하여 배치하는 레이아웃이다.
- Table Layout
- 표 형식으로 차일드를 배치하는 레이아웃이다.
- Frame Layout
- 컨테이너에 포함된 뷰들을 전부 좌상단에 배치하는 레이아웃이다.
- Constraint Layout
- 제약 조건을 사용해 화면을 구성하는 방법을 가진 레이아웃이다.

다음 예제를 직접 만들어보는 실습을 해보았다.

첫번째 레이아웃은 Linear를 사용했고 정렬하기에 간편하고 왜 많이 쓰이는지 알 수 있었다.
두번째 레이아웃은 Relative를 사용했는데 처음 사용해봐서 각 버튼의 배치가 좀 어려웠다.
세번째 레이아웃은 Constraint를 사용했는데 제일 익숙해서 수월하게 진행되었다.
원래는 constraintTop_toBottom과 같은 코드를 사용해 만드는게 어려웠는데
첫번째로 나온 Top이 해당 위젯의 상단이고 두번째로 나온 Bottom이 다른 위젯의 하단이라고
생각하니 조금 쉬웠다. BUTTON8의 왼쪽(Start)는 BUTTON7의 오른쪽(End)에 붙어야 하므로
<Button
android:id="@+id/btn_8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="BUTTON8"
android:layout_marginStart="20dp"
app:layout_constraintStart_toEndOf="@id/btn_7"
app:layout_constraintTop_toTopOf="@id/btn_7"
app:layout_constraintBottom_toBottomOf="@id/btn_7" />
다음과 같이 위치를 조정해줄 수 있다. (constraint는 3가지이상 위치를 조정해줘야 에러가 안난다!)
안드로이드 애플리케이션은 주로 네 가지 주요 컴포넌트로 구성됩니다. 이들은 애플리케이션의 구조를 정의하고, 안드로이드 시스템과 어떻게 상호 작용하는지를 결정합니다.
이 4대 컴포넌트를 이해하는 것은 안드로이드 애플리케이션의 기본적인 구조를 파악하는 데 매우 중요합니다. 각 컴포넌트는 독립적인 기능을 가지면서도 서로 긴밀하게 연동되어, 복잡하고 다양한 기능의 애플리케이션을 만들 수 있는 기반을 제공합니다.
액티비티는 안드로이드 애플리케이션의 핵심 구성 요소로서 사용자가 직접 상호 작용하는 창을 의미한다. 각 액티비티는 독립적인 화면으로서 사용자에게 다양한 작업을 수행할 수 있는 인터페이스를 제공합니다.
각 액티비티는 인텐트(Intent)를 통해 다른 앱 구성요소로 작업을 요청 할 수 있다.

첫번째 액티비티의 UI를 구성하고 그 UI에서 버튼을 findVewById로 호출한뒤
setOnClickListener(버튼을 눌렀을때 동작)가 두번째 액티비티를 불러온다.

버튼을 누르면 다음과 같이 두번째 액티비티가 켜지고 마찬가지로 호출을 통해 닫기 버튼을 누르면
finish() 될 수 있도록 설정해준 모습이다.
<Button
android:id="@+id/buttonDialActivity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="다이얼 작업 시작하기"
android:onClick="doOnBtnClick" />
xml 파일에서 android:onClick="doOnBtnClick" 문장을 넣어주고

fun doOnBtnClick 함수를 통해 각 버튼을 클릭시 ACTION_DIAL(전화)로 이동할 수 있도록
Uri.parse("tel:114")는 114로 전화를 걸 수 있도록 설정할 수 있다.
똑같이 아래는 지도를 연동한 모습이다.


첫번째 액티비티에서 intent로 edit_text에 적힌 값을 세번째 액티비티로 보내주면

세번째 액티비티에서 다음과 같이 받아서


출력해주는 모습이다.
이렇게 3주차 4주차 강의를 정리해보고 실습해보았다.
constraint 레이아웃을 잘 알게되어 좋았고(아직 써볼 기능이 많지만) intent를 자세히 알 수 있어
좋았다!
오늘은 강의 듣고 과제도 시작해보려고 했는데 생각보다 실습내용이 좀 있어서 집중하다보니
시간이 좀 오버됐다 ㅠㅠ 과제도 하고 스탠다드반 과제도 진행해야해서 부지런하게 움직여야겠다!