仿微信滑动退出

本文详细介绍了如何在Android中实现仿微信的滑动退出功能,包括从左侧拖动整个View、释放后的平滑动画、双指点击触发、滑动监听、阴影效果以及自定义属性的添加。通过自定义DragFinishLayout,结合OnTouchEvent和属性动画,实现了滑动退出的交互体验。注意Activity的主题需设置为透明。
摘要由CSDN通过智能技术生成

仿微信滑动退出

以下是实现顺序
- 实现从左侧拖动整个View,并让整个View随着手指头移动
- 实现释放后平滑回到原地或滑出屏幕,并Finish当前Activity
- 实现双指触发和左侧边缘触发
- 添加滑动监听
- 添加阴影效果
- 添加自定义属性


转载请注明出处 http://blog.csdn.net/BalckSeven/article/details/51118534

【来自BlackSeven的CSDN博客

1.实现从左侧拖动整个View,并让整个View随着手指头移动

我们知道在android window的最外层view被称之为decorview,它是window外层的容器,它的下面才是我们自己写的XML文件里的RootView。DecorView是一个FrameLayout,因此我们能通过滑动FrameLayout来实现View的滑动。

首先,我们选择继承常用的Layout来实现我们的DragFinishLayout,这里我选择RelativeLayout。并重写它的第二个构造函数。定义一个名为parent的FrameLayout作为decorview的引用。

public class DragFinishLayout extends RelativeLayout{
   
    private FrameLayout parent;
    public DragFinishLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        }
}

之后重写OnTouchEvent。

    private int oldX;
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        int action = event.getAction();
        int moveX = 0;
        switch (action) {
        case MotionEvent.ACTION_DOWN:
            oldX = (int) event.getRawX();
            break;
        case MotionEvent.ACTION_MOVE:
            moveX = (int) event.getRawX() - oldX;
            doDragging(moveX);
            break;
        case MotionEvent.ACTION_UP:
            if (isDragging) {
                releaseDrag();
            }
            break;
        }
        return true;
    }

之所以在ontouch里面初始化parent,是因为在构造函数里是取不到的,只有Activity setContentView 将XML文件 inflate出来以后,我们才能取到这个decorview,因此我选择在onTouchEvent里获取。
doDragging(moveX)拖拽的处理方法,releaseDrag()则是拖拽释放后的方法。

下面是doDragging的实现

private void doDragging(int dx) {
    if (!isDragging && dx < 0) {
        return;
    }
    isDra
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值