打开关闭左侧使用动画

This commit is contained in:
yangyakun
2022-06-30 13:17:14 +08:00
parent f53e9249a5
commit e491dc1617

View File

@@ -1,5 +1,7 @@
package com.mogo.och.taxi.passenger.ui.leftmenu
import android.animation.Animator
import android.animation.ValueAnimator
import android.annotation.SuppressLint
import android.app.Activity
import android.content.Context
@@ -7,6 +9,7 @@ import android.graphics.PixelFormat
import android.graphics.Rect
import android.graphics.Region
import android.view.*
import android.view.animation.LinearInterpolator
import android.widget.ListView
import androidx.appcompat.widget.AppCompatImageView
import androidx.constraintlayout.widget.ConstraintLayout
@@ -165,14 +168,27 @@ object OverlayLeftViewUtils {
* 打开状态栏
*/
private fun open(overlayView: View,windowManager: WindowManager?) {
acivOpenClose?.apply {
pivotX = (width /2).toFloat()
pivotY = (height /2).toFloat()
rotation = 0f
val valueAnimator = ValueAnimator.ofInt(params!!.x, 0)
valueAnimator.duration = 100
valueAnimator.interpolator = LinearInterpolator()
valueAnimator.addUpdateListener {
params?.x = it.animatedValue as Int
windowManager?.updateViewLayout(overlayView, params)
}
params?.x = 0
windowManager?.updateViewLayout(overlayView, params)
closeByTime(overlayView, windowManager)
valueAnimator.addListener(object : Animator.AnimatorListener {
override fun onAnimationStart(animation: Animator?) {}
override fun onAnimationEnd(animation: Animator?) {
acivOpenClose?.apply {
pivotX = (width /2).toFloat()
pivotY = (height /2).toFloat()
rotation = 0f
}
closeByTime(overlayView, windowManager)
}
override fun onAnimationCancel(animation: Animator?) {}
override fun onAnimationRepeat(animation: Animator?) {}
})
valueAnimator.start()
}
private fun closeByTime(
@@ -197,13 +213,26 @@ object OverlayLeftViewUtils {
* 关闭状态栏
*/
private fun close(overlayView: View,windowManager: WindowManager?) {
acivOpenClose?.apply {
pivotX = (width /2).toFloat()
pivotY = (height /2).toFloat()
rotation = 180f
val valueAnimator = ValueAnimator.ofInt(params!!.x, DEVIATION_WIDTH)
valueAnimator.duration = 100
valueAnimator.interpolator = LinearInterpolator()
valueAnimator.addUpdateListener {
params?.x = it.animatedValue as Int
windowManager?.updateViewLayout(overlayView, params)
}
params?.x = DEVIATION_WIDTH
windowManager?.updateViewLayout(overlayView, params)
valueAnimator.addListener(object : Animator.AnimatorListener {
override fun onAnimationStart(animation: Animator?) {}
override fun onAnimationEnd(animation: Animator?) {
acivOpenClose?.apply {
pivotX = (width /2).toFloat()
pivotY = (height /2).toFloat()
rotation = 180f
}
}
override fun onAnimationCancel(animation: Animator?) {}
override fun onAnimationRepeat(animation: Animator?) {}
})
valueAnimator.start()
}
private fun layoutParams(ani: Int,view :View) {