공부한 것
- CameraX
- Glide
- Content Resolver
- ScaleGestureDetector
알게된 것
1. AddTextChangedListener
대부분의 어플리케이션에서 검색창에 검색어를 입력하면 사용자가 Enter
를 누르기도 전에 입력한 검색어에 따라 자동완성 검색어가 변경되는 것을 볼 수 있다. 이를 구현하기 위해선 EditText
의 텍스트 변화를 감지해야하는데 이를 AddTextChangedListener
를 통해 감지할 수 있다.
private fun bindViews() = with(binding) {
editTextView.addTextChangedListener {
Log.d("Changed!", editTextView.text.toString())
// Todo - 검색 API 구현
}
}
로그를 찍어보았다. 사용자의 입력에 따라 로그가 출력되는 것을 볼 수 있다.
2. CameraX
3. ScaleGestureDectector
안드로이드에서는 자체적으로 줌 인, 줌 아웃 기능을 제공한다. ScaleGestureDectector
를 활용하고 onScale
의 매개변수로 넘겨주는 detector
의 scaleFactor
를 곱해주면 된다.
private fun bindViews() {
var scale = 1.0F
// 리스너 객체를 구현하고
val scaleGestureListener = object : ScaleGestureDetector.SimpleOnScaleGestureListener() {
override fun onScale(detector: ScaleGestureDetector): Boolean {
scale *= detector.scaleFactor
Log.d("kodohyeon", scale?.toString()!!)
return true
}
}
// 생성자에 전달
val scaleGestureDetector = ScaleGestureDetector(this, scaleGestureListener)
// 발생한 터치이벤트를 전달
binding.root.setOnTouchListener { v, event ->
scaleGestureDetector.onTouchEvent(event)
return@setOnTouchListener true
}
}
로그를 찍어보면 4배까지 증가했다가 0.5배로 감소하는 것을 볼 수 있다.
4. Application Class
오늘 CameraX
프로젝트를 구현하면서 구현 초기에 Application 클래스
를 상속하는 CameraXApplication 클래스
를 정의했다. 프로젝트를 완성하고 Application
에 대해 좀 더 알아보았다. 우선 공식 문서에서는 이렇게 설명한다.
즉, 해당 클래스를 전역으로 사용하기 위해서 필요하고 Manifest의 Application
에 설정하면 해당 클래스보다 먼저 인스턴스화된다는 의미이다. 이번 프로젝트에서는 Camera2
의 Config
값을 CameraX
에 전달하기 위해 사용했다.
package com.example.camerax
import android.app.Application
import androidx.camera.camera2.Camera2Config
import androidx.camera.core.CameraXConfig
class CameraXApplication : Application(), CameraXConfig.Provider {
override fun getCameraXConfig(): CameraXConfig = Camera2Config.defaultConfig()
}
사실 이 부분을 작성하지 않아도 된다. CameraX
의 구글 코드랩도 이 부분 없이 코드를 작성하고 있다. 아무튼 클래스 간 객체를 전달할 때 Application
을 활용하면 유용할 듯 싶다.
공부할 것
자기 전에 MVVM 개념 맛보기
느낀 점
재밌다.
'💻 개발 > iOS' 카테고리의 다른 글
[TIL] 22.03.20 (0) | 2022.03.20 |
---|---|
[TIL] 22.03.19 (0) | 2022.03.19 |
[TIL] 22.03.16 (0) | 2022.03.16 |
[TIL] 22.03.15 (0) | 2022.03.15 |
[TIL] 22.03.14 (0) | 2022.03.14 |