본문 바로가기

분류 전체보기

(39)
내일배움캠프 후기(Android 4기) 내일배움캠프 이전의 삶서버 개발자로 취직을 한 후 적성에 맞지 않다고 판단해서 그만 뒀습니다. 그 이후에는 집안 사정으로 잠깐 쉬는 기간이 있었고 다시 취직을 준비하면서 개발이지만 다른 포지션을 찾아봐야겠다는 생각을 했고, 안드로이드를 선택했습니다.선택한 계기KDT과정 중 괜찮은 과정을 찾던 도중 스파르타 코딩클럽의 내일배움캠프를 알게 되었습니다. 이미 스파르타 코딩클럽은 유명하기 때문에 알고있었고, 부트캠프를 진행한 경험이 풍부하기 때문에 특별한 고민 없이 선택하게 되었습니다. 장점실력을 고속 성장시킬 수 있는 프로젝트프로젝트 경험을 많이 쌓을 수 있다는 것이 큰 장점이라고 생각합니다. 취업준비를 하면서 팀 프로젝트 경험을 쌓기가 쉽지 않습니다. 같이 부트캠프를 듣는 분들과 프로젝트를 진행할 수 있는 ..
border line 만들기 drawable에 를 사용한다.원하지 않는 부분은 음수로 지정한다.shape를 rectangle로 만들고 음수인 영역만 라인이 없어진다.(예시는 start(왼쪽 세로선)를 만듦)
ConstraintLayout의 weight 비율 조정 개요ConstraintLayout내에서 같은 레벨인 View들은 화면의 비율을 나눠 가질 수 있다.vertical로 한다면 모두 height=0 / horizontal로 한다면 width=0으로 해줘야 한다.vertical / horizontal에 따라 각각의 view에 `app:layout_constraintVertical/Horizontal_weight`의 값을 비율로 나눠 주면된다.
OnBackPressedCallback(true) 개요하단의 뒤로가기 버튼은 Activity에 있는 것이므로 Activity의 `onBackPressedDispatcher`에 callback을 추가해줘야 한다.`onBackPressedDispatcher.onBackPressed()`를 호출했을 때 addCallback된 callBack 메서드가 없으면 default callback이 실행된다.추가 된 것이 있으면 그 것을 실행하는데 그 안에서 `onBackPressedDispatcher.onBackPressed()`을 호출하면 무한루프에 빠지게 된다.`OnBackPressedCallback(true)`isEnabled = true 라는 의미true인 callback 메서드만 실행이 가능하다.false로 바꿔주면 다시 호출되지 않는다. private..
ListAdapter의 holder 재사용 visible인 상태에서 holder가 재활용이 되면 해당 holder에서 visible이 되기 원하지 않더라도 적용되어 있다.Visible / Gone에 대한 예외 처리를 모두 해줘야 재활용이 되었을 때 이전 holder의 상태를 가져가지 않는다.이전 holder에서의 예외 처리가 부족하면 재활용 되었을 때 그 상태를 들고 가게 된다.override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { ... if(currentItem.snippet.isLike) { interestedHolder.like.visibility = ImageView.VISIBLE } else { // 예외처리 추가 ..
Retrofit 응답용 data class@SerializedNameresponse json의 key값과 변수명이 다를 경우만 괄호 안에 문자를 입력해주면 된다.api의 key 값이 스네이크 케이스일 경우에 써주는 것이 좋다.data class DustResponse( @SerializedName("body") val dustBody: DustBody, @SerializedName("header") val dustHeader: DustHeader)data class DustBody( val totalCount: Int, @SerializedName("items") val dustItem: MutableList?, val pageNo: Int, val numOfRows: I..
Shared Preference / Room SharedPreference앱에 영구적으로 데이터를 저장하는 파일xml파일에 key:value 형식의 String타입으로 저장된다.주로 설정과 관련된 데이터를 저장한다.알림 / 앱의 기본 설정사항 등사용 방법저장getSharedPreferences("저장할 xml파일명", mode: Int)edit() : 편집 모드로 전환edit.putString(key, value)로 저장apply() : 저장 완료(commit)private fun saveData(){ val pref = getSharedPreferences("pref", 0) val edit = pref.edit() edit.putString("name", binding.etMain.text.toString()) edit.a..
Compose(Recomposition/rememeber/state hoisting) RecompositionComposable함수의 parameter 값이 바뀌면 해당 함수로 그리는 내용을 전부 다시 구성하는 것해당 Composable함수에 대해서만 재구성이 이루어 진다.단계CompositionLayoutDrawremembercomposable 함수의 내용이 바뀌면 그 부분만 수정되는 것이 아니라 해당 Composable함수 전체적으로 재구성된다.(recomposition)composable이 업데이트 되려면 새 상태를 명시적으로 알려야 한다.그 때 변하는 데이터를 기억하기 위한 것remember를 사용해 메모리에 객체를 저장한다.함수의 인자로 값을 받으면 val 타입이기 때문에 수정이 안되고Composable함수가 activity class 밖에서 정의되기 때문에 전역변수로 변하는 값..