• 实现Activity的滑动返回效果


    介绍

    在知乎client上看到了这样的效果。左滑Activity能够返回到上一界面。非常适合单手操作。
    这里写图片描写叙述

    找了非常久,最终在github上看到了SwipeBackLayout这个开源项目。地址:

    https://github.com/ikew0ng/SwipeBackLayout

    实现

    须要使用到的类:

    SwipeBackActivity.java
    SwipeBackLayout.java
    ViewDragHelper.java
    • 使当前的Activity继承SwipeBackActivity
    public class BaseActivity extends SwipeBackActivity {
    
        private SwipeBackLayout mSwipeBackLayout;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            mSwipeBackLayout = getSwipeBackLayout();
            //设置滑动方向,可设置EDGE_LEFT, EDGE_RIGHT, EDGE_ALL, EDGE_BOTTOM
            mSwipeBackLayout.setEdgeTrackingEnabled(SwipeBackLayout.EDGE_LEFT);
        }
    }
    • 在使用的主题中加入以下的属性,否则滑动时activity的下层是黑色的
    <item name="android:windowIsTranslucent">true</item>  
    • 当使用BaseActivity时,为了使首页不会滑动删除,仅仅需例如以下设置就可以
    setSwipeBackEnable(false); //禁止滑动删除
    • 另外。这个滑动删除的效果仅仅能从边界滑动才有效果。假设要扩大touch的范围,能够调用
    mSwipeBackLayout.setEdgeSize(int size);

    可是上面这种方法不太好用。效果不明显,推荐改动ViewDragHelper.java这个类源代码中的getEdgeTouched(int x, int y)方法,例如以下

    private int getEdgeTouched(int x, int y) {
            int result = 0;
    
            result = EDGE_LEFT;//这样每次都是全屏左滑删除
    
            //解决仅仅有点击屏幕左边才有响应的问题
            /*if (x < mParentView.getLeft() + mEdgeSize)
                result = EDGE_LEFT;
            if (y < mParentView.getTop() + mEdgeSize)
                result = EDGE_TOP;
            if (x > mParentView.getRight() - mEdgeSize)
                result = EDGE_RIGHT;
            if (y > mParentView.getBottom() - mEdgeSize)
                result = EDGE_BOTTOM;*/
    
            return result;
        }

    经过上面步骤,应该就能如期实现效果了。


    以下放上我的Demo截图:
    这里写图片描写叙述

    这是Demo源代码
    开发工具:AndroidStudio

  • 相关阅读:
    第十四周课程总结&实验报告(简单记事本的实现)
    第十三周课程总结
    第十二周课程总结
    第十一周课程总结
    第十周课程总结
    第九周课程总结&实验报告(七)
    第八周课程总结&实验报告(六)
    第七周课程总结&实验报告(五)
    第五周课程总结&实验报告(四)
    2019JAVA课程总结
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/7224557.html
Copyright © 2020-2023  润新知