Gradle 변경 사항
build.gradle (:app)
plugins {
id 'kotlin-kapt'
}
android {
compileSdkVersion rootProject.compileSdkVersion
buildFeatures {
dataBinding true
}
defaultConfig {
minSdkVersion rootProject.minSdkVersion
targetSdkVersion rootProject.targetSdkVersion
}
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$rootProject.kotlin_version"
implementation "androidx.core:core-ktx:$rootProject.ktx_version"
implementation "androidx.appcompat:appcompat:$rootProject.appCompat_version"
}
build.gradle (rootProject)
buildscript {
ext {
compileSdkVersion = 30
minSdkVersion = 26
targetSdkVersion = 30
kotlin_version = "1.5.10"
ktx_version = "1.0.2"
appCompat_version = "1.1.0"
}
}
Activity Databinding
MainActivity
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<layout
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">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
Fragment Databinding
MainFragment
class MainFragment : Fragment() {
private lateinit var binding: FragmentMainBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?,
): View {
binding = FragmentMainBinding.inflate(inflater, container, false)
return binding.root
}
}
fragment_main.xml
<?xml version="1.0" encoding="utf-8"?>
<layout 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">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainFragment">
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
Log 설정
LogUtil
class LogUtil {
companion object {
private const val TAG = "LogUtil"
fun v(tag: String, msg: String) {
val message = buildLogMsg(tag, msg)
Log.v(TAG, message)
}
fun i(tag: String, msg: String) {
val message = buildLogMsg(tag, msg)
Log.i(TAG, message)
}
fun d(tag: String, msg: String) {
val message = buildLogMsg(tag, msg)
Log.d(TAG, message)
}
fun w(tag: String, msg: String) {
val message = buildLogMsg(tag, msg)
Log.w(TAG, message)
}
fun e(tag: String, msg: String) {
val message = buildLogMsg(tag, msg)
Log.e(TAG, message)
}
private val mStringBuffer = StringBuffer()
private fun buildLogMsg(tag: String, message: String): String {
val stackTrace = Thread.currentThread().stackTrace[4]
mStringBuffer.setLength(0)
mStringBuffer.append("[ $tag ] ")
mStringBuffer.append("[ ${stackTrace.methodName}() ] ")
mStringBuffer.append("[ ${stackTrace.lineNumber} ] ")
mStringBuffer.append(": $message")
return mStringBuffer.toString()
}
}
}
Class TAG 설정
class ClassName {
companion object {
private const val TAG = "ClassName"
}
}
색상 설정
colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Pastel tone colors -->
<color name="snow_white">#F0F0EC</color>
<color name="pink_marshmallow">#F7E2E8</color>
<color name="almond_blossom">#F5BFCC</color>
<color name="iced_aqua">#AED6DF</color>
<color name="papaya_punch">#FEA188</color>
<color name="whitecap_gray">#E2D9CA</color>
<color name="ballad_blue">#BFCFDD</color>
<color name="lemon_verbena">#F5E97A</color>
<color name="icy_morn">#AED4D2</color>
<color name="crocus_petal">#BD9DC8</color>
<!-- Favorite colors -->
<color name="favorite_black">#595959</color>
<color name="favorite_blue">#89A5EA</color>
<color name="favorite_orange">#F28705</color>
</resources>