package com.k.android.player.ui
import android.animation.Animator
import android.animation.ObjectAnimator
import android.content.Context
import android.util.AttributeSet
import android.view.MotionEvent
import android.widget.RelativeLayout
import com.k.android.utils.Log
import com.k.android.utils.Utils
class SlideRightView(context: Context, attr: AttributeSet):RelativeLayout(context,attr){
/**
* 点击时x点的位置
*/
private var lastX = 0
var animation:ObjectAnimator?=null
private var onSlideRightListener:()->Unit={}
private var downX = 0;
override fun onTouchEvent(event: MotionEvent): Boolean {
val x = event.rawX.toInt()
when (event.action) {
MotionEvent.ACTION_DOWN -> {
lastX = x
downX = x;
}
MotionEvent.ACTION_MOVE -> {
var offsetX = x - lastX
if(offsetX<0){//只能向上滑动
offsetX=0
}
layout(left+offsetX,top,right+offsetX,bottom)
lastX = x
}
MotionEvent.ACTION_UP -> {
var offsetX = x - downX
if(offsetX<width/2){
startAnim(left,1)
}else{
if(width-offsetX>0){
startAnim(width,2)
}else{
onSlideRightListener()
}
}
}
}
return true
}
/**
* 设置动画移动偏移量
*/
fun startAnim(leftOffSet:Int,mark:Int){
if(mark==2){//是移出屏幕动画
animation = ObjectAnimator.ofInt(this,"offset",left,leftOffSet)
}else{
animation = ObjectAnimator.ofInt(this,"offset",leftOffSet,0)
}
animation?.duration = 200
animation?.addListener(object:Animator.AnimatorListener{
override fun onAnimationRepeat(animation: Animator?) {
}
override fun onAnimationEnd(animation: Animator?) {
//证明移出界面则执行监听
if(mark==2){
onSlideRightListener()
}
}
override fun onAnimationCancel(animation: Animator?) {
}
override fun onAnimationStart(animation: Animator?) {
}
})
animation?.start()
}
/**
* 设置动画执行的内容,此方法由Object动画框架执行
*/
fun setOffset(newPos: Int) {
layout(newPos,top,width+newPos,bottom)
}
/**
* 设置向右移动到顶部的监听
*/
fun setOnSlideRight(onSlideRightListener:()->Unit){
this.onSlideRightListener = onSlideRightListener;
}
}