实现可拖拽View 工具类
2017-01-15 00:00
134 查看
工具是一个FrameLayout,用的时候把需要实现拖拽的view放进去就可以了。
没有事件冲突的问题。
原文地址:https://my.oschina.net/reone/blog/825133
没有事件冲突的问题。
package com.reone.loushi.customView; import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.WindowManager; import android.widget.FrameLayout; /** * Created by wangxingsheng on 2017/1/15. * */ public class DragLayout extends FrameLayout { private int lastX; private int lastY; private int screenWidth; private int screenHeight; public DragLayout(Context context) { super(context); init(); } public DragLayout(Context context, AttributeSet attrs) { super(context, attrs); init(); } public DragLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } public void init() { WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE); screenWidth = wm.getDefaultDisplay().getWidth(); screenHeight = wm.getDefaultDisplay().getHeight(); } @Override public boolean dispatchTouchEvent(MotionEvent event) { int ea = event.getAction(); switch (ea) { case MotionEvent.ACTION_DOWN: lastX = (int) event.getRawX(); lastY = (int) event.getRawY();//按钮初始的横纵坐标 break; case MotionEvent.ACTION_MOVE: int dx = (int) event.getRawX()-lastX; int dy = (int) event.getRawY()-lastY;//按钮被移动的距离 int l = getLeft()+dx; int b = getBottom()+dy; int r = getRight()+dx; int t = getTop()+dy; if(l<0){//处理按钮被移动到上下左右四个边缘时的情况,决定着按钮不会被移动到屏幕外边去 l = 0; r = l+getWidth(); } if(t<0){ t = 0; b = t+getHeight(); } if(r>screenWidth){ r = screenWidth; l = r - getWidth(); } if(b>screenHeight){ b = screenHeight; t = b-getHeight(); } layout(l, t, r, b); lastX = (int) event.getRawX(); lastY = (int) event.getRawY(); postInvalidate(); break; default: break; } return super.dispatchTouchEvent(event); } }
原文地址:https://my.oschina.net/reone/blog/825133
相关文章推荐
- android imageview 多点触碰(MultiTouch)实现图片拖拽移动缩放
- android Viewpager HorizontalScrollView 实现分页栏拖拽
- 安卓实现自由拖拽view的几种方式
- Android一步一步带你实现RecyclerView的拖拽和侧滑删除功能
- 自定义可拖拽View(工具类ViewDragHelper的用法)
- 教学:如何实现拖拽文件到NSTableView中
- Android一步一步带你实现RecyclerView的拖拽和侧滑删除功能
- Android实现RecyclerView侧滑删除和长按拖拽-ItemTouchHelper
- android,侧滑栏SlidingLayout、ViewPager实现画廊、简单用viewpager实现画廊、圆形图片、简单的跑马灯动画效果、可拖拽的弹簧式水泡动画集合
- Android一步一步带你实现RecyclerView的拖拽和侧滑删除功能
- android Viewpager HorizontalScrollView 实现分页栏拖拽
- Android自定义View实现图片显示,并实现缩放、拖拽、切换功能
- QGraphicsView 中实现拖拽
- Android实现RecyclerView侧滑删除和长按拖拽-ItemTouchHelper
- android imageview 多点触碰(MultiTouch)实现图片拖拽移动缩放
- android imageview 多点触碰(MultiTouch)实现图片拖拽移动缩放
- Android实现拖拽GridView到目标View
- Android ImageView的拖拽实现
- ViewPager封装工具类: 轻松实现APP导航或APP中的广告栏
- Android一步一步带你实现RecyclerView的拖拽和侧滑删除功能