时间:2021-05-20
Android控件拖动
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; } }); }感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例为大家分享了Android中SeekBar拖动条使用方法的具体代码,供大家参考,具体内容如下SeekBar控件效果展示拖动条SeekBar继承了Prog
本文实例讲述了Android基于widget组件实现物体移动/控件拖动功能。分享给大家供大家参考,具体如下:packagecom.sky;importandro
前言:前面几篇讲了自定义控件绘制原理Android自定义控件基本原理详解(一),Android自定义控件之自定义属性(二),Android自定义控件之自定义组合
本文实例为大家分享了Android创建可拖动图片控件的具体代码,供大家参考,具体内容如下重载、自绘1、从View派生一个控件类,构造函数中调用父类构造器。2、重
本文实例讲述了Android编程之控件可拖动的实现方法。分享给大家供大家参考,具体如下:点击和触摸的区别是什么?点击:一组动作的集合手指按下着按钮手指要