- 浏览: 5778052 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (890)
- WindowsPhone (0)
- android (88)
- android快速迭代 (17)
- android基础 (34)
- android进阶 (172)
- android高级 (0)
- android拾遗 (85)
- android动画&效果 (68)
- Material Design (13)
- LUA (5)
- j2me (32)
- jQuery (39)
- spring (26)
- hibernate (20)
- struts (26)
- tomcat (9)
- javascript+css+html (62)
- jsp+servlet+javabean (14)
- java (37)
- velocity+FCKeditor (13)
- linux+批处理 (9)
- mysql (19)
- MyEclipse (9)
- ajax (7)
- wap (8)
- j2ee+apache (24)
- 其他 (13)
- phonegap (35)
最新评论
-
Memories_NC:
本地lua脚本终于执行成功了,虽然不是通过redis
java中调用lua脚本语言1 -
ZHOU452840622:
大神://处理返回的接收状态 这个好像没有监听到 遇 ...
android 发送短信的两种方式 -
PXY:
拦截部分地址,怎么写的for(int i=0;i<lis ...
判断是否登录的拦截器SessionFilter -
maotou1988:
Android控件之带清空按钮(功能)的AutoComplet ...
自定义AutoCompleteTextView -
yangmaolinpl:
希望有表例子更好。。。,不过也看明白了。
浅谈onInterceptTouchEvent、onTouchEvent与onTouch
只是简单记录一下
以后可能会实现一些效果
ItemTouchHelper之SwipeDismiss
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0822/3349.html
https://medium.com/@ipaulpro/drag-and-swipe-with-recyclerview-b9456d2b1aaf
ViewDragHelper.CallBack中每个方法的用法
http://m.blog.csdn.net/blog/coder_nice/44678153
以后可能会实现一些效果
import android.content.Context; import android.graphics.Point; import android.support.v4.widget.ViewDragHelper; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.widget.LinearLayout; /** * http://blog.csdn.net/lmj623565791/article/details/46858663 * http://flavienlaurent.com/blog/2013/08/28/each-navigation-drawer-hides-a-viewdraghelper/ * http://blog.denevell.org/android-viewdraghelper-example-tutorial.html */ public class VDHLayout extends LinearLayout { private View mDragView,mAutoBackView,mEdgeTrackerView; private ViewDragHelper mDragHelper; private Point mAutoBackOriginPos = new Point(); public VDHLayout(Context context, AttributeSet attrs) { super(context, attrs); mDragHelper = ViewDragHelper.create(this, 1.0f, new ViewDragHelper.Callback() { //返回ture则表示可以捕获该view;可以根据传入的view参数决定哪些可以拖动 @Override public boolean tryCaptureView(View child, int pointerId) { //mEdgeTrackerView禁止直接移动 // return child == mDragView || child == mAutoBackView; return true; } //控制水平拖动的边界 @Override public int clampViewPositionHorizontal(View child, int left, int dx) { final int leftBound = getPaddingLeft(); final int rightBound = getWidth() - child.getWidth() - leftBound; final int newLeft = Math.min(Math.max(left, leftBound), rightBound); return newLeft; // return left; } //控制垂直拖动的边界 @Override public int clampViewPositionVertical(View child, int top, int dy) { final int topBound = getPaddingTop(); final int bottomBound = getHeight() - child.getHeight() - topBound; final int newTop = Math.min(Math.max(top, topBound), bottomBound); return newTop; // return top; } //手指释放的时候回调 @Override public void onViewReleased(View releasedChild, float xvel, float yvel) { super.onViewReleased(releasedChild, xvel, yvel); // if(yvel>0) { // mDragHelper.settleCapturedViewAt(releasedChild.getLeft(), getMeasuredHeight()-releasedChild.getMeasuredHeight()); // } else { // mDragHelper.settleCapturedViewAt(releasedChild.getLeft(), 0); // } // invalidate(); // //mAutoBackView手指释放时可以自动原路返回 // if (releasedChild == mAutoBackView) // { // //调用settleCapturedViewAt回到初始的位置 // mDragHelper.settleCapturedViewAt(mAutoBackOriginPos.x, mAutoBackOriginPos.y); // //需要invalidate()以及结合computeScroll方法一起 // invalidate(); // } } //在边界拖动时回调 @Override public void onEdgeDragStarted(int edgeFlags, int pointerId) { //在onEdgeDragStarted回调方法中,主动通过captureChildView对其进行捕获,该方法可以绕过tryCaptureView,所以我们的tryCaptureView虽然并为返回true,但却不影响 //注意如果需要使用边界检测需要添加上mDragger.setEdgeTrackingEnabled(ViewDragHelper.EDGE_LEFT);。 mDragHelper.captureChildView(mEdgeTrackerView, pointerId); } //让clickable=true的子控件也可以拖动 @Override public int getViewHorizontalDragRange(View child) { return getMeasuredWidth()-child.getMeasuredWidth(); } //让clickable=true的子控件也可以拖动 @Override public int getViewVerticalDragRange(View child) { return getMeasuredHeight()-child.getMeasuredHeight(); } //改变同一个坐标(x,y)去寻找captureView位置的方法。(具体在:findTopChildUnder方法中) @Override public int getOrderedChildIndex(int index) { // TODO Auto-generated method stub return super.getOrderedChildIndex(index); } //true的时候会锁住当前的边界,false则unLock。 @Override public boolean onEdgeLock(int edgeFlags) { // TODO Auto-generated method stub return super.onEdgeLock(edgeFlags); } //当触摸到边界时回调。 @Override public void onEdgeTouched(int edgeFlags, int pointerId) { // TODO Auto-generated method stub super.onEdgeTouched(edgeFlags, pointerId); } //当captureview被捕获时回调 @Override public void onViewCaptured(View capturedChild, int activePointerId) { // TODO Auto-generated method stub super.onViewCaptured(capturedChild, activePointerId); } //当ViewDragHelper状态发生变化时回调(IDLE,DRAGGING,SETTING[自动滚动时]) @Override public void onViewDragStateChanged(int state) { // TODO Auto-generated method stub super.onViewDragStateChanged(state); } //当captureview的位置发生改变时回调 @Override public void onViewPositionChanged(View changedView, int left, int top, int dx, int dy) { // TODO Auto-generated method stub super.onViewPositionChanged(changedView, left, top, dx, dy); } }); //如果需要使用边界检测需要添加上 mDragHelper.setEdgeTrackingEnabled(ViewDragHelper.EDGE_LEFT); } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); // mDragHelper = ViewDragHelper.create(this, 1.0f, new OurViewDragHelperCallbacks()); } @Override public boolean onInterceptTouchEvent(MotionEvent event) { // final int action = MotionEventCompat.getActionMasked(event); // if (action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_UP) { // mDragHelper.cancel(); // return false; // } return mDragHelper.shouldInterceptTouchEvent(event); } @Override public boolean onTouchEvent(MotionEvent event) { mDragHelper.processTouchEvent(event); return true; } @Override public void computeScroll() { super.computeScroll(); if(mDragHelper.continueSettling(true)) { invalidate(); // ViewCompat.postInvalidateOnAnimation(this); } } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { super.onLayout(changed, l, t, r, b); mAutoBackOriginPos.x = mAutoBackView.getLeft(); mAutoBackOriginPos.y = mAutoBackView.getTop(); } @Override protected void onFinishInflate() { super.onFinishInflate(); // mHeaderView = findViewById(R.id.viewHeader); // mDescView = findViewById(R.id.viewDesc); mDragView = getChildAt(0); mAutoBackView = getChildAt(1); mEdgeTrackerView = getChildAt(2); } }
<com.mb.door.VDHLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:layout_width="100dp" android:layout_height="100dp" android:layout_gravity="center" android:layout_margin="10dp" android:background="#FFff0000" android:gravity="center" android:text="I can be dragged !" /> <TextView android:layout_width="50dp" android:layout_height="100dp" android:layout_gravity="center" android:layout_margin="10dp" android:background="#FF00FF00" android:gravity="center" android:text="I can be dragged !" /> <TextView android:layout_width="100dp" android:layout_height="50dp" android:layout_gravity="center" android:layout_margin="10dp" android:background="#FF0000FF" android:gravity="center" android:text="I can be dragged !" /> </com.mb.door.VDHLayout>
ItemTouchHelper之SwipeDismiss
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0822/3349.html
https://medium.com/@ipaulpro/drag-and-swipe-with-recyclerview-b9456d2b1aaf
ViewDragHelper.CallBack中每个方法的用法
http://m.blog.csdn.net/blog/coder_nice/44678153
发表评论
-
利用广播实现强制下线功能
2016-12-28 10:45 1424最近一口气买 ... -
Android百分比布局Percent支持库
2015-09-02 11:08 3106虽然有很多的布局可以在 Android 应用程序开发的世界供我 ... -
android5.x之Palette调色板
2015-07-17 10:30 3296Palette类可以分析一张图片,取出这张图片的特征色,然后为 ... -
使用ClipboardManager剪贴板实现复制粘贴功能
2015-04-10 14:39 3740经常要使用复制粘贴的功能,比如长安一个TextView弹出一个 ... -
LocationListener监听位置变化,当进入到某一距离内时发出提醒
2014-08-19 15:03 7633项目中需要这样的要求: 启动一个服务一直在背后监听当前位置变化 ... -
Android下集成FacebookSDk到项目并发表评论
2013-08-28 14:36 4836项目中需要发表自己的评论到Facebook,需要集成Faceb ... -
MediaRecorder录音,MediaPlayer播放
2013-05-23 09:53 7474直接看代码 import java.io.DataOutp ... -
Notification的基本用法
2013-05-22 11:52 5918android4.0以前: private static ... -
android音频、视频、拍照基础操作
2013-03-27 11:55 2769播放音乐和视频用的是类:MediaPlayer 刻录声音和视 ... -
tabhost通过手势滑动切换activity
2013-02-18 17:59 11106package com.mars.mp3player; ... -
VideoView简单视频播放
2013-02-17 17:17 9249只是上上手而已的例子。 package com.chen ... -
android 再按一次后退键退出应用程序
2012-06-15 21:51 4067private static Boolean isExit ... -
AlarmManager全局定时器/闹钟
2012-02-01 10:11 5825http://407827531.iteye.com/blog ... -
倒计时的CountDownTimer
2011-12-23 13:06 31151直接看这里吧,我只是搬运工。 定时执行在一段时候后停止的倒计 ... -
Android流量统计TrafficStats类的使用
2011-12-06 16:25 26396对于Android流量统计来说在2.2版中新加入了Traffi ... -
ScrollView当显示超出当前页面时自动移动到最底端
2011-09-01 09:42 16953卷轴视图(ScrollView)是指当拥有很多内容,一屏显示不 ... -
在SurfaceView上拖动一架飞机
2011-08-23 12:40 2884接上一篇在SurfaceView上拖动一张小图片 什么叫拖动飞 ... -
在SurfaceView上拖动一张小图片
2011-08-22 18:20 5195用手指随便拖。这里采用了线程去绘制,其实也可以在onTouch ... -
用getIdentifier()获取资源Id
2011-07-28 22:36 10725做项目过程中遇到一个问题,从数据库里读取图片名称,然后调用图片 ... -
利用VelocityTracker监控对触摸的速度跟踪
2011-07-28 22:12 10021VelocityTracker就是速度跟踪的意思。我们可以获得 ...
相关推荐
ViewDragHelper 实现的侧拉滑动效果,可以用来学习
ViewDragHelper源码
viewdraghelper的使用介绍 http://blog.csdn.net/zivensonice/article/details/51499806
用ViewDragHelper自定义ViewGroup,简化事件拦截逻辑
ViewDragHelper使用,自定义Viewgroup,包含两个textview,可以滑动这两个view。
一个使用ViewDragHelper来实现的 安卓抽屉式滑动效果
ViewDragHelper实战 自己打造Drawerlayout 效果仿照http://blog.csdn.net/lmj623565791/article/details/47396187
仿QQ5.0侧滑(ViewDragHelper的使用)
用ViewDragHelper撸了一个类似QQ的侧滑删除,并且支持在列表控件中使用
用ViewDragHelper实现View拖动,可实现浮动窗口等。
SwipeLayout 利用ViewDragHelper优雅实现侧滑删除功能,代码简洁,效果不错,适应于任何View
介绍了ViewDragHelper的基本应用以及ViewDragHelper中Callback的几个常用回调方法的使用
用ViewDragHelper做的自定义侧滑菜单,并解决了与ScrollView的滑动事件冲突问题,方便大家研究
原博客地址 http://blog.csdn.net/lmj623565791/article/details/46858663 我只是提供了一个Eclipse版本,只为方便后面学习的同学
ViewDragHelper是support.v4下提供的用于处理拖拽滑动的辅助类。接下来通过本文给大家介绍Android ViewDragHelper使用,感兴趣的朋友一起看看吧
用ViewDragHelper简单的写的测试demo,说明了 clampViewPositionVertical等callback方法的应用
ViewDragHelper完全解析
ViewDragHelperDemo demo中实现了使用ViewDragHelper实现以下功能: 自定义ViewGroup实现测试菜单 自定义ViewGroup实现view的拖拽效果,带回弹效果 #效果图