/reference/android/support/v4/widget/ViewDragHelper.html 该类主要用于拖拽view的实现,例如侧滑菜单时候的左右拖拽或者上下拖拽 使用方法 创建...ViewDragHelper实例 ViewDragHelper create (ViewGroup forParent, float sensitivity,...ViewDragHelper.Callback cb) 参数1 要使用DragHelper的布局 参数2 灵敏度,值越大越灵敏,1.0属于正常 参数3 回调,这里是主要阵地 事件拦截于处理 重写布局的.../** * 因为要在 DragHelper的中使用动画 */ @Override public void computeScroll() { super.computeScroll();...= 0; break; } return true; } /** * 因为要在 DragHelper的中使用动画
Purpose 通过这篇文章你将会掌握以下几个知识点: ViewDragHelper的简单入门 ViewDragHelper的关键API用途 使用ViewDragHelper实现view的拖拽 use...所以如果你想快速简便的实现手势操作,ViewDragHelper是不二之选。 Demo 下面通过一个实例来对ViewDragHelper的主要Api的使用进行分析。首先来看下要实现的初步效果。 ?...所以熟练使用ViewDragHelper不仅能提高我们的实现效率与代码质量还能减少出错率。...下面是实际项目中使用ViewDragHelper的效果图,与饿了么的商品详情界面效果类似。 ?...上面的手势动画使用的就是ViewDragHelper,而用到的Api也是全部是文章中提到的。
https://blog.csdn.net/gdutxiaoxu/article/details/51935896 使用ViewDragHelper打造属于自己的DragLayout(抽屉开关...首先我们先来看一下我们要怎样使用它 其实只需要两个 步骤,使用起来 非常方便 1.在XML文件 DragLayout至少要有两个孩子,且都是 ViewGroup或者ViewGroup的实现类 使用ViewDragHelper来 处理触摸事件和拖拽事件的的,ViewDragHelper是2013Google IO大会推出的,目的是为了给开发者提供一个处理触摸事件,节省开发者的时间。...关于Google官方 关于ViewDragHelper的解释,简单来说就是处理ViewGroup的 触摸事件和拖拽事件 ViewDragHelper is a utility class for writing...---- 下面的代码有关于这几个方法的中文解释,这里就不详细讲解了 ViewDragHelper.Callback mCallback = new ViewDragHelper.Callback(
ViewDragHelper: Google2013年IO大会提出的, > 解决界面控件拖拽移动问题....public class DragLayout extends FrameLayout { private static final String TAG = "TAG"; private ViewDragHelper...super(context, attrs, defStyle); // a.初始化 (通过静态方法) mDragHelper = ViewDragHelper.create...(this , mCallback); } ViewDragHelper.Callback mCallback = new ViewDragHelper.Callback
注意:这里使用scrollBy(xOffset,yOffset);,你会发现并没有效果,因为以上两个方法移动的是View的content。...若在ViewGroup中使用,移动的是所有子View;若在View中使用,移动的是View的内容(比如TextView)。所以,不可在view中使用以上方法!...要想使用scrollBy,应该在View所在的ViewGroup中使用: ((View)getParent()).scrollBy(offsetX, offsetY); canvas 通过改变Canvas...ViewDragHelper 要理解ViewDragHelper,我们需要掌握以下几点: ViewDragHelper.Callback是连接ViewDragHelper与view之间的桥梁; ViewDragHelper...ViewDragHelper使用 ViewDragHelper的初始化 ViewDragHelper一般用在一个自定义ViewGroup的内部,比如下面自定义了一个继承于LinearLayout的DragLayout
要实现这个效果有三种方式: ① 手势 ② 动画 ③ ViewDragHelper 这里我使用的是ViewDragHelper类. public class ViewDragLayout extends...300; //上面可见的View private View mTopView; //下面详情View private View mBottomView; //ViewDragHelper...实例 private ViewDragHelper mViewDragHelper; private GestureDetectorCompat mGestureDetectorCompat...float distanceY) { return Math.abs(distanceY) > Math.abs(distanceX); } } } 使用...android:layout_height="match_parent"/> bottom_fragment_view中使用了
ViewDragHelper简化了很多工作,让我们更加关注“业务”的需求,实现步骤如下: 创建ViewDragHelper实例 处理ViewGroup的触摸事件 ViewDragHelper.Callback...使用dragHelper.setEdgeTrackingEnabled(ViewDragHelper.EDGE_LEFT)设置ViewGroup左边缘可以被拖拽,同时在ViewDragHelper.Callback...的onEdgeDragStarted方法中,使用dragHelper.captureChildView主动去捕获第二个View:edgeDragView。...注意,此方法内部是通过Scroller实现的,所以我们需要使用invalidate来刷新,同时需要重写computeScroll方法: @Overridepublic void computeScroll...至此,ViewDragHelper的基本使用方式我们已经介绍完了。
ViewDragHelper: Google2013年IO大会提出的, > 解决界面控件拖拽移动问题....*/ public class DragLayout extends FrameLayout { private static final String TAG = "TAG"; private ViewDragHelper...AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // a.初始化 (通过静态方法) mDragHelper = ViewDragHelper.create...(this , mCallback); } ViewDragHelper.Callback mCallback = new ViewDragHelper.Callback() { // c.
实现View的滑动有很多种方法,如自己在onTouchEvent中处理触摸事件,然后滚动View到相应位置,也可以用google V4包为我们提供的ViewDragHelper来处理触摸事件,我们这里选择后者...,因为滑动退出操作都是在屏幕的边缘时触发,而ViewDragHelper刚好提供了想要的实现,可以说利用ViewDragHelper来实现我们的需求非常简单。...attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } } 既然使用...ViewDragHelper,我们把触摸事件交给ViewDragHelper处理,ViewDragHelper不熟悉的同学,相关知识,网上一大堆,自行查看 @Override public...private void init() { mViewDragHelper = ViewDragHelper.create(this, 1.0f, new ViewDragHelper.Callback
借助于 ViewDragHelper 轻松实现复杂的拖拽效果。 3. 分析 ViewDragHelper 源码说明它能实现拖拽的原因(放心,不会头晕,只涉及一点点源码)。...上面就是官网对于 ViewDragHelper,它的本质了只是一个工具类而已,为了更好地运用在拖拽这一动作上。 我们先看看它的使用方法。...ViewDragHelper 的创建 static ViewDragHelper create(ViewGroup forParent, float sensitivity, ViewDragHelper.Callback...cb) static ViewDragHelper create(ViewGroup forParent, ViewDragHelper.Callback cb) ViewDragHelper...那么,用 ViewDragHelper 怎么来实现这样的行为呢? 首先,得声明 ViewDragHelper 能够识别哪些连续触摸行为。
最近学习到Fragment的使用时候,碰到一个问题。主程序程序布局非常简单: ViewDragHelper.java:874) at android.support.v4.widget.ViewDragHelper.forceSettleCapturedViewAt(ViewDragHelper.java...:592) at android.support.v4.widget.ViewDragHelper.settleCapturedViewAt(ViewDragHelper.java:569) at android.support.v4...(ViewDragHelper.java:767) at android.support.v4.widget.ViewDragHelper.releaseViewForPointerUp(ViewDragHelper.java...:1395) at android.support.v4.widget.ViewDragHelper.processTouchEvent(ViewDragHelper.java:1213) at android.support.v4
mVelocityTracker.recycle() Scroller scrollBy() 内部还是调用了scrollTo() scrollTo() 和 scrollBy() mTextView.scrollTo(0, 25) ViewDragHelper...简化View的拖拽操作 ViewDragHelper mViewDragHelper = ViewDragHelper.create(context, 1.0f, new ViewDragHelper.Callback...clampViewPositionVertical(View child, int left, int dx) onViewDragStateChanged(int state){ ViewDragHelper.STATE_DRAGGING...: ViewDragHelper.STATE_IDLE: ViewDragHelper.STATE_SETTLING: } } 然后代理两个方法 ```java public
一般来说,使用 Scroller 类要有下面三个步骤: 1、初始化 Scroller 类的对象:Scroller scroller = new Scroller(context) 2、重写要滑动的...invalidate(); break; } return true; } } 对于 activity_main.xml,我们则需要使用我们自定义的布局...轮到我们的 ViewDragHelper 类出场了,通过 ViewDragHelper 我们可以灵活地对不同的 View 施加不同的滑动效果,下面我们来看一下怎么使用这个功能强大的类: 1、初始化 ViewDragHelper...对象:通常使用 ViewDragHelper.create(ViewGroup v, ViewDragHelper.Callback c); 方法来初始化一个新的 ViewDragHelper 对象...处理触摸事件的回调 private ViewDragHelper.Callback callback = new ViewDragHelper.Callback() { /*
> //初始化我们即将使用的三个子...其实Android support V4架包已经为我们提供了ViewDragHelper类,来辅助我们在自定义ViewGroup时,来处理子View的滑动需求。...下面我们就简单介绍下ViewDragHelper的用法。...1.我们先实例化一个ViewDragHelper对象mDragHelper,可以在onAttachedToWindow()方法中初始化,也可以在ViewGroup的构造器中初始化。...上面已经将ViewDragHelper初始化完毕,那么现在就需要将MineMiView的触摸事件传递给mDragHelper,其实跟利用GestureDetector来处理手势事件是类似的。
前几天看网友有仿这个 效果,觉得不错,现在分享出来,代码可以再优化,这里的播放器使用的是B站的ijkplayer,先上两张动图。 ? 当图片到达底部后,左右拖动 ?...然后,对于拖动到底部的View,我们需要实现左右拖动的效果,这个其实也是比较容易实现的,我们通过ViewDragHelper的onViewPositionChanged方法来判断当前视图的状况,就可以做...所以这里我们需要对ViewDragHelper个各种回调事件进行监听。...这也是本功能最核心的: private class FlexCallback extends ViewDragHelper.Callback { @Override...= null) { // 因为在用到ViewDragHelper处理布局交互的时候,若是有子View的UI更新导致重新Layout的话,需要我们自己处理ViewDragHelper
deleteView.layout(contentViewWidth, 0, contentViewWidth + deleteViewWidth, deleteViewHeight); } 处理滑动逻辑 利用ViewDragHelper...需要把ViewGroup中受到的触摸事件传给ViewDragHelper实例。...触摸事件传给ViewDragHelper实例 @Override public boolean onInterceptTouchEvent(MotionEvent ev) {...mViewDragHelper.processTouchEvent(event); //消费掉此触摸事件,不向上返回 return true; } 在ViewDragHelper...private ViewDragHelper mViewDragHelper; private ViewDragHelper.Callback callback = new ViewDragHelper.Callback
所以第一个思路就是: 使用相对布局 使用相对布局,其实可以满足所有控件都在一个层级之内的,而且可以满足我们初始的任何样式的布局。况且相对布局是 Android 官方推荐使用的布局。...那就是: 使用 ViewDragHelper ViewDragHelper 是一个非常棒的东西,好用,简单,不需要你去计算。...ViewDragHelper 是 framework 中不为人知却非常有用的一个工具。...所以说 ViewDragHelper 等的出现反映了安卓开发框架已经开始向成熟的方向迈进。...关于 ViewDragHelper 的具体用法,这里不过多赘述,想了解的,在网上一搜,有非常多的文章都在介绍它的基本使用方法。 3.3 再次 再次,我们该如何把拖动的视图的位置,保存住呢?
比如知乎、百度贴吧等,用户在使用这一类的 app 都可以滑动返回上一个页面。不得不说这个设计很赞,是不是心动了呢?那就继续往下看吧!...仔细看源码你会惊奇地发现其中的奥秘,没错,正是借助了 ViewDragHelper 来实现滑动返回的效果。ViewDragHelper 我想不必多说了,在我的博客中有很多的效果都是通过它来实现的。...那么,下面我们就使用 ViewDragHelper 来实现这个效果吧。 自定义属性 首先,我们应该先定义几个自定义属性,比如说支持用户从左边或者右边滑动返回,丰富用户的选择性。...另外在 initView() 中初始化了阴影图片,以备下面中使用。...整体来说还是比较通俗易懂的,而且对 ViewDragHelper 熟悉的人会发现,使用 ViewDragHelper 自定义一些 ViewGroup 的套路都是大同小异的。
一 透明的显示底层Activity,可以使用透明主题,也可以使用其他主题,但是必须修改主题的几个属性,来达到透明的效果,如: true 二 谷歌在V4包中,增加ViewDragHelper...因此在这里我们选择ViewDragHelper来实现滑动功能。 三 阴影绘制,Paint画笔来绘制。...我们使用画笔的setShader(),通过写一个LinearGradient(),再绘制一个矩形,得到阴影效果。...我们在使用的时候,在布局文件中,一定要在根布局设置背景颜色,否则整个布局将会是透明的。
既然有这么多可供选择的侧滑菜单使用,那为什么我们还要自己写呢?我觉得我们在使用侧滑菜单的时候应该要懂得其中的原理,更好的,可以自己写一个侧滑菜单来加深体会。 好了,话不多说。...RelativeLayout> 看完了布局文件,下面我们就来看看代码(以下为部分代码,并非全部): public class SlidingMenu extends FrameLayout { private ViewDragHelper...在构造器中新建了一个ViewDragHelper的对象。...如果你还不知道ViewDragHelper为何物,建议你去看看鸿洋_的《Android ViewDragHelper完全解析 自定义ViewGroup神器》,这里就不展开叙述了。...在ViewDragHelper.create(Context context,ViewDragHelper.Callback callback)里我们传入了一个回调callback,那接下来就来看看这个
领取专属 10元无门槛券
手把手带您无忧上云