Android Studio์ Kotlin์ ๊ธฐ๋ณธ์ ์ผ๋ก ์์๋ ๋ถ์ ๊ธฐ์ค์ผ๋ก ํ ์ค๋ช ์ ๋๋ค.
์ฐ์ ๋ฉ๋ชจ ์ฑ์ ๋ง๋ค๊ธฐ ์ํด์ ์ฑ์ ๋ด์ ํด๋๋ฅผ ๋ง๋ค์ด์ค.
Android Studio ์คํ ํ New Project๋ฅผ ํด๋ฆญํ๊ณ
Phone and Tablet์ Empty Activity ํด๋ฆญ ํ Next๋ฅผ ๋๋ฅด๊ณ Name์ TodoList(์์ )๋ก ์ ์ด์ค.
์ด์ ์ฌ๊ธฐ์ ์ค์ํ ๋ถ๋ถ์ Language์ Minimum SDK์.
์ฐ๋ฆฌ๋ Kotlin์ผ๋ก ๊ฐ๋ฐ์ ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ Kotlin์ผ๋ก ์ค์ ํด์ฃผ๊ณ
Minimum SDK๋ ์ด ์ฑ์ ์คํํ๊ธฐ ์ํ ์ต์ ์ฌ์์ด๋ฉฐ API 26 : Android 8.0(Oreo)๋ก ํด์ฃผ๊ณ Finish๋ฅผ ๋๋ฌ์ค.
SDK๊ฐ ๋๋ฌด ๋๋ค๋ฉด ์ต์ ์ค๋งํธํฐ OS๊ฐ ์๋ ๊ฒฝ์ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์๊ณ , ๋๋ฌด ๋ฎ์ผ๋ฉด ๊ตฌํ์ด ํ๋ค์ด์ง.
์ฑ์ ๋ง๋ค๊ธฐ์ ์ ์ ์ฉํ ์๋ฃ 2๊ฐ๋ฅผ ๊ฐ์ ธ์ด!
โช๏ธManifest
https://readystory.tistory.com/187
[Android] Manifest ๊ฐ๋ ์ก๊ธฐ
์๋๋ก์ด๋ ํ๋ก์ ํธ์๋ ๋ฐ๋์ ํฌํจ๋์ด์ผ ํ๋ ํ์ผ์ด ์์ต๋๋ค. ๊ทธ๊ฑด ๋ฐ๋ก AndroidManifest.xml ํ์ผ์ ๋๋ค. Manifest ํ์ผ์ ํ๋ก์ ํธ์ Source Set์ ๋ฃจํธ(๋ณ๋์ ์ค์ ์ ํ์ง ์์๋ค๋ฉด src/main)์ ์
readystory.tistory.com
โช๏ธGradle
https://curryyou.tistory.com/368
[์๋๋ก์ด๋] ๊ทธ๋ ์ด๋ค Gradle Scripts์ ๋ํ ์ ๋ฆฌ
# Gradle Scripts๋? ์๋๋ก์ด๋ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ฉด Gradle Scripts ๋ผ๋ ์์ญ์ build.gradle, settings.gradle ๋ฑ์ ํ์ผ์ด ์๋์ผ๋ก ๋ง๋ค์ด์ง๋ค. ์ด ํ์ผ๋ค์ ํตํด ์๋๋ก์ด๋ ํ๋ก์ ํธ์ ๋น๋ ์ ๋ณด, ๋ผ์ด๋ธ
curryyou.tistory.com
์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ฑ์ ๋ง๋ค์ด๋ด.
๋จผ์ ๋์ ๋ณด์ด๋ UI ๊ตฌ์ฑ๋ถํฐ ํ ๊ฑฐ์.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:id="@+id/main_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="10dp"
android:paddingVertical="5dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="TodoList"
android:textColor="@color/black"
android:textSize="20dp"
android:textStyle="bold"/>
</LinearLayout>
<LinearLayout
android:id="@+id/main_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="10dp"
android:background="#EAEAEA"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/main_title">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="์ํ"
android:textColor="@color/black"
android:textSize="17dp"
android:textStyle="bold"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="ํ ์ผ"
android:textColor="@color/black"
android:textSize="17dp"
android:gravity="center"
android:textStyle="bold"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="๋ฑ๋ก์ผ"
android:textColor="@color/black"
android:textSize="17dp"
android:textStyle="bold"/>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/mai_list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:paddingVertical="5dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/main_bar"
app:layout_constraintBottom_toTopOf="@+id/main_write"/>
<LinearLayout
android:id="@+id/main_write"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="10dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent">
<EditText
android:id="@+id/mai_todo_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="ํ ์ผ์ ์ถ๊ฐํด๋ณด์ธ์."
android:textColor="@color/black"
android:textSize="15dp"
android:textStyle="normal"
android:inputType="text"
android:maxLines="1"
android:background="@null"
android:layout_gravity="center"/>
<ImageView
android:id="@+id/mai_add_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon_add"
android:layout_gravity="center"/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
activity_main.xml
์์ด์ฝ์ drawble์์ New → Vector Asset์ ํด๋ฆญํด ์ํ๋ ์์ด์ฝ์ ๋ฃ์ด์ค.
์ด์ ๋ฆฌ์คํธ์ ๋ค์ด๊ฐ ๊ฐ๊ฐ์ ํญ๋ชฉ์ ๋ง๋ค์ด์ค ๊ฒ์ธ๋ฐ ์ด๋ RecyclerView๋ฅผ ์ฌ์ฉํ ๊ฑฐ์.
โช๏ธRecyclerView
https://velog.io/@appletorch/RecyclerView%EB%9E%80
RecyclerView๋?
RecyclerView๋? ์ค๋์ ์๋๋ก์ด๋์์ ์์ฃผ์ฌ์ฉ๋๋ RecyclerView์ ๊ดํด์ ์์๋ณด๊ฒ ์ต๋๋ค. ์ ์ ์๋๋ก์ด๋ ๊ณต์๋ฌธ์์๋ A flexible view for providing a limited window into a large data set. ๋ก ์
velog.io
๋ฆฌ์คํธ์ ๋ค์ด๊ฐ ํญ๋ชฉ์ UI๋ฅผ ๋ง๋ค์ด์ค.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingVertical="5dp">
<CheckBox
android:id="@+id/lis_state"
android:layout_width="55dp"
android:layout_height="match_parent"/>
<TextView
android:id="@+id/lis_todo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="ํ ์ผ์
๋๋ค"
android:textColor="@color/black"
android:textSize="15dp"
android:textStyle="bold"
android:maxLines="1"
android:paddingHorizontal="5dp"
android:layout_gravity="center"/>
<TextView
android:id="@+id/lis_date"
android:layout_width="65dp"
android:layout_height="wrap_content"
android:text="22.22.22"
android:textColor="@color/black"
android:textSize="15dp"
android:gravity="center"
android:layout_gravity="center"/>
</LinearLayout>
list_item.xml
To be Continued..
'๐ฑ > ๐Project' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Kotlin] Note ์ฑ ๋ง๋ค๊ธฐ๏ผ (1) | 2023.01.11 |
---|---|
[Kotlin] Note ์ฑ ๋ง๋ค๊ธฐ๏ผ (0) | 2023.01.10 |
[Kotlin] Note ์ฑ ๋ง๋ค๊ธฐ๏ผ (0) | 2023.01.09 |
[Kotlin] TodoList ์ฑ ๋ง๋ค๊ธฐ๏ผ (0) | 2023.01.03 |
[Kotlin] TodoList ์ฑ ๋ง๋ค๊ธฐ๏ผ (2) | 2022.12.29 |