전체 글(80)
-
알아두면 좋은 Kotlin extension
💡 자주 사용하는 extension들을 모아봤다 showToast() fun Context.showToast(message: String) { Toast.makeText(this, message, Toast.LENGTH_SHORT).show() } hideKeyboard() fun View.hideKeyboard() { val inputMethodManager = context.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager inputMethodManager.hideSoftInputFromWindow(windowToken, 0) } loadUrl() fun WebView.loadUrl(url: String?) { if (!url..
2023.05.03 -
DiffUtil로 RecyclerView효율화하기
최근에 recyclerview를 만지다보니.. diffutil을 조금 더 찾아보는 계기가 되었다. 사실 크게 관심은 없고 다들 그렇게 사용하니 사용하다가 .. ㅎㅎ DiffUtil이란? 리스트를 업데이트하는 유틸리티 클래스. RecyclerView 어댑터의 업데이트를 계산하는 데 사용된다 리스트에 변경된 부분만을 감지하여 갱신시켜주는 것! 예상 시간은 O(N + D^2) class StudentAdapter : ListAdapter(StudentCallback()) { inner class ViewHolder(private val itemView: View) : RecyclerView.ViewHolder(itemView){ ........ ........ } class StudentCallback : I..
2023.05.03 -
onBackPressed() deprecated issuede
이제 쓸 수...없다......onBackpressed................................................... 이렇게 된김에 deprecated 된 onBackPressed()를 핸들링해보자 아래와 같이 할 수 있다 Activity 내부에서 fun AppCompatActivity.onBackPressed(isEnabled: Boolean, callback: () -> Unit) { onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(isEnabled) { override fun handleOnBackPressed() { callback() } }) } // How To Use it : cla..
2023.03.10 -
Kotlin value class
요즘 노션에서 모든 기록을 다 하다보니 티스토리에 소홀해졌다 회고도 꾸준히...쓰고있는ㄷ ㅔ 앞으로의 내용들중 블로그에 쓸 만큼 긴 글들은 기록을 옮겨두려고 한다 그 시작은 value class..! wrapper class(가독성을 높이기 위한 class)의 비용을 줄여보고자 나온 class 아래와 같이 사용하면 된다 @JvmInline value class Color private constructor(val rgb: Int) { companion object { fun rgb(rgb: Int) = Color(rgb) } } value 키워드를 통해 value class를 정의할 수 있다 이렇게 정의된 value class는 컴파일러에 의해 최적화의 대상이 된다 @JvmInline Annotation..
2023.02.16 -
android sdk 31 타겟팅
이제 11월부로.....sdk31을 타겟팅하지 않은 앱은 업데이트가 거절되었다. 암튼 그래서...sdk 31 타겟팅을 하면서 수정한 것들을 기록해보기로한다. 1. uses permission 설정(알람기능 정상 동작 위해) 안드로이드 31 이후로, 정확한 알림기능을 사용하기 위해서는 다음과같은 권한이 필요하다. 알림 안 쓴다면 안 써도 됨. 하지만 난 있으니까 썼다. 2. android export 설정(intent filter가 들어가는 부분에 모두 명시해야함) android:exported="true" 앱 외부와 관련 있으면 true, 아니면 false로 설정한다. intent filter가 있는 곳만 추가해주면 된다. 3. pending intent 설정 val pendingIntent = if (..
2022.11.17 -
라디오 다이얼로그 컴포넌트 제작기
좋은 코드는...추상화가 잘 된것. 당연함. 어디서든 갖다 쓸 수 있고. 다형성이 적절히 보장된 것... 최적은 아니지만 어쨌든 내 노력을 갈아서 했으니 기록하고자 오랜만에 글을 쓴다. 만든건 다이얼로그! 대부분의 다이얼로그가 존재하지만 라디오 버튼 + 텍스트 필드가 있는 기본 다이얼로그가 추가로 필요해서 만들었다. 1. 일단 공통 테마부터 만들어준다 다이얼로그는 뭐..다 비슷하게 생겨먹었으니까 공통 테마를 하나 만들어준다. 2. 사용하고자 하는데서 상속해준다 class TwoBtnWithRadioDialog( context: Context, private val title: String, private val sub_text: String, private val radioButtonList: Array..
2022.11.07