[重写开源框架源码]SwipeBackLayout实现全屏滑动
来源:互联网 发布:阿里云 商标注册 编辑:程序博客网 时间:2024/06/02 01:59
在日常开发中,导入开源框架有时候不能完成项目的需要,没办法,这时候只好去重写它的部分原来,以达到自己想要的需求。
目录:
- 目录
- SwipeBackLayout开源框架
- 在SwipeBackLayoutjava中最后那里增加这部分代码
- 在ViewDragHeperjava中最后那里这个去修改源码
- 然后再activity中调用的时候只需要这样
SwipeBackLayout开源框架
它可以实现app的侧滑返回,类似他趣中的右滑返回上一个activity。该项目地址:https://github.com/ikew0ng/SwipeBackLayout
但是它不能实现全屏侧滑,可能是笔者自己水碧,尝试了它提供的各种办法都不能实现。于是,索性修改它源码,其实也就增加几句话而已。
① 在SwipeBackLayout.java中,最后那里增加这部分代码
public static final int FULL_SCREEN_LEFT = ViewDragHelper.EDGE_LEFT; public static final int FULL_SCREEN_TOP = ViewDragHelper.EDGE_TOP; public static final int FULL_SCREEN_RIGHT = ViewDragHelper.EDGE_RIGHT; public static final int FULL_SCREEN_BOTTOM = ViewDragHelper.EDGE_BOTTOM; public static final int ORIGINAL = 0X31; public void setSwipeMode(int mode) { if (mode == SwipeBackLayout.ORIGINAL) { mDragHelper.setTouchedFullScreen(false, 0); } else { mDragHelper.setTouchedFullScreen(true, mode); } }
② 在ViewDragHeper.java中,最后那里这个去修改源码
private int getEdgeTouched(int x, int y) { int result = 0; if (touch_flag) { result = flag; } else { 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; } private boolean touch_flag; private int flag; public void setTouchedFullScreen(boolean touch_flag,int flag) { this.touch_flag = touch_flag; this.flag = flag; }
③然后再activity中调用的时候只需要这样
getSwipeBackLayout().setSwipeMode(SwipeBackLayout.FULL_SCREEN_LEFT); getSwipeBackLayout().setEdgeTrackingEnabled(SwipeBackLayout.EDGE_LEFT);
在原来的句子前面增加一句就可以全屏滑动了:
getSwipeBackLayout().setSwipeMode(SwipeBackLayout.FULL_SCREEN_LEFT);
相应的如果你是左滑而不是右滑,只需这样:
getSwipeBackLayout().setSwipeMode(SwipeBackLayout.FULL_SCREEN_RIGHT);getSwipeBackLayout().setSwipeMode(SwipeBackLayout.EDGE_RIGHT);
如果你想通过代码动态改变滑动方式,调用以下:
getSwipeBackLayout().setSwipeMode(SwipeBackLayout.ORIGINAL);
0 0
- [重写开源框架源码]SwipeBackLayout实现全屏滑动
- [重写开源框架源码]HorizontalListView的滑动冲突解决
- [重写开源框架源码]InfiniteViewPager在ScrollView中不能竖直滑动问题解决
- Android SwipeBackLayout 滑动返回 java 代码实现
- SwipeBackLayout实现滑动结束当前Activity
- 用SwipeBackLayout实现滑动关闭当前Activity
- Android滑动退出Activity的三方框架swipebacklayout
- Android SwipeBackLayout实现滑动返回上一级页面
- 使用SwipeBackLayout实现滑动退出页面的效果
- 初学者---Android 使用SwipeBackLayout实现滑动返回上一级页面
- 滑动返回-SwipeBackLayout
- SwipeBackLayout滑动返回
- 滑动返回SwipeBackLayout
- Android滑动退出---SwipeBackLayout
- SwipeBackLayout源码解析
- 滑动返回库SwipeBackLayout解析
- Android滑动返回-swipebacklayout解析
- 安卓滑动返回 SwipeBackLayout
- 安装插件 使VIM自动补齐
- 啃java的日子TCP 编程
- 19.1 MDI 的概念
- php本地包含
- innodb_flush_log_at_trx_commit和sync_binlog参数详解
- [重写开源框架源码]SwipeBackLayout实现全屏滑动
- 蓝桥杯 算法训练 未名湖边的烦恼
- 发现一个好东西
- GetCharPos
- 自主研发异步通信框架Minma(支持长连接和短连接)
- 宏定义
- zzulioj--1712--Monty Hall problem(蒙提霍尔问题)
- Direct3d & opengl & 3d max的配置和使用
- failed to resolve com.android.support:appcompat-v7:23+ 解决方法