资讯专栏INFORMATION COLUMN

ViewDragHelper和SwipeBackLayout的若干笔记

andycall / 2732人阅读

摘要:是一个好用的第三方库特别是,因为是中文,代码也很简单,主要是以下几个文件以及默认继承自的。的使用依赖,但是其使用了较高版本中的官方类,不过方法是直接引用了一个文件。使用库的需要在中设置即可。

SwipeBackLayout

SwipeBackLayout是一个好用的第三方库(特别是README,因为是中文T.T),代码也很简单,主要是以下几个文件:

Utils.java

SwipeBackLayout.java

ViewDragHelper.java

以及默认继承自FragmentActivitySwipeBackActivity

SwipeBackLayout的使用依赖android-support-4.jar,但是其使用了较高版本中的ViewDragHelper官方类,不过方法是直接引用了一个文件。

AppCompatActivity的使用

新时代中,经历了ActionBarActivity之后,迎来了新的AppCompatActivity,对于继承自FragmentActivitySwipeBackActivity自然是不够用,不过好在SwipeBackActivity结构简单,只需要模仿代码中SwipeBackActivity的写法,继承自AppCompatActivity即可。

public class AppCompatSwipeBackActivity extends AppCompatActivity implements SwipeBackActivityBase {
    private SwipeBackActivityHelper mHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mHelper = new SwipeBackActivityHelper(this);
        mHelper.onActivityCreate();;
    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        mHelper.onPostCreate();
    }

    @Override
    public View findViewById(int id) {
        View v = super.findViewById(id);
        if (v == null &&  mHelper != null) {
            return mHelper.findViewById(id);
        }
        return v;
    }

    @Override
    public SwipeBackLayout getSwipeBackLayout() {
        return mHelper.getSwipeBackLayout();
    }

    @Override
    public void setSwipeBackEnable(boolean enable) {
        getSwipeBackLayout().setEnableGesture(enable);
    }

    @Override
    public void scrollToFinishActivity() {
        Utils.convertActivityToTranslucent(this);
        getSwipeBackLayout().scrollToFinishActivity();
    }
}

使用SwipeBackLayout库的Activity需要在Theme中设置

true

即可。

参考资料

ViewDragHelper的使用 ViewDragHelper特性

ViewDragHelper.Callback连接了ViewDragHelper和其需要处理的View(其实必须是ViewGroup

ViewDragHelper必须通过工程静态方法ViewDragHelper.create创建

可以指定拖动方向

可以检测是否触及边缘

ViewDragHelper不直接处理拖动的View,而是通过callback使其容器对View进行操作

ViewDragHelper本质是分析OnInterceptTouchEventOnTouchEventMotionEvent参数,从而改变容器中被拖动的子View位置

ViewDragHelper是在自定义Layout中而不是在一个任意的Layout中使用。 使用方法

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/12452.html

相关文章

  • Android实现SwipeBack(右滑退出)效果

    摘要:效果演示初始状态滑动中状态结束状态这是目前实现在中的效果。在中采用的方案是使用一个叫的未公开的,再配合中把设置为,即可实现上层的背景为透明。使用这个回调进行一些是否可以滑动以及滑动距离的判定。实现这个效果就是这么简单欢迎关注我以及 效果演示 初始状态 showImg(https://segmentfault.com/img/bVmEJE); 滑动中状态 showImg(http...

    sixgo 评论0 收藏0
  • 利用ViewDragHelper轻松实现Android拼图游戏

    摘要:将拼图按九宫格切割,生成添加到并进行排列。控制滑动边界的实现。控制在水平方向的滑动,主要用来限定滑动的左右边界。和配合实现松手后的动画效果。交换两个的值判断是否拼图完成。 前言 最近一段时间看了一些介绍ViewDragHelper的博客,感觉这是一个处理手势滑动的神奇,看完以后就想做点东西练练手,于是就做了这个Android拼图小游戏。 先上个效果图 showImg(https://s...

    zzir 评论0 收藏0
  • 利用ViewDragHelper轻松实现Android拼图游戏

    摘要:将拼图按九宫格切割,生成添加到并进行排列。控制滑动边界的实现。控制在水平方向的滑动,主要用来限定滑动的左右边界。和配合实现松手后的动画效果。交换两个的值判断是否拼图完成。 前言 最近一段时间看了一些介绍ViewDragHelper的博客,感觉这是一个处理手势滑动的神奇,看完以后就想做点东西练练手,于是就做了这个Android拼图小游戏。 先上个效果图 showImg(https://s...

    williamwen1986 评论0 收藏0
  • ViewDragHelper之手势操作神器

    摘要:是对操作的回调,绝对多数手势操作都是在这个回调中完成。为了让帮助我们简化手势操作,所以还需为它传入相关的。分别调用的与来简化手势的操作判断。将手势操作全部交由来实现。有了的捕获判断,接下来对水平方向的操作进行判断。 在Android中避免不了自定义ViewGroup,来实现我们原生控件所不能满足的需求。尤其是复杂的ViewGroup实现,手势的处理是避免不了的。我们要针对不同的View...

    e10101 评论0 收藏0
  • 使用ViewDragHelper自定义左右可滑动内容ViewGroup

    摘要:通过在自定义的内部使用使得给自定义的在水平方向上并排按序添加多个子可以实现水平左右滚动的效果类似于官方解释如下不做翻译原汁原味的英语更易理解使用内部定义了一个静态内部类我们需要重写根据需要重写相关的方法在你的自定义的方法内调用在方法内部调用 通过在自定义的ViewGroup内部使用ViewDragHelper,使得给自定义的ViewGroup在水平方向上并排按序添加多个子View(Vi...

    sugarmo 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<