[Android APP] feat. Kotlin(71)
-
Kotlin : Lottie Library(애니메이션 적용)
Lottie가 뭔가요? Lottie는 AirBnB에서 제공하는 오픈소스 라이브러리이다. Json 기반 애니메이션을 랜더링하면 벡터 기반의 애니메이션이기 때문에 용량이 적고 해상도 저하가 없다는 것이 특징이다. 또한 적용이 쉽고 무료 애니메이션이 많기 때문에 사용자와 재밌게 소통해보기 위해 사용해보았다 1. (app:bundle) dependencies 추가 //lottie animation implementation 'com.airbnb.android:lottie:6.0.0' 현재 최신 버전 6.0.0 2. lottie 사이트 접속 후 로그인 https://lottiefiles.com/ LottieFiles: Download Free lightweight animations for website & ap..
2023.02.22 -
Kotlin : Fragment의 생명주기
1. Fragment의 생명주기 - Fragment의 생명주기는 Activity의 생명주기와 유사하다. - Fragment의 생명주기는 중단(Stopped), 일시 중지(Paused), 실행 재개(Resumed) 상태를 가지며, 상태가 전환될 때 필요한 일을 처리하기 위해 오버라이드할 수 있는 함수들도 갖는다. 2. 프래그먼트에서 최소한으로 구현해야 하는 3개의 생명 주기 메서드 onCreate() 프래그먼트를 생성할 때 호출. 프래그먼트가 일시정지 혹은 중단 후 재개되었을 때 유지하고 있어야 하는 것을 초기화한다. onCreateView() 프래그먼트가 자신의 인터페이스를 처음 그리기 위해 호출. View를 반환해야 한다. 이 메서드는 프래그먼트의 레이아웃 루트이기 때문에 UI를 제공하지 않는 경우에는..
2023.02.05 -
Kotlin : ImageView 이미지 확대, 축소, 회전 기능
문제 상황 Image를 ImageView에 띄어준 뒤, 이미지에 있는 작은 글씨를 보기 위해 이미지 확대/축소 기능이 필요했다. 해결 1. TouchMode 등 선언 internal enum class TOUCHMODE { NONE, SINGLE, MULTI } private var touchMode: TOUCH_MODE? = null private var matrix : Matrix? = null private var savedMatrix : Matrix? = null private var startPoint: PointF? = null private var midPoint : PointF? = null private var oldDistance = 0f private var oldDegree = 0...
2023.02.02 -
Kotlin : Thread, Handler
문제 상황 Http Connection을 이용해 서버에서 이미지 파일을 input Stream으로 불러와 bitmap으로 변환해준 후 imageView에 띄어주는 작업을 하던 도중 이미지가 띄어지지 않고, Resume() 상태에 있다가 재접속 시에는 띄어지는 현상이 발생했다. 원인 Android에서 HTTP Connection을 사용할 때, Main Thread는 UI를 위한 리소스를 사용해야 하기 때문에 별도의 Thread로 통신해야 한다. 따라서 별도의 Thread를 사용하고, 그 함수 안에서 바로 ImageView에 띄어주도록 작업을 해놨었다. Thread란? 동시 작업을 위한 하나의 실행 단위로, 앱을 실행하면 메인 스레드가 실행되고 사용자가 추가로 작업이 필요할 경우 별도의 스레드를 할당해서 동..
2023.02.02 -
Android : Kotlin Retrofit 동기 처리
문제 상황 for문으로 retrofit을 호출하는데 0~5까지 Request 파라미터를 넣는 상황에서 RecyclerView에 item이 순서대로 들어가지 않고 랜덤으로 (0, 1, 2, 3, 4, 5가 아니라 1, 2, 0, 5, 4)이런 식으로 들어가서 골치아픈 일이 있었다. 원인 Retrofit 라이브러리는 "비동기식"으로 처리되기 때문에 순차적으로 호출되는게 아니라 메모리에 따라서 먼저 호출될수도, 나중에 호출될 수도 있다. 따라서 Thread나 Coroutine을 사용해 동기식 처리 방식으로 바꿔주어 순서대로 RecyclerView에 item을 넣어줄 수 있다. for(jobtype in 0..5) { Log.d("Retro", "${jobtype+1}번 째 루프 도는중..") workforce..
2022.11.02 -
Android Kotlin : 안드로이드 Activity 생명 주기
생명주기(LifeCycle)란? 사용자가 앱을 사용할 때 액티비티 인스턴스는 수명주기 안에서 상태가 바뀌게 된다. Activity 클래스는 액티비티가 상태 변화를 알 수 있도록 Callback을 제공한다. 안드로이드 앱이 실행된 후, 다른 액티비티 화면으로 전환되거나, 화면이 꺼지거나, 폰 상태바를 내려서 액티비티가 가려지거나, 앱이 종료되는 등의 활동이 일어나면 상태변화가 일어난다고 한다. 이러한 상태 변화가 있을 때 화면에 보이는 액티비티의 생명주기 메서드를 호출해서 상태 변화를 알려줘야 한다. 생명주기 콜백을 사용해야 하는 이유 화면 전환이나 다양한 이유로 비정상 종료가 될 수 있다. 또한 사용자가 현재 진행하고 있는 상태가 저장되지 않아 작성하고 있는 내용이 초기화 될 수 있다. 사용자가 앱을 사..
2022.10.22