App/Kotlin 27

[Android_MVVM] 단일 이벤트 처리 시 SingleLiveEvent / Event wrapper 사용하기 (+EventObserver)

https://www.udemy.com/course/android-architecture-componentsmvvm-with-dagger-retrofit/ 유데미 강의를 듣고 학습한걸 토대로 정리차 기록합니다! 아래 글을 참고해서 작성했습니다. LiveData with SnackBar, Navigation and other events (the SingleLiveEvent case) 2021 Update: This guidance is deprecated in favor of the official guidelines. medium.com 스낵바나 다이얼로그처럼 한번만 트리거되는 이벤트들은 LiveData를 사용하게 되면 화면회전시 다시 액티비티가 그려지고 ViewModel->LiveData를 한번더 관..

App/Kotlin 2022.06.08

[Android_Jetpack] Navigation 사용하기

https://www.udemy.com/course/android-architecture-componentsmvvm-with-dagger-retrofit/ 유데미 강의를 듣고 학습한걸 토대로 정리차 기록합니다! 1. res폴더 우클릭-New-New Resource-Directory-Resource type(navigation) 생성 1-1. Navigation Resource File 생성(nav_graph) 2. Containers-NavHostFragment 추가, layout으로 감싸주기 3. Create new destination클릭해서 프래그먼트 추가 + 화살표로 진행방향 4. res폴더 우클릭-New-New Resource-Directory-Resource type(anim) 생성 4-1. ..

App/Kotlin 2022.06.07

[Android_Library] DataBinding & LiveData & ViewModel 사용하기

https://www.udemy.com/course/android-architecture-componentsmvvm-with-dagger-retrofit/ 유데미 강의를 듣고 학습한걸 토대로 정리차 기록합니다! -dataBinding, LiveData, ViewModel 사용관련 plugins, buildFeatures, dependencies추가 plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id 'kotlin-kapt' } android { compileSdk 32 defaultConfig { applicationId "com.example.myapplication" minSdk 21 targetSdk 32 versi..

App/Kotlin 2022.06.06

[Android_Lifecycle] 안드로이드 앱 활동생명주기

앱을 만들다보니까 생명주기에 대해서 모르다보니 여러화면을 이동하고 또 거기서만 사용하는 기능들이 있다보니까 메모리적으로 신경써야하는것들을 제대로 컨트롤하는게 안됐어서 이번에 제대로 알아보려고한다! 활동 수명 주기에 관한 이해 | Android 개발자 | Android Developers 활동은 사용자가 전화 걸기, 사진 찍기, 이메일 보내기 또는 지도 보기와 같은 작업을 하기 위해 상호작용할 수 있는 화면을 제공하는 애플리케이션 구성요소입니다. 각 활동에는 사용자 인터페 developer.android.com 그림만봐서는 제대로 이해가 안가거나 헷갈려서 직접 로그를 찍어보기로 했다 1. 앱 실행시 첫화면 Screen1 D/Screen1: onCreate() //Screen1 최초 1회 실행 D/Scree..

App/Kotlin 2022.06.04

[Android_API] 네이버 지도 API 사용시 Manifest merger failed with multiple errors, see logs 에러발생 해결하기

매니페스트에서 왼쪽 하단에 Merged Manifest를 클릭하면 오른쪽에 창이 뜨고 그아래 에러가 있을것이다. 난 두개의 에러가 있었다 -> Warning Package name 'android.support.graphics.drawable' used in: AndroidManifest.xml, AndroidManifest.xml. animated-vector-drawable:28.0.0 manifest ->attribute android:appComponentFactory, but no new value specified gradle.properties에 아래 두줄 추가 android.useAndroidX=true android.enableJetifier=true 그리고 AndroidManifest...

App/Kotlin 2022.05.17

[Android_Kotlin] 스코프 함수 (run, let, apply, also, with)

1. this / it 사용으로 구분하기 run, apply, with -> (this) let, also -> (it) val list = mutableListOf("123", "456") list.apply{ val listSize = size val listOne = this[0] } list.run{ val listSize = size val listOne = this[0] } with(list){ val list = this.size val listOne = get(0) } val list = mutableListOf("123", "456") list.let { it -> val listSize = it.size val listOne = it[0] } list.also { it -> val li..

App/Kotlin 2022.05.04

[Android_Kotlin] 지연 초기화 방법 (lateinit, by lazy)

0. Nullable로 선언 -일반적으로 null을 허용하고 null값으로 초기화하는 방법 class Test{ var name: String? = null init { name = "김이름" } } 1. val ~ by lazy -val로 변수를 선언하고 변수가 최초 호출될때 {}안에 넣은 값으로 초기화되는 방법 -null 가능 class MainActivity : AppCompatActivity(){ private val binding by lazy { ActivityMainBinding.inflate(layoutInflater) } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setCon..

App/Kotlin 2022.05.04

[Android_Kotlin] Null값 안전하게 처리하기 (Null Safety)

1. null 값 허용하기: ? -변수 타입뒤에 '?'로 null값을 허용해준다. var name : String? 2. 안전하게 호출하기: ?. -변수가 null일 경우 실행하지 않는다. (name이 호출되지 않고 바로 null이 반환됩니다) val personName : String? = user?.name 3. null 값 대체하기: ?: -null 값일때 '?:'뒤에 값으로 반환된다. (user.name이 null값이면 "김이름"이 personName에 들어갑니다) val personName : String = user?.name?:"김이름" 4. non-null: !! -user값이 절대 null이 아님을 보장합니다. (null값일때 NullPointerException이 뜹니다) val per..

App/Kotlin 2022.05.04

[Android_Jetpack] Room 사용해서 DB에 데이터 저장하기

안드로이드 공식문서를 참고해서 작성했습니다. https://developer.android.com/training/data-storage/room?hl=ko Room을 사용하여 로컬 데이터베이스에 데이터 저장 | Android 개발자 | Android Developers Room 라이브러리를 사용하여 더 쉽게 데이터를 유지하는 방법 알아보기 developer.android.com Room을 사용하기 위해서는 총 3가지의 파일이 필요하다 1. Entity 2. DAO 3. Database 0. build.gradle (Module:app) 준비하기 plugins { ... id 'kotlin-kapt' } dependencies { ... implementation "androidx.room:room-ru..

App/Kotlin 2022.05.01

[Android_Kotlin] SpannableStringBuilder로 TextView의 특정글자만 원하는 색으로 지정하기

자세한 사용법은 공식문서를 참고하자 https://developer.android.com/guide/topics/text/spans TextView의 text에서 특정부분만 색을 변경하기위해 SpannableStringBuilder를 사용했다. val expressionTextView = findViewByid(R.id.expressionTextView) val ssb = SpannableStringBuilder(expressionTextView.text) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//getColor에 빨같밑줄이 나서 처리함 ssb.setSpan( ForegroundColorSpan(getColor(R.color.green)), //색..

App/Kotlin 2022.04.30