安卓触摸事件集锦
来源:互联网 发布:淘宝网电警棍 编辑:程序博客网 时间:2024/05/21 18:32
设置触摸面板的监听;
root.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: System.out.println("action down"); break; case MotionEvent.ACTION_MOVE: System.out.println("action move"); FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(FrameLayout. LayoutParams.WRAP_CONTENT,FrameLayout.LayoutParams.WRAP_CONTENT); lp.leftMargin = (int) event.getX(); lp.topMargin = (int) event.getY(); root.setLayoutParams(lp); //获取触摸点的坐标 System.out.println(String.format("x:%f,y:%f",event.getX(),event.getY())); break; case MotionEvent.ACTION_UP: System.out.println("action up"); break; } return true; //触发成功才会进行后续事件的触发 }});
2.如果想获取多个触摸点可采用方法:
event.getPointerCount();
3.获取某个触摸点的坐标:
event.getX(*);event.getY(*);
4.安卓图片的放大缩小缩放
root = (FrameLayout)findViewById(R.id.container);imageView = (ImageView) findViewById(R.id.img);root.setOnTouchListener(new View.OnTouchListener() { float currentDistance; //当前的位置 float lastDistance = -1; //上次的位置 @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_MOVE: System.out.println("action move"); System.out.println(event.getPointerCount()); //只有当触摸点超过两个求距离 if(event.getPointerCount() >= 2) { float offsetX = event.getX(0)-event.getX(1); //获取一条边 float offsetY = event.getY(0)-event.getY(1); //获取另一条边 //根据勾股定理获取触摸两点之间的距离 currentDistance = (float) Math.sqrt(offsetX*offsetX +offsetY*offsetY); //对上次的触摸距离进行初始化 if(lastDistance < 0) { lastDistance = currentDistance; } else { //在安卓环境中,当手指放上去的时候就会有显示,会有误差,如果按照理论 //设置为零,当你的手指刚放上去就会忽大忽小,所以这块的5是一个容错范围, //可根据自己的软件的具体环境设置相应的值 if(currentDistance -lastDistance > 5 ) { System.out.println("放大"); FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) imageView.getLayoutParams(); lp.width = (int) (1.1f*imageView.getWidth()); lp.height = (int) (1.1f*imageView.getHeight()); imageView.setLayoutParams(lp); lastDistance = currentDistance; } else if(lastDistance -currentDistance > 5) { System.out.println("缩小"); FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) imageView.getLayoutParams(); lp.width = (int) (0.9f*imageView.getWidth()); lp.height = (int) (0.9f*imageView.getHeight()); imageView.setLayoutParams(lp); lastDistance = currentDistance; } } } break; case MotionEvent.ACTION_UP: break; } return true; //触发成功才会进行后续事件的触发 }});
如果一直缩小到0,那么这张图片就会消失,所以,应该增加一个为零判断,这部分可自行设置。
2 0
- 安卓触摸事件集锦
- 安卓触摸事件探究
- 安卓触摸事件剖析
- 安卓触摸事件传递机制
- 安卓触摸事件分发经验总结
- 安卓触摸事件处理机制的简单介绍
- 图解安卓触摸事件的分发机制
- 【android学习】安卓设备实现触摸事件的监听,跨进程事件注入
- 安卓触摸事件与点击事件的区别(Touch&Click)
- 安卓错误集锦
- 安卓问题集锦
- 安卓问题集锦
- 安卓手机触摸画线
- 【安卓】乾坤大罗移,将容器触摸事件传至另一容器、!
- android安卓触摸事件touchEvent分发的 核心精辟代码
- 【安卓开发艺术探索】第3章 触摸事件传递 笔记
- 安卓开发错误集锦
- 安卓实用工具类集锦
- Android学习之Timer和TimerTask
- linux文件学习1
- request.getParameterMap()获得Map中的数据时
- Web前端学习笔记(2)-html5新增的结构元素
- centos6 配置Linux PHP nginx MySQL(各种百度各种添加过来)
- 安卓触摸事件集锦
- 数学之美4
- XManage-一键指令
- 自适应高度
- LEETCODE 119
- C#成魔之路<11> GDI+绘图
- 图像处理基本知识点整理(matlab函数)
- Nginx+uWSGI
- MVC for Android(非常好理解的demo)