Android仿今日头条图片滑动退出效果-Kotlin版

  1. 下滑时,随着手指的移动,图片区域跟随移动,并且activity的背景和页码逐渐变的透明
  2. 滑动距离不超过设定的临界值时,会有回弹效果。
  3. 滑动超过设置的临界值时,放开手指,页面滑动退出消失
  4. 图片可以正常放大缩小,页面不跟随手指上下滑动
  5. 使用了共享元素的页面切换效果

上代码

class SlideCloseLayout(context: Context, attrs: AttributeSet? = null) : FrameLayout(context, attrs) {

    private var previousX: Float = 0f
    private var previousY: Float = 0f
    private var scrollListener: LayoutScrollListener? = null

    init {
        background?.alpha = 255
    }


    override fun onInterceptTouchEvent(ev: MotionEvent?): Boolean {
        ev?.pointerCount?.let {
            if (it > 1) return false
            val y: Float = ev.rawY
            val x: Float = ev.rawX
            when (ev.action) {
                MotionEvent.ACTION_DOWN -> {
                    previousX = x
                    previousY = y
                }
                MotionEvent.ACTION_MOVE -> {
                    val diffY = y - previousY
                    val diffX = x - previousX
                    if (diffY <= 0) return false
                    if (Math.abs(diffX) + 50 < Math.abs(diffY)) {
                        return true
                    }
                }
            }
        }
        return false
    }

    override fun onTouchEvent(ev: MotionEvent?): Boolean {
        ev?.let {
            val y = ev.rawY
            val x = ev.rawX
            when (ev.action) {
                MotionEvent.ACTION_DOWN -> {
                    previousX = x
                    previousY = y
                }
                MotionEvent.ACTION_MOVE -> {
                    val d
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值