Android控件拖动实例详解

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; } }); }

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

时间: 2024-10-02 00:17:40

Android控件拖动实例详解的相关文章

Android开发之TimePicker控件用法实例详解_Android

本文实例分析了Android开发之TimePicker控件用法.分享给大家供大家参考,具体如下: 新建项目: New Android Project-> Project name:HelloSpinner Build Target:Android 2.2 Application name:HelloSpinner Package name:com.b510 Create Activity:MainActivity Min SDK Version:9 Finish 运行效果: 如果: return

Android开发之TimePicker控件用法实例详解

本文实例分析了Android开发之TimePicker控件用法.分享给大家供大家参考,具体如下: 新建项目: New Android Project-> Project name:HelloSpinner Build Target:Android 2.2 Application name:HelloSpinner Package name:com.b510 Create Activity:MainActivity Min SDK Version:9 Finish 运行效果: 如果: return

laypage分页控件使用实例详解_javascript技巧

在开发的时候经常遇到分页比较麻烦,尤其对于一个后端程序猿来说,但是这个问题不能不解决,于是找了一个分页的控件用用,记录在下,以便以后使用. 以下是官网中使用的简单例子: //以下将以jquery.ajax为例,演示一个异步分页 $.getJSON('test/demo1.json', {curr: 6}, function(res){ //从第6页开始请求.返回的json格式可以任意定义 laypage({ cont: 'page1', //容器.值支持id名.原生dom对象,jquery对象.

javascript遍历控件(实例详解)

 js遍历页面控件,  代码如下 复制代码  var inputArr = document.forms[0];    for( var i = 0; i < inputArr.length; i++ ) {     if( inputArr[i].type.toUpperCase() == "BUTTON" ) {      inputArr[i].disabled="disabled";     }else if( inputArr[i].type.toU

Android中Spinner(下拉框)控件的使用详解_Android

android给我们提供了一个spinner控件,这个控件主要就是一个列表,那么我们就来说说这个控件吧,这个控件在以前的也看见过,但今天还是从新介绍一遍吧. Spinner位于 android.widget包下,每次只显示用户选中的元素,当用户再次点击时,会弹出选择列表供用户选择,而选择列表中的元素同样来自适配器.Spinner是View类得一个子类. 1.效果图 2.创建页面文件(main.xml) <Spinner android:id="@+id/spinner1" and

Android中Spinner(下拉框)控件的使用详解

android给我们提供了一个spinner控件,这个控件主要就是一个列表,那么我们就来说说这个控件吧,这个控件在以前的也看见过,但今天还是从新介绍一遍吧. Spinner位于 android.widget包下,每次只显示用户选中的元素,当用户再次点击时,会弹出选择列表供用户选择,而选择列表中的元素同样来自适配器.Spinner是View类得一个子类. 1.效果图 2.创建页面文件(main.xml) <Spinner android:id="@+id/spinner1" and

Android编程之SurfaceView实例详解_Android

本文实例讲述了Android编程之SurfaceView用法.分享给大家供大家参考,具体如下: 关于surfaceView相关知识: View和SurfaceView主要区别: 1. View只能在UI线程中刷新,而SurfaceView可以在子线程中刷新 2. SurfaceView可以控制刷新频率 SurfaceView几个重要的方法: 1. 继承SurfaceView 后调用getHolder()方法可以获取到mSurfaceHolder对象这个对于可以控制SurfaceView的绘制 2

C++中MFC Tab Control控件的使用详解

  这篇文章主要介绍了C++中MFC Tab Control控件的使用详解的相关资料,需要的朋友可以参考下 1. 新建一个MFC工程, 取名MyTab, 选择Dialog based, 然后Finish. 2. 删除对话框上默认添加的三个控件. 添加Tab Control控件并在Property属性中设置ID为IDC_TABTEST 在More Styles里勾上Bottom. 调速尺寸使其布满整个对话框, 我这边Tab Control的尺寸最后为164X203. 在ClassWizard为其添

android 显示gif图片实例详解

  android 显示gif图片实例详解           在android中不支持gif格式的图片,但是由于我希望在我的程序中刚刚加载的时候有一个小人在跑步表示正在加载.而这个小人跑就是一个gif图片.也就是希望程序一启动时就加载gif图片.在网上查找了一些方法不知道是我使用的android的版本高(android4.4)还是什么问题就是加载不出来.最后想了一个办法加载了出来.这个办法就是将gif放在webView中让其显示. 下面是关于这个的代码: activity_prepare_fu