안드로이드 jetpack cameraX로 카메라를 구현한다.
근데 이 때 좀.. 문제가 있는데, 셔터 애니메이션을 제공하지 않는다(!) 그래서 토스트 등으로 처리해주지 않으면 사진이 찍혔는지 아닌지 전혀 알 수가 없게 되어있다.
그래서 애니메이션을 구현했다(!)
먼저, 화면 위에 프레임 레이아웃을 하나 더 만들어줘야 한다.
...
<FrameLayout
android:id="@+id/frameLayoutShutter"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_1E1E1E"/>
</androidx.constraintlayout.widget.ConstraintLayout>
이제 애니메이션을 anim 폴더에 생성한다.
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
>
<alpha
android:duration="100"
android:fromAlpha="0"
android:toAlpha="1"/>
<alpha
android:duration="100"
android:startOffset="100"
android:fromAlpha="1"
android:toAlpha="0"/>
</set>
이 프레임을 애니메이션 시작 직전에 불러오고, 애니메이션이 끝나면 숨길 것이다.
기본적으로 valueAnimation은 콜백 리스너를 따로 제공하지 않기 때문에 애니메이션 리스너를 따로 만들어서 attach시켜줘야 한다.
애니메이션을 전역변수로 설정해놓고, 매서드로 전역변수에 애니메이션을 지정한다.
private lateinit var cameraAnimationListener : Animation.AnimationListener
private fun setCameraAnimationListener() {
cameraAnimationListener = object : Animation.AnimationListener {
override fun onAnimationStart(animation: Animation?) {
}
override fun onAnimationEnd(animation: Animation?) {
frameLayoutShutter.visibility=View.GONE
}
override fun onAnimationRepeat(animation: Animation?) {
}
}
}
이 매서드로 애니메이션이 끝날 때 뷰를 삭제시킬것이다.
이제 이 애니메이션을, value 애니메이션에 attach 시키면 된다.
override fun onImageSaved(outputFileResults: ImageCapture.OutputFileResults) {
val savedUri = Uri.fromFile(photoFile)
val animation = AnimationUtils.loadAnimation(this@CameraActivity, R.anim.camera_shutter)
animation.setAnimationListener(cameraAnimationListener)
frameLayoutShutter.animation = animation
frameLayoutShutter.visibility=View.VISIBLE
frameLayoutShutter.startAnimation(animation)
DlogUtil.d(TAG, "imageCapture")
}
반응형
'Project > 안드로이드 프로젝트(RandomColorChart)' 카테고리의 다른 글
Android Studio, Kotlin] 12. CameraX로 사진을 찍고 미리보기를 띄우기 (4) | 2021.03.15 |
---|---|
Android Studio, Kotlin] 9. 애니메이션을 통해 플로팅 메뉴 만들기 (0) | 2021.03.11 |
Android Studio, Kotiln] 8. 커스텀 토스트 만들기 (0) | 2021.02.18 |
Android Studio, Kotiln] 7. 지정 텍스트 복사 (0) | 2021.02.18 |
Android Studio, Kotlin] 6. (Open Source) Holo Color Picker (0) | 2021.02.17 |