Android 自定义可拖拽View,界面渲染刷新后不会自动回到起始位置
来源:互联网 发布:电吉他 知乎 编辑:程序博客网 时间:2024/05/19 08:44
以自定义ImageView为例:
/** * 可拖拽ImageView * Created by admin on 2017/2/21. */public class FloatingImageView extends ImageView{ public FloatingImageView(Context context) { super(context); } public FloatingImageView(Context context, AttributeSet attrs) { super(context, attrs); } public FloatingImageView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public FloatingImageView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } int startX; int startY; int left; int top; int[] temp = new int[]{ 0, 0 }; @Override public boolean onTouchEvent(MotionEvent event) { boolean isMove = false; int x = (int) event.getRawX(); int y = (int) event.getRawY(); switch (event.getAction()){ case MotionEvent.ACTION_DOWN: // touch down so check if the startX = x; startY = y; temp[0] = (int) event.getX(); temp[1] = y - getTop(); break; case MotionEvent.ACTION_MOVE: // touch drag with the ball left = x - temp[0]; top = y - temp[1]; if(left < 0){//控制左边界不超出 left = 0; } layout(left, top, left + getWidth(),top + getHeight());//自由拖拽 break; case MotionEvent.ACTION_UP: if (Math.abs(x - startX) > 2 || Math.abs(y - startY) > 2){//判断是否移动,再一定范围内不算是移动,解决触发事件冲突 //将最后拖拽的位置定下来,否则页面刷新渲染后按钮会自动回到初始位置 //注意父容器 RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) getLayoutParams(); lp.setMargins(left, top,0,0); setLayoutParams(lp); //确定是拖拽 isMove = true; } break; } return isMove ? true : super.onTouchEvent(event); }}
0 0
- Android 自定义可拖拽View,界面渲染刷新后不会自动回到起始位置
- 页面刷新后回到原来位置
- Android自定义控件布局刷新自定义控件回到初始位置问题的解决
- Android界面自动刷新
- 页面刷新后或回发后回到原始位置
- Android自定义ViewGroup自动分配子view位置
- android在下载app后自动安装,安装完成后不会弹出打开或完成界面
- android移动view之后刷新布局导致移动后的view归回原位置1
- android移动view之后刷新布局导致移动后的view归回原位置2
- Android 铃声设置界面,起始位置为当前已选项
- Android 铃声设置界面,起始位置为当前已选项
- 使用原生自定义View,setState刷新界面后UI不能正常显示
- android camera拍照/录像后查看图片/视频并删除所有内容后自动回到camera预览界面
- android自定义view的刷新
- Android 自定义万能刷新View
- android ListView 重新进入后如何回到之前位置
- Android自定义View-登录界面
- android中view界面的刷新
- 欢迎使用CSDN-markdown编辑器
- T-SQL 之局部变量(1)
- Tomcat闪退
- 理解.NET中的CLR原理
- Java面试题集
- Android 自定义可拖拽View,界面渲染刷新后不会自动回到起始位置
- go使用pprof做性能分析
- MySQL 复制夯住排查以及原理探讨
- Hibernate查询笔记
- 你需要知道的Android View的创建
- 常用的正则表达式
- U3D[02.21]
- spring mvc 与struts2比较
- JavaScript Date类型 学习总结