Android/Development Tips (44) 썸네일형 리스트형 간단 Tips. Lottie 가 Android, iOS, Web, Window 등 에서 다르게 보인다면? https://lottiefiles.com/supported-features Lottie Supported Features Lottie does not support all features of Adobe After Effects; please refer to the list below for details. lottiefiles.com 에서 각각 플랫폼에서 제공하는 Feature 들을 확인해보자! (저의 경우에는 Layer Effects 를 Android 에서 제공하지 않는 것이 문제 였습니다) 간단 Tips. KotlinxSerialization 를 사용하여 Date 를 파싱하는데 에러가 난다면? DateDto( @SerialName("created_at") var createdAt: Instant?, @SerialName("updated_at") var updatedAt: Instant? ) Instant 클래스를 타고 들어가서 보면 ? ISO-8601 를 사용하는 것을 알 수 있고 2020-12-09T09:16:56.000124Z 와 같은 예시도 볼 수 있다. 역직렬화 화는 과정(deserialize)에서 pase 하는 과정중에 포맷이 맞지 않는다면 DateTimeParseException 을 던지는 것도 알 수 있다. 항상 코드에 답이 있다! 혹시나 서버에서 다른 포맷으로 내려주고 파싱해야 한다면 KSerializer 를 상속받는 클래스를 만들고 직렬화, 역직렬화를 구현해주면 된다는 정보도 .. Domain 모듈에서 Paging, Room(RemoteMediator) 라이브러리 의존성 해결하기 오늘 이야기 하는 Tips 은 거의 활용되기 뻘팁이 될 확률이 높고, 그냥 "이렇게도 가능하다" 정도로만 이해해주시면 감사합니다. 해당 프로젝트 주소는 하단에 적어두었습니다. 일반적으로 Domain 은 Pure Java/Kotlin 으로 하는 경우가 많습니다. 따라서 Paging3 를 사용하다보면 도메인에 PagingSource, PagingData 등의 자료구조를 활용하지 못하기 때문에 고민에 빠지게 됩니다. 거의 대부분 아티클을 보면 // alternatively - without Android dependencies for tests implementation "androidx.paging:paging-common:$paging_version" 를 추가해서 사용해라 라는 이야기가 많습니다. 하지만 .. 2.4.1 이상 버전에서 Navigation Component 사용할 때 주의점 관련 문구 https://medium.com/androiddevelopers/navigation-multiple-back-stacks-6c67ba41952f Navigation: Multiple back stacks Welcome to another article in the second MAD Skills series on Navigation! In this article we’ll take a look at a highly requested feature… medium.com 관련 레포지토리 (NavigationAdvancedSample) https://github.com/android/architecture-components-samples/tree/master/NavigationAdvancedSa.. DataStore Protocol Buffer 사용시 Tips 회사에서 필요해서 사용한 후기를 간단하게 적어둡니다. 불편했던 점 1. 사용시에 .proto 파일이 변경되면 빌드가 필요했습니다. 2. Map 같은 구조가 아니기 때문에 여러개 필요하다면, DataStore 객체를 만들어 낼 때, FileName 을 변경하여 처리했습니다.(물론 같은 이름으로 동시에 열수 없도록 처리되어 있습니다) 장점 1. 사용하기가 편합니다. 2. 빌드 이후 Generate 되는 코드를 보며 코드를 작성하면 되서 큰 어려움이 없었습니다. 아래와 같은 데이터 형식을 저장한다고 하면 val foodStores = listOf(FoodStore(....), FoodStore(....), FoodStore(....) ....) data class FoodStore( val name: Stri.. 알고 계시나요 Fragment 가 복원되는 시점? A Activity 에 B Fragment 가 있는 상황에서 A Activity 의 복원이 일어나면, A Activity 의 onCreate 보다 B Fragment 의 onViewCreated 가 먼저 호출됩니다. (정확하게는 A Activity super.onCreate 호출 -> B Fragment 의 onViewCreated 호출 -> A Activity onCreate 호출로 진행됩니다) 따라서 A Activity onCreate 에서 어떤 값을 초기화해주고, B 의 onViewCreated 에서 무언가에 접근하는 코드가 있다면 크래시가 발생하게 됩니다. 복원이 아닌 일반적인 경우는 A activity onCreate 이후 B Fragment onViewCreated 가 호출됩니다. 문제가 생겼.. BroadcastReceiver 사용할 때 유의점 BroadcastReceiver 를 상속 받아 사용할 때, 마치 싱글턴으로 관리 될 것 처럼 생겼지만, hashCode 찍어보면 매번 생성되는 것을 알 수 있다. 따라서 AppWidgetProvider 를 상속 받아 사용할 때 멤버 변수에 값을 저장하고 사용하는 방식등은 초기화 되기 때문에 조심해야한다. 위젯 좋은 예제 Coil 썸네일 구현하기 Coil 은 썸네일 기능을 따로 제공하지 않고 있습니다. 이때 사용해 볼 수 있는 확장 함수 입니다. fun ImageView.loadOriginalImage(originUrl: String, thumbnailUrl: String) { CoroutineScope(Dispatchers.Main.immediate).launch { val thumbnail = async(Dispatchers.IO) { val request = ImageRequest.Builder(context) .data(thumbnailUrl) .build() Coil.execute(request).drawable } val original = async(Dispatchers.IO) { val request = ImageRequest.Bu.. 이전 1 2 3 4 5 6 다음