지난 포스팅에서 안드로이드 마사지 앱 개발 콘셉에 대해 간단하게 소개를 했다. 기능 구현을 목표로 기본 컨트롤로 화면을 구성을 했었는데, 보기 좋은 떡이 맛도 좋은 것처럼 애니메이션 효과를 추가해 보자.
애니메이션을 추가한 초기화면
앱 인트로에 애니메이션을 추가한 화면이다. 뭔가 재미있는 기능들이 숨어 있을 것 같은 궁금증을 생기게 하고 전제적인 UI 디자인과도 잘 맞는다. 버튼에 토글 기능을 추가해 하나의 버튼으로 마사지 진동 On/Off를 구현했다.
안드로이드 기본 라이브러리는 해당 기능이 제공되지 않으므로 오픈 소스 라이브러리를 추가한다. Gradle Scripts에 해당 라이브러리를 추가한다. 현재 최신 버전은 3.4.4이다. 버전 정보와 사용법은 아래에서 확인할 수 있다. https://airbnb.io/lottie/#/android?id=getting-started
[build.gradle (module)]
dependencies {
....
def lottieVersion = "3.4.4"
implementation "com.airbnb.android:lottie:$lottieVersion"
}
Lottie Animation 파일 받기
인터넷에 Lottie Animation을 검색하거나 Lottie 사이트에서 마음에 드는 걸 찾아 내려받는다. 간단한 회원가입 후 내려받을 수 있다.
1. Lottie 사이트 접속 ( lottiefiles.com/ )
2. 선택한 이미지 JSON 파일로 다운로드
3. 안드로이드 스튜디오 asset 폴더 생성
4. asset폴더에 JSON파일 카피하기
5. UI 화면에 Lottie 이미지 추가하기
activity_main.xm에 ImageView를 생성하고 lottie 애니메이션 속성을 설정한다.
[activity_main.xm]
- app:lottie_fileName="heart_fluttering.json" -- 애니메이션 파일명
- app:lottie_autoPlay="true" -- 자동 실행 설정 (화면이 열릴 때 애니메이션 자동 실행 여부)
- app:lottie_loop="true" -- 반복 실행 설정 (일반적으로 Lottie 애니메이션이 2~3초 내외로 짧다)
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/ono_btn"
android:layout_width="300dp"
android:layout_height="300dp"
android:background="@android:color/white"
app:lottie_fileName="heart_fluttering.json"
app:lottie_autoPlay="true"
app:lottie_loop="true"
android:layout_centerInParent="true"
/>
XML에 Lottie 애니메이션을 추가해도 Design화면에는 나타나지 않는다. 실행 시 화면에 나타난다.
[UI Design 화면]
코틀린 코드 보기
코틀린 소스에 버튼에 대한 이벤트를 추가하자. 앱 시작 callback 함수 onCreate()에 아래 코드를 추가한다. Lottie 버튼을 눌렀을 때 애니메이션을 start/stop 하고 마사지 진동도 애니메이션에 맞게 On/Off 한다.
- ono_btn.playAnimation() // 애니메이션 실행
- ono_btn.pauseAnimation() // 애니메이션 중지
- 버튼 토글 처리는 it.tag 값에 0,1로 설정한다.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
vibrator = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
val aTimings = longArrayOf(0, 1000, 1000, 500, 500)
val aAmplitudes = intArrayOf(0, 50, 0, 100, 0)
// 진동 효과 (진동유형(시간), 진동세기, 반복(0:무한반복, -1:한번)
val vibrationEffect = VibrationEffect.createWaveform(aTimings, aAmplitudes, 0)
ono_btn.setOnClickListener{
if (it.tag == 1) { // 진동 켜기
ono_btn.playAnimation() // 애니메이션 실행
vibrator?.vibrate(vibrationEffect) // 진동 켜기
textView_comment.text = "ON"
it.tag = 0
} else { // 진동 끄기
ono_btn.pauseAnimation() // 애니메이션 중지
vibrator?.cancel() // 진동 끄기
textView_comment.text = "OFF"
it.tag = 1
}
}
Next Step
Lottie 애니메이션 기초 사용법을 알아보았다. Lottie가 오픈소스가 Github에 소스와 Documentation이 제공이 된다. 애니메이션과 마사지 진동을 연동해 기능을 구현하면 사용자 만족도와 선택지가 높아질 거 같다.
'코드리뷰 > 코틀린 리뷰' 카테고리의 다른 글
안드로이드 마사지 앱 게시하다 (Awesome Vibrator) (0) | 2020.10.20 |
---|---|
로또 931회 당첨결과 및 932회 당첨번호 예상! (안드로이드 로또 앱) (0) | 2020.10.04 |
안드로이드 마사지 어플 만들기 (코틀린) (2) | 2020.10.04 |
댓글