Android - OnTouchListener
2016-02-25 10:19
417 查看
DEMO:双指放大或缩小文字
Main
tv.setOnTouchListener(new ZoomListener()); //设置自定义类的触摸监听
自定义触摸监听类:ZoomListener implements OnTouchListener
Main
tv.setOnTouchListener(new ZoomListener()); //设置自定义类的触摸监听
自定义触摸监听类:ZoomListener implements OnTouchListener
public class ZoomListener implements OnTouchListener { private int finger = 0; private float oldDist; private float textSize = 0; TextView tv = null; @Override public boolean onTouch(View v, MotionEvent event) { tv = (TextView) v; //获得监控控件 if(textSize == 0){ textSize = tv.getTextSize(); //初始化textSize } switch (event.getAction() & MotionEvent.ACTION_MASK) { //判断触摸事件类型 case MotionEvent.ACTION_DOWN: //第一个手指按下 finger = 1; break; case MotionEvent.ACTION_UP: //最后一个手指抬起 finger = 0; break; case MotionEvent.ACTION_POINTER_UP: //抬起多个手指中的一个手指 finger -= 1; break; case MotionEvent.ACTION_POINTER_DOWN: //再按下一个手指 oldDist = spacing(event); finger += 1; break; case MotionEvent.ACTION_MOVE: //手指在移动 if (finger >= 2) { //当屏幕上至少存在两个手指时进行放大 float newDist = spacing(event); //计算手指间距 if (newDist > oldDist + 1) { //手指存在抖动,造成一直放大或缩小,+1可以避免这一情况。 zoom(newDist / oldDist); //计算方法倍数 oldDist = newDist; //更新oldDist } if (newDist < oldDist - 1) { zoom(newDist / oldDist); oldDist = newDist; } } break; } return true; } private void zoom(float f) { //放大或缩小textSize textSize *= f; if(textSize > 100) textSize = 100; //设置阈值 if(textSize < 10) textSize = 10; tv.setTextSize(textSize); } private float spacing(MotionEvent event) { //屏幕上有两个手指时,可通过event.getX(index)等计算间距。 float x = event.getX(0) - event.getX(1); float y = event.getY(0) - event.getY(1); return FloatMath.sqrt(x * x + y * y); } }
相关文章推荐
- Android Studio系列教程四--Gradle基础
- Android Studio系列教程三--快捷键
- Android Studio系列教程二--基本设置与运行
- android rectF
- Android DisplayMetrics简介
- Android 程序设计的骨架--MVC
- 值得推荐的android(安卓)开源框架
- Android中的MVC
- 点击查看大图,支持左右滑动切换、缩放图片
- Android自定义相机预览开始时自动对焦
- 欢迎使用CSDN-markdown编辑器
- Android之TelephonyManager
- 关于Android Studio开发环境变量的设置(avd启动黑屏)
- android 常见错误
- Android 实现强制下线功能
- androidannotations 报引用不到框架生成类错误的解决方案
- android程序安全注意点
- android知识库
- 基于Android实现个性彩色好看的二维码
- Android,谁动了我的内存