Android📱
-
[Android] 앱 언어 변경Android📱 2023. 2. 15. 13:30
Android Locale 변경 Google Play Store는 전 세계사람이 사용한다. 전세계 사람이 한글을 알면 좋겠지만, 세상은 그렇지 않다. 그래서 앱에 사용자가 언어를 선택하는 기능을 추가해야하는 경우가 있다. 그럴때 구글 형님들이 편하게 쓰라고 만들어 놓은 방법이 있다. 바로 AppCompatDelegate 를 이용하면 가능하다. 일단 번역본이 필요하다. xml에 각 언어 별 패키지를 만든다 그리고 같은 이름으로 string들을 저장해 주면 된다 시작하기 Start 이런 식으로 저장 무조건 같은 이름이여야 대체가 가능 https://developer.android.com/guide/topics/resources/app-languages?hl=ko
-
@JvmStatic 어노테이션Android📱 2023. 1. 8. 20:56
2 way databinding을 구현하다가 알게된 어노테이션 정리 fragment애서 newInstance를 만들때도 생성된다. companion object { @JvmStatic var barSize : Int = 0 } @JvmStatic 어노테이션 Java의 Static처럼 사용할 것을 알려주는 어노테이션 정적 getter, setter를 구현해준다 미안하다 사실 이걸 말하려고 어그로 끌었다….. companion object kotlin의 companion object는 자바의 static처럼 사용 할 수 있지만 사실 둘은 다르다! companion object는 말그대로 동반 객체 해당 클래스가 메모리에 올라갈때 그 이름을 빌려 같이 생성되는 객체이고 static은 힙 메모리영역에 할당되어 ..
-
Compose 상태관리 Stateful...?Android📱 2022. 10. 25. 18:29
* Compose를 공부하며 갑자기 이해된 거 같아서 정리하면 작성했습니다 ㅎㅎ 틀리거나 잘못된 부분이 있다면 알려주시면 수정하겠습니다. Composable의 State Compose에는 State가 존재한다. 앱 개발에서 State 즉 상태관리는 굉장히 중요한 문제라고 한다. 그것을 관리할때 사용할 수 있는 것이 State이다. 이를 이해하기 위해서는 Composable의 변화를 알아야 한다. xml을 이용해서 UI를 만들게 되면 가로 모드를 하거나 RecyclerView에서 notify를 하거나 하는 경우에 화면이 다시 그려지게 된다. Composable도 마찬가지로 recomposition이 일어난다고 한다. 바로 Composable이 다시 그려지는 것이다. 그러면 Composable안에 데이터들은..
-
DI란 무엇인가.... feat. Hilt, KoinAndroid📱 2022. 10. 19. 00:04
DI란 무엇인가!! 안드로이드 개발을 하면 Hilt와 Koin등을 사용하며 DI라는 개념에 대해서 알게 된다. 정확히 DI는 왜 하는 것이며 어떤것인지 알아보자 DI? DI(Dependency Injection)은 의존성 주입하고 한다. 의존성 주입은 단어 그대로 하나의 객체가 다른 객체의 의존성을 제공하는 기술이다. 쉽게 단어 그대로 객체 안에서 사용할 객체를 생성하는 것이 아니라 외부에서 생성된 객체를 주입받아서 사용하는 방식이다. 공식 문서에도 Dependency injection (DI) is a technique widely used in programming and well suited to Android development. By following the principles of DI, y..
-
[Android] Retrofit2 사용 시 헤더에 데이터 넣기!Android📱 2022. 10. 17. 23:30
안드로이드에서 OAuth 2.0 인증 절차를 진행할 때 okhttp 헤더에 토큰을 추가해서 인증을 진행하는 경우가 많이 있다. 나도 프로젝트를 진행하면 보통 서버 측과 JWT를 이용해서 인증을 하고 요청에 대한 응답을 받게 되는 구성으로 프로젝트를 진행하였다. 그때 보통 두 개의 방식이 있는데 retrofit2 요청 시 @Header 어노테이션 사용하기 import retrofit2.http.GET interface ItemApi { @GET("/item") fun getItemList( @Header("accessToken") accessToken: String?, ): List } 가장 기본 적인 방식은 이 방식이다. 직접 헤더 어노테이션을 써서 토큰을 추가해주는 방식이다. 만약 헤더마다 다른 데이터..
-
Jetpack Compose Navigation으로 URL 보낼때 오류Navigation destination that matches request NavDeepLinkRequestAndroid📱/삽질 기록... 2022. 10. 11. 17:08
Navigation argument로 URL을 보내고 WebView로 띄우는 과정에서 Navigation destination that matches request NavDeepLinkRequest{ uri=android-app://androidx.navigation/ } cannot be found in the navigation graph NavGraph(0x0) startDestination={Destination(0x442b361f) route=home} 라는 메시지가 뜨면서 앱이 죽음 원인 URL을 Encode해야된다 https://stackoverflow.com/questions/71286767/navigation-destination-that-matches-request-navdeeplink..
-
dateFormat으로 날짜를 파싱할때 에러!Android📱/삽질 기록... 2022. 10. 3. 17:23
프로젝트를 진행하면서 datePicker를 사용해서 날짜를 입력받는 기능을 구현하던 중 Your date pattern requires either a Locale, or your own custom localizations 라는 에러를 만나게 되었다...!! 구글링을 해보았지만 SimpleDateFormat에 대한 설명 만나와서... 나는 date4j라는 라이브러리를 이용했기에 코드를 보면서 직접 문제를 해결해보았다. Date4j란 Java's Date Classes Must Die. 라는 슬로건을 걸고 John O'Hanley라는 분이 만든 날짜를 파싱 해주는 라이브러리이다. DatePicker를 이용할 때 SimpleDateFormat을 사용하면 날짜가 오차가 생기거나 이상한 날짜가 생기는 현상이 ..
-
[Android] 팀 프로젝트 Splash Activity 버그 개선기 feat. ViewTreeObserverAndroid📱/삽질 기록... 2022. 9. 27. 14:54
너무 간단한 문제였는데... 너무 헤매어서 기뻐서 기록을 남겨보려 합니다.... 얼마 전에 진행한 집 넘기기 프로젝트에서 겪었던 문제가 있었다. 바로 Splash Activity.... 문제 발생 자동 로그인 로직을 수행하기 위해서 시작 시 isLogin이라는 내부저장소에 있는 변수를 검사할 필요가 있었고, 이를 수행하기 위해서 Splash Activity를 이용하여 Splash Screen을 띄워서 화면을 잠시 가리고 로직을 수행하고 어플을 시작하려고 하였다. 다행히 의도대로 작동되는 듯하였으나 Slpash Screen이 사라지고 HomeActivity로 이동하는 것이 아니라, 하얀 화면만 뜨는 현상이 발생 이처럼 정체 모를 화면이 뜬 채로 멈춰있다가 다시 들어오면 HomeActivity로 이동하는 현..