안드로이드

안드로이드/이론

[ 안드로이드 ] APK/AAB 추출 시 파일명 변경하기 + 성능 최적화

방법 1.이 방법은 인터넷에 많이 알려진 방법입니다.간단한 코드로 APK/AAB 모두에 적용 가능하지만 한 가지 주의할 점이 있습니다.archivesBaseName = "{앱 이름}-${versionName}(${versionCode})" 아래와 같이 시간과 같은 변하는 값을 추가하게 되면 빌드 성능 저하가 발생할 수 있습니다.def formattedDate = new Date().format('yyyyMMddHHmm')archivesBaseName = "{앱 이름}-${versionName}(${versionCode})-${formattedDate}" 일반적으로 Gradle은 빌드 캐시를 사용하여 동일한 작업을 반복으로 실행하지 않도록 최적화합니다.그러나 archivesBaseName이 매번 달라지면 ..

안드로이드/Compose

[Compose] - State가 변경 되어도 UI에 반영이 안되는 이슈 해결

문제 상황 ViewModel에서 서버에 요청을 보낸 후 받아온 응답을 State에 반영하였을 때,Recomposition은 발생하는데 UI에는 데이터가 표시되지 않는 이슈가 있었습니다. MainActivity.kt먼저 MainScreen에선 아래와 같이 LazyColumn 내에 여러 레이아웃이 item으로 들어가는 구조입니다.Mutli ViewType RecycleView 처럼 구성 되어있습니다.@Composablefun MainScreen(state: MainState) { Log.d("MainScreen", "Top chart list: ${state.topChartList}") Scaffold( containerColor = WePLiTheme.color.black, ..

안드로이드/코드 저장

[ 안드로이드 ] 개인적으로 유용하게 쓰는 Kotlin 확장 함수

1. Scope 지정 확장 함수핵심 로직과 부가 기능을 분리하자는 AOP(관점 지향 프로그래밍) 개념에서 떠올린 확장 함수입니다 기존의 View에서 Scope를 열어 사용할 때 불필요한 Depth가 생기게 됩니다.의미만 잘 전달된다면 핵심 로직과 분리 되어도 상관 없는 구문이라 생각하여 아래와 같이 정의 해보았습니다.fun LifecycleOwner.withInMainScope( coroutineContext: CoroutineContext = EmptyCoroutineContext, start: CoroutineStart = CoroutineStart.DEFAULT, action: suspend () -> Unit) { lifecycleScope.launch( cont..

안드로이드/Compose

[Compose] - Design System 구축 - 2. ColorScheme 만들기

[안드로이드] - Compose Typography 만들기1. FontFamilry 정의우선 FontFamily 클래스를 정의합니다.// Type.ktval pretendard = FontFamily( Font(R.font.pretendard_thin, FontWeight.Thin, FontStyle.Normal), Font(R.font.pretendard_extralight, FontWeight.ExtraLight, FontStyle.Normal), Font(R.dongx2.tistory.com 이전 게시글에서 Compose로 Typography를 선언하는 방법에 대해서 알아보았습니다.이번엔 ColorScheme을 선언하는 방법을 정리하였습니다. 1. Color 선언DesignSystem > Color..

안드로이드/Compose

[Compose] - Design System 구축 - 1. Typography 만들기

1. FontFamilry 정의우선 FontFamily 클래스를 정의합니다.// Type.ktval pretendard = FontFamily( Font(R.font.pretendard_thin, FontWeight.Thin, FontStyle.Normal), Font(R.font.pretendard_extralight, FontWeight.ExtraLight, FontStyle.Normal), Font(R.font.pretendard_light, FontWeight.Light, FontStyle.Normal), Font(R.font.pretendard_regular, FontWeight.Normal, FontStyle.Normal), Font(R.font.pretendard_..

안드로이드/이론

[ 안드로이드 ] 앱 내에 개발자 모드 추가하기 3

이전 글 [ 안드로이드 ] 앱 내에 개발자 모드 추가하기개발자 모드가 필요한 이유 개발자 모드를 통해서 서버 모드(상용, QA, Test)를 앱 내에서 변경할 수도 있고, 에러 발생 시 로그를 기록해줄 수도 있습니다. 또한 토큰 정보나 디바이스 정보 등과dongx2.tistory.com  [ 안드로이드 ] 앱 내에 개발자 모드 추가하기 2[ 안드로이드 ] 앱 내에 개발자 모드 추가하기 개발자 모드가 필요한 이유 개발자 모드를 통해서 서버 모드(상용, QA, Test)를 앱 내에서 변경할 수도 있고, 에러 발생 시 로그를 기록해줄 수도 있습dongx2.tistory.com  Intro이번 게시글에선 서버의 상태를 체크하는 기능을 추가할 예정입니다.  커스텀 Preference View 만들기 Android..

안드로이드/이론

[ 안드로이드 ] 액티비티 배경 투명하게 설정 (+ 투명 배경 유지 안되는 이슈 해결)

테마 설정아래와 같이 values/themes.xml (or styles.xml) 내에 style을 선언합니다. 주의점위와 같이 액티비티 배경을 투명하게 설정해도 투명해지지 않는 이슈를 발견정확하게는 액티비티가 투명해졌다가 전환 애니메이션이 끝나면 다시 불투명하게 돌아오게되는 현상 앱의 데이터를 지우니 다시 투명하게 유지가 되었고, 액티비티를 몇 번 반복하여 호출하다보니 다시 재현 됨컬러나 설정 등이 캐싱되고 있는 것 같아 아래와 같이 선언해주니 해결 됨 @null Android Oreo에서 투명 액티비티 적용 안되는 이슈Android Oreo(8.0)에서만 투명 액티비티가 적용이 되지 않는 이슈를 발견 에러 문구"Only fullscreen opaque activities can request o..

안드로이드/이론

[ 안드로이드 ] Multi ViewType RecyclerView ViewHolder 순서 고정하기

MultiView Type RecyclerView를 구현할 때, 각 아이템을 분리하여 관리하게 되면 응답 받는 순서에 따라 순서가 뒤 섞이게 됩니다. 응답 받는 순서와 상관 없이 ViewHolder의 순서를 고정 시키는 방법에 대해서 작성 해보았습니다. ViewType Enum 클래스 선언enum class DiscoverMultiViewType(val value: Int) { MARATHON(1000), RECOMMEND(1001); } ViewType 리스트 갱신데이터 로드가 완료된 ViewType만 리스트에 추가합니다. 데이터 로드에 실패 했거나, 아직 로드 되지 않은 ViewType의 경우 RecyclerView에 표시 되지 않도록 하기 위함입니다. 그리고, 해당 메소드가 ViewHolder의 순..

dongx._.2
'안드로이드' 태그의 글 목록