• 拖动控件事件 和 双击事件
public class MoveActivity extends Activity {private LinearLayout mLl_move;private int mWidth;private int mHeight;private long[]  mNum = new long[2];private int mStartY;private int mStartX;private SharedPreferences sp ;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_move);mLl_move = (LinearLayout) findViewById(R.id.ll_move);sp = getSharedPreferences("config", MODE_PRIVATE);WindowManager manager = (WindowManager) getSystemService(WINDOW_SERVICE);//得到一张白纸DisplayMetrics metrics = new DisplayMetrics();//给白纸设置整个屏幕manager.getDefaultDisplay().getMetrics(metrics);//得到屏幕的宽高mWidth = metrics.widthPixels;mHeight = metrics.heightPixels;//回显操作int x = sp.getInt("x", 100);int y = sp.getInt("y", 100);/* //这个方法不能在onCreate方法中使用,因为onCreate方法中是初始化控件的,所以控件的宽高得不到的mLl_move.layout(x , y ,x + mLl_move.getWidth() , y + mLl_move.getHeight());*///这个方法是初始化控件前,重新设置控件的属性-LayoutParams- , 就是在加载控件前先给它一个位置//得到控件的父布局RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mLl_move.getLayoutParams();//通过父布局的属性来设置控件的位置,设置控件左上角的坐标params.leftMargin = x;params.topMargin = y ;mLl_move.setLayoutParams(params);showMove();doubleEvent();}
  • 双击事件的简单解释图

    /*** 双击事件* */private void doubleEvent() {mLl_move.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//参数1. 拷贝的原数组//2.从原数组那个位置开始拷贝//3.拷贝到目标数组//4.从目标数组那个位置开始去拷贝//5.拷贝的长度System.arraycopy(mNum , 1 , mNum , 0 ,mNum.length-1 );//得到开机的时间mNum[1] = SystemClock.uptimeMillis();if (mNum[0] >= (SystemClock.uptimeMillis() - 500)){int l = (mWidth - mLl_move.getWidth()) / 2;int t = (mHeight - mLl_move.getHeight()-25) / 2;mLl_move.layout(l , t , l+mLl_move.getWidth() , t+mLl_move.getHeight());}}});}/*** 拖动事件* */private void showMove() {mLl_move.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {switch (event.getAction()){case MotionEvent.ACTION_DOWN://按下的事件,得到XY的坐标LogUtil.d("按下的事件","sssss");mStartX = (int) event.getRawX();mStartY = (int) event.getRawY();break;case MotionEvent.ACTION_MOVE://移动的事件,移动后的XY的坐标LogUtil.d("移动的事件","sssss");int newX = (int) event.getRawX();int newY = (int) event.getRawY();//计算偏移量int dX = newX - mStartX ;int dY = newY - mStartY ;//移动相应的偏移量,重新绘制//这是原来控件的位置int left = mLl_move.getLeft();int top = mLl_move.getTop();//移动后的位置,就是原来的坐标+偏移量left += dX;top  += dY;//宽度和高度,就是最新的XY周坐标加上控件的宽高度int right = left + mLl_move.getWidth();int bottom = top + mLl_move.getHeight();//开始绘制之前先判断位置是否超出了屏幕if (left < 0 || top < 0 || right > mWidth || bottom > mHeight-25 ){break;}mLl_move.layout(left, top ,right ,bottom);//更新坐标mStartX = newX;mStartY = newY;break;case MotionEvent.ACTION_UP://抬起的事件LogUtil.d("抬起的事件","sssss");//保存位置数据,为了回显操作int x = mLl_move.getLeft();int y = mLl_move.getTop();SharedPreferences.Editor edit = sp.edit();edit.putInt("x" , x);edit.putInt("y" , y);edit.apply();break;}return false;//这里要返回true  //如果还有点击事件就返回false}});}
}
  • 触摸事件和点击事件的冲突

    • 点击事件 : 一组事件的集合,按下+抬起
    • 触摸事件 : 每个事件都是一个单独的事件,按下,移动,抬起
    如果只有触摸事件:return true表示事件执行如果点击事件和触摸事件共同存在,触摸事件的事件是会点击事件消费掉先执行触摸 :  然后执行其他事件点击 :       按下+抬起1.return false触摸 :  按下 执行完  ->  移动  执行完 -> 抬起 触摸+点击 :   按下(触摸) 拦截 - > 按下(点击) 执行 - > 抬起(触摸) 拦截 - > 抬起(点击) 执行 - > 输出(触摸) - > 输出(点击)2.return true触摸 : 按下 -> 移动 -> 抬起触摸+点击  按下(触摸) 执行 ->  移动(触摸) -> 抬起(触摸)*****如果只有触摸事件:return true;如果触摸+点击事件:触摸事件return false

控件的移动事件和双击事件相关推荐

  1. UI控件无法响应点击等事件的探索

    2019独角兽企业重金招聘Python工程师标准>>> UI控件无法响应点击等事件的探索 一.响应者链 关于响应者链,有如下一段介绍:每一个应用有一个响应者链,我们的视图结构是一个N ...

  2. Element Tree 树形控件自定义显示样式与hover事件绑定实现添加、删除和修改

    Element Tree 树形控件自定义显示样式与hover事件绑定实现添加.删除和修改 最近在搞erp项目对应后台的管理功能,为了加速开发使用了 vue-element-admin 开发,使用的是e ...

  3. QT实现控件不响应鼠标点击事件

    QT中很多控件都有鼠标点击的事件响应,比如QPushButton,QRadioButton.有时候我们想要实现的是:当鼠标点击控件时,不会产生响应事件.其中的一种方法是使用Qt::WA_Transpa ...

  4. Glade CheckButton(CheckBox)控件的使用与Python的事件绑定

    附件文件 gtkCheckBox.glade gtkCheckBox.py 试验目的 Glade CheckButton(CheckBox)控件的使用与Python的事件绑定 试验过程 打开 Glad ...

  5. input绑定的jedate日期控件的值改变时触发事件问题

    一.input绑定的jedate日期控件的值改变时触发事件问题 一般input中值发生改变,用onchange 就可以触发事件,但我现用jedate日期控,选中日期后,发现onchange无效. 后经 ...

  6. java单机按键事件_JavaFX 事件总结(单机事件和双击事件)

    学JavaFX的肯定都是有java基础的 所以都是想单纯的把像javaweb那样 什么单机事件啊 双击事件啊 键盘按下事件啊 表单验证什么的 自己找了一圈总结一下 1.单机事件 首先在MyContro ...

  7. js实现单击事件和双击事件

    js实现单击事件和双击事件 目的 1.希望通过单击事件调用ajax方法 2.希望通过双击事件修改选中的对象的背景色,从而获取选中的对象 思想 1.首先设置一个状态值为false 2.点击的时候,判断状 ...

  8. Bootstrap点击事件(单击事件及双击事件)

    Bootstrap点击事件 以上两种事件均可达到单击事件及双击事件的效果.下面我们分别举例说明: jQuery事件 //表格点击事件     $('#getCqltj').on('dbl-click- ...

  9. vue.js绑定单击事件和双击事件(共用同一个方法代码示例)

    首先,先来学习一下绑定单击事件和双击事件的2个常用标签: v-on:click  表示单击 v-on:dblclick  表示双击 示例代码如下: <!DOCTYPE html> < ...

最新文章

  1. C语言extern关键字定义外部变量--Redis源码extern使用
  2. [专题总结]AC自动机
  3. Go-err is shadowed during return
  4. 一个Web Project引用多个Java Project在Eclipse下的配置--转载
  5. Debian 9/10快速开启Google BBR的方法,实现TCP高效单边加速
  6. Spring(十二)之JDBC框架
  7. 2.3.2便捷的电子邮件
  8. php关键词分词搜索 最多匹配的排在最前面_图解 | 通用搜索引擎背后的技术点...
  9. java 面试题三十三 子类父类方法执行顺序的问题
  10. My Appointment编辑场景下的roundtrip
  11. 神经网络与深度学习——TensorFlow2.0实战(笔记)(二)(Anaconda软件使用)
  12. 页面无法正常显示,淘宝又崩了!周五上班摸鱼被发现...
  13. 大数据自学1-CentOS 下安装CDH及Cloudera Manager
  14. 专升本计算机专业是理工类吗,理工类专接本有些专业
  15. 拼多多sdk php,学习猿地-【扩展分享】拼多多 API SDK【拼多多开放平台】
  16. jQuery 瀑布流插件
  17. 流量焦虑意外带来契机,“福禄控股们”赚钱容易做大难?
  18. 微信摇一摇服务器实现,微信摇一摇事件通知
  19. 作物产量常用的单位换算公式
  20. 【Linux】特别篇--sqlite3数据库的使用

热门文章

  1. Wish封店的原因有哪些?
  2. 如何在CTEX上对论文进行排版
  3. irc 开源软件_前4个开源IRC客户端
  4. c++ sprintf()详解
  5. 如何设计接口测试用例?
  6. 计算机网络月考题职专一年级,职高一年级计算机专业WORD试题
  7. 线性回归模型(Linear regression model)
  8. SendKeys.SendWait()用法
  9. 前端报错:net::ERR_ABORTED 404
  10. EE308 LAB2