Android控件的拖动
来源:互联网 发布:lol骚男的淘宝店网址 编辑:程序博客网 时间:2024/05/17 05:05
Android控件的拖动,主要是通过设置控件的setOnTouchListener()方法,重写它的onTouch()方法。然后通过MotionEvent的不同事件,进行判断,主要是在MotionEvent.ACTION_MOVE中不断重绘控件在画布中的位置,而实现拖动的效果。
public class DragViewActivity extends AppCompatActivity { private Button btn_drag; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_drag_view); // 获取屏幕的宽高 DisplayMetrics dm = getResources().getDisplayMetrics(); final int screenWith = dm.widthPixels; final int screenHeight = dm.heightPixels; btn_drag = (Button) findViewById(R.id.btn_drag); btn_drag.setOnTouchListener(new View.OnTouchListener() { int lastX; int lastY; boolean isDraging = false; @Override public boolean onTouch(View v, MotionEvent event) { int ee = event.getAction(); switch (ee){ case MotionEvent.ACTION_DOWN: isDraging = true; lastX = (int) event.getRawX(); lastY = (int) event.getRawY(); break; case MotionEvent.ACTION_MOVE: if (isDraging){ // x轴方向的位移差 int dx = (int) event.getRawX() - lastX; // y轴方向的位移差 int dy = (int) event.getRawY() - lastY; int l = v.getLeft() + dx; int t = v.getTop() + dy; int r = v.getRight() + dx; int b = v.getBottom() + dy; // 判断超出屏幕 if (l < 0){ l = 0; r = l + v.getWidth(); } if (t < 0){ t = 0; b = t + v.getHeight(); } if (r > screenWith){ r = screenWith; l = r - v.getWidth(); } if (b > screenHeight){ b = screenHeight; t = b - v.getHeight(); } // 重绘view v.layout(l, t, r, b); v.postInvalidate(); lastX = (int) event.getRawX(); lastY = (int) event.getRawY(); } break; case MotionEvent.ACTION_UP: isDraging = false; break; default: break; } return false; } }); }
0 0
- Android控件的拖动
- Android 控件的拖动
- Android控件拖动的实现
- Android控件拖动的实现
- Android控件拖动的实现
- Android控件拖动的实现
- Android控件拖动的实现
- Android控件拖动的实现
- Android控件拖动的实现
- Android拖动控件的实现,自定义可拖动的LinearLayout
- 如何实现android控件的拖动效果
- Android-满屏幕拖动的控件
- Android-满屏幕拖动的控件
- Android-满屏幕拖动的控件
- Android实现控件拖动的小Demo
- Android:全屏幕拖动控件的实现
- Android 控件 拖动
- Android拖动控件
- CSS样式 --- 鼠标光标样式 【时刻更新】
- leetcode | Valid Palindrome
- javaScript简单教程之一
- EAS demo库还原 sql2008R2
- MFC自绘-WzdList列表类
- Android控件的拖动
- 获取凌晨时间的方法
- 如何判断复杂语言引擎支持情况
- 奋战吧!测试11加油!八组加油!
- Apache Thrift 配置环境
- PopupWindow的使用细节以及今天遇到的小问题
- PHP中MVC框架的实现
- 关于使用ASIHTTPRequest进行断点续传
- Python 深入理解yield