自定义view重写触摸事件-imageview为例
2016-02-17 11:50
441 查看
package com.bdyl.view; import com.bdyl.constance.Logs; import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.widget.ImageView; public class MyImage extends ImageView { private float mOldX; private float mOldY; private float mCurrentX; private float mCurrentY; private int state = -1; public static final int left = 1; public static final int right = 2; public static final int normal = 3; public MyImage(Context context, AttributeSet attrs) { super(context, attrs); } /* *重写触摸事件 */ @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { // 按下 case MotionEvent.ACTION_DOWN: mOldX = event.getX(); mOldY = event.getY(); state = normal; break; // 移动,根据坐标判断移动方向(偏移量是需要定义dimen,这里为了方便) case MotionEvent.ACTION_MOVE: mCurrentX = event.getX(); mCurrentY = event.getY(); if (mCurrentX - mOldX > 0 && Math.abs(mCurrentY - mOldY) < 10) { state = right; Logs.v("向右>>>>"); } else if (mCurrentX - mOldX < 0 && Math.abs(mCurrentY - mOldY) < 10) { state = left; Logs.v("向向左>>>>"); } else if (mCurrentY - mOldY > 0 && Math.abs(mCurrentX - mOldX) < 10) { } else if (mCurrentY - mOldY < 0 && Math.abs(mCurrentX - mOldX) < 10) { } break; // 释放 case MotionEvent.ACTION_UP: switch (state) { case right: mMoveListener.last(); Logs.v("向right up "); break; case left: mMoveListener.next(); Logs.v("向向左 up "); break; case normal: mMoveListener.click(); break; } break; } return true; } private OnMovePicture mMoveListener; public void setOnMovePicture(OnMovePicture move){ mMoveListener= move; } /* *左右滑动点击的回调接口 */ public interface OnMovePicture{ void next(); void last(); void click(); } }
相关文章推荐
- kettle 日志
- Android中的MVC设计
- 江湖问题研究-- intent传递有没有大小限制,是多少?
- DFS专练
- 江湖问题研究-- intent传递有没有大小限制,是多少?
- ffmpeg对H.264进行rtp打包
- windows 自启动脚本并注册服务
- Android AIDL用法解析
- [计算几何笔记3]最小圆覆盖
- 反汇编异常定位
- 借助共享缓存redis实现分布式锁
- libevent的使用(socket)
- jfinal_BLOG v1.0
- 秒杀DX12!Vulkan 1.0规范正式发布
- 多核CPU的春天:Vulkan实测 完爆OpenGL
- Thrift入门及Java实例演示
- java 单例模式(Singleton)
- phpredisAdmin
- Android studio 自定义注释模板
- Ubuntu14.04安装tomcat7.0和jdk1.7