feat: 달력 월 이동 애니메이션 개선
- AccelerateDecelerateInterpolator 적용으로 자연스러운 가속/감속 곡선 구현 - 스케일 효과(scaleX/scaleY 0.95) 추가로 깊이감 있는 화면 전환 - 애니메이션 지속시간 200ms → 280ms로 조정 - 알파 페이드 0.5 → 0.7로 조정하여 가독성 향상 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -10,6 +10,7 @@ import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.view.GestureDetector
|
||||
import android.view.MotionEvent
|
||||
import android.view.animation.AccelerateDecelerateInterpolator
|
||||
import android.widget.Toast
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.app.ActivityCompat
|
||||
@@ -708,7 +709,7 @@ class MainActivity : AppCompatActivity() {
|
||||
private fun animateMonthTransition(direction: Int) {
|
||||
val card = binding.calendarCard
|
||||
val width = card.width.toFloat()
|
||||
|
||||
|
||||
if (width == 0f) {
|
||||
currentViewMonth = if (direction > 0) {
|
||||
currentViewMonth.plusMonths(1)
|
||||
@@ -718,11 +719,14 @@ class MainActivity : AppCompatActivity() {
|
||||
updateCalendar()
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
card.animate()
|
||||
.translationX(if (direction > 0) -width else width)
|
||||
.alpha(0.5f)
|
||||
.setDuration(200)
|
||||
.alpha(0.7f)
|
||||
.scaleX(0.95f)
|
||||
.scaleY(0.95f)
|
||||
.setDuration(280)
|
||||
.setInterpolator(AccelerateDecelerateInterpolator())
|
||||
.withEndAction {
|
||||
currentViewMonth = if (direction > 0) {
|
||||
currentViewMonth.plusMonths(1)
|
||||
@@ -730,12 +734,18 @@ class MainActivity : AppCompatActivity() {
|
||||
currentViewMonth.minusMonths(1)
|
||||
}
|
||||
updateCalendar()
|
||||
|
||||
|
||||
card.translationX = if (direction > 0) width else -width
|
||||
card.scaleX = 0.95f
|
||||
card.scaleY = 0.95f
|
||||
|
||||
card.animate()
|
||||
.translationX(0f)
|
||||
.alpha(1f)
|
||||
.setDuration(200)
|
||||
.scaleX(1f)
|
||||
.scaleY(1f)
|
||||
.setDuration(280)
|
||||
.setInterpolator(AccelerateDecelerateInterpolator())
|
||||
.start()
|
||||
}
|
||||
.start()
|
||||
|
||||
Reference in New Issue
Block a user