Android & Kotlin
-
[ Android ] View 의 이미지 화 (구글 맵 마커 커스터 마이징 예제)Android & Kotlin 2022. 6. 20. 00:52
📌 배경 구글맵의 마커 부분을 기존 서비스에서 제공하는 ui 형태가 아닌 새로운 ui 로 커스터마이징 해서 사용하고 싶어 찾던중 View 를 Bitmap 으로 변환하는 방법을 알게 되었습니다. 📌 주요 코드 분석 1. View 의 Instance 화 커스터마이징할 뷰를 생성하고 인플레이트하여 인스턴스화 시켜줍니다. 그 외 필요한 값에 대해 초기화 해줍니다. 2. View 의 위치 및 크기 설정 measure 함수를 호출함으로써 onMeasure 가 내부적으로 호출되고 비로서 우리는 View 의 크기에 대한 접근을 할 수 있게 됩니다. 그전에는 0 값을 반환함. measure 의 인자인 measureSpec 에 UNSPECIFIED 에 해당하는 0 을 넣었습니다. https://developer.andro..
-
[ Android ] 안드로이드 저장소 정리 (Legacy, Scoped Storage)Android & Kotlin 2022. 6. 12. 20:08
Android Storage 요약 안드로이드는 시스템은 내부 저장소와 외부저장소를 갖는다. 내부 저장소는 변화가 없지만 외부 저장소에 대해서는 안드로이드 10 버전 이후로 변경되었다. 변경전 외부 저장소를 Legacy storage, 이후 저장소를 ScopedStorage로 명명한다. ScopedStorage로 변경되면서 다른 앱에서 외부저장소에 저장한 파일들에 대한 접근이 까다로워졌다. 1. 내부 저장소 앱을 설치하면 해당 앱을 위한 저장공간이 할당됨 해당 앱에서만 접근이 가능함 앱이 삭제되면 같이 삭제됨 저장 공간이 한정되어 용량이 큰 데이터는 외부 저장소를 이용하는 것이 좋음 캐시 데이터, 데이터베이스, 파일등을 저장한다. 2. 외부 저장소 공용 공간이 타입별로 분리됨 공용공간의 미디어 파일 경우 ..
-
[Android] Background Task1 : WorkManager 개념 및 예제Android & Kotlin 2022. 6. 7. 02:01
📍 Android 에서의 Background의 의미 안드로이드에서의 Background 는 말 그대로 눈에 보이지 않는 곳에서의 작업을 말한다. Activity 를 예로 들면 onResume 부터 onPause 까지에서의 작업을 를 Foreground 작업 그 이외 사용자에게 보이지 않는 상태에서의 작업을 Background 작업이라고 할 수 있다. 📌 BackgroundTask 구분하기 작업에 대해 어떤 Background 솔루션을 사용할지를 고민해볼 필요가 있다. 기존에 FirebaseJobDispatcher, GcmNetworkManager, Job Scheduler 등 이전 백그라운드 Api 를 WorkManager가 대체하게 되었다. 현재는 백그라운드 작업에 대해 WorkManager, Alar..
-
[ Android ] 이미지 라이브러리 분석 : GlideAndroid & Kotlin 2022. 5. 4. 19:30
Android 이미지 처리 라이브러리중 하나로 Picasso, Fresco 와 함께 가장 널리 사용되고 있는 라이브러리입니다. 최근에는 Glide와 더불어 Coil이 많이 쓰인다고 합니다. Glide 에서도 caching 에 대해 좀 더 중점적으로 공부하고 정리해보았습니다. 1. Glide 기본 사용법 빌더 패턴을 사용하며 로딩을 위해 3가지의 함수를 호출 public static RequestManager with(Context context) // Glide.java public RequestBuilder load(String string) // RequestManager.java public ViewTarget into(ImageView view) // RequestBuilder.java resiz..
-
[ Android ] CustomView 필요성 및 구현 방법 (Kotlin)Android & Kotlin 2022. 3. 4. 15:14
1. CustomView의 필요성 기존의 View로는 구현할 수 없은 View 잠금해제 화면 : 터치를 받고 드레그를 인식해서 UI 에 나타내는 VIew 더 정밀한 제어가 필요한 경우 버튼과 일정 거리 이상 가까워지면 반응한단거나 하는 독특한 기능이 필요한 경우 특정 View lifecycle 에 따른 여러 뷰의 조작이 필요한 경우 여러 화면에서 사용하는 경우 재활용 가능 설정화면에서 설명과 토글 버튼 등등이 하나의 세트로 여러번 사용될 때 재활용할 수 있음 custom view 적용시 수정 상황에 대해서 일괄적인 수정이 가능함 CustomView 는 생각보다 복잡하고 손이 많이 가지만 한번 익혀놓으면 재활용성이 뛰어나 많은 도움이 되는 것 같습니다. ( 그러나 위와 같은 필요성이 없는 경우엔 구현에 손..
-
[ Android ] customView의 onDraw 함수 디버깅 기록Android & Kotlin 2022. 3. 4. 14:37
1. 문제 상황 CumtomView 특정 점이 터치가 되면 리스너로 View(MVP 모델의 ) 전달하고 해당 위치 데이터를 이용해 Presenter 를 거쳐 Model을 업데이트 한 뒤 다시 model 의 바뀐 내용대로 포문을 돌면서 커스텀 뷰를 그렸다. 즉 다시말해 customView 밖에서 리스트를 순회하면서 customView의 onDraw 및 invalidate() 를 여러번 호출 상황이었다. 그런데 커스텀뷰가 잘 그려질 때도 있고 그려지지 않을 때도 있었다. 특히 모델의 데이터 즉 리스트가 커질 수록 이 문제는 두드러지게 나타났다. data의 흐름을 따라 디버깅을 해도 별 문제가 없었고 하루를 통째로 날렸다. ㅜㅜㅜ // 문제가 발생하던 코드 // 이하 Activity // ... overrid..
-
[ Android ] startActivityForResult deprecated 이유와 대안( Activity Result API)Android & Kotlin 2022. 2. 15. 23:49
0. StartActivity vs startActivityForResult (ActivityResult ) 앨범에서 사진을 가져오는 상황과 같이 Activity끼리의 양방향 통신이 필요할 때 startActivityForResult 함수를 써왔습니다. StartActivity 는 단순히 Activity: A -> B 로의 화면전환이라면 StartAcivityForResult 는 A -> B -> A 인 상황에서 A로 돌아올 때 B에서의 정보를 가져온다. A 에서 함수를 호출해서 B로 가고, B에서 작업을 마치고 필요한 데이터를 가지고 다시 A 로 돌아왔음을 알 수 있는 방법입니다. 이동할 Activity 나 Fragment 자체에 리스너를 넘길 수 없으니 B에서 A 로 돌아왔을 때 특정 행동을 즉시 실..
-
[ 코틀린 ] 코루틴2 : Coroutine 사용하기 - 기초Android & Kotlin 2022. 2. 2. 17:33
코루틴의 개념을 먼저 이해하고 싶으시다면 아래 게시글 선행을 추천드립니다. 이번 편에서 코루틴을 사용하는 매우 간단한 방법을 소개합니다. 코루틴에대한 시행착오 및 응용은 다음 포스팅에서 다루겠습니다. https://easycodediary.tistory.com/95 [ 코틀린 ] 코루틴1 : Coroutine 이해하기 1. 코루틴 이란? 코루틴이란 실행의 지연과 재개를 허용함으로서, 비 선점적 멀티태스킹을 위한 서브루틴을 일반화한 컴퓨터 프로그램 구성요소이다. (위키피디아 참고) 2. 루틴과 코루틴 루틴 easycodediary.tistory.com 인텔리제이에서 코루틴 라이브러리 추가하는 법 https://stackoverflow.com/questions/52522282/using-kotlinx-cor..