简单的安卓手势处理类

package com.example.activity;

import android.content.Context;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.Toast;

/**
 * @fileName HandyGesturer.java
 * @version 1.0
 * @date 2015-11-19 下午4:44:42
 * @description
 * 智能的手势处理类
 * 
 */
public class HandyGesturer {
	private HandyGestureListener listener = null;
	private Context context;
	private float maxSideLength = 50.0F;
	public HandyGesturer(Context context, HandyGestureListener listener,
			float maxSideLength) {
		super();
		this.listener = listener;
		this.context = context;
		this.maxSideLength = maxSideLength;
	}
	public HandyGesturer( Context context, HandyGestureListener listener) {
		super();
		this.listener = listener;
		this.context = context;
	}
	/**
	 * @return the listener
	 */
	public HandyGestureListener getListener() {
		return listener;
	}
	/**
	 * @param listener the listener to set
	 */
	public void setListener(HandyGestureListener listener) {
		this.listener = listener;
	}
	/**
	 * @return the maxSideLength
	 */
	public float getMaxSideLength() {
		return maxSideLength;
	}
	/**
	 * @param maxSideLength the maxSideLength to set
	 */
	public void setMaxSideLength(float maxSideLength) {
		this.maxSideLength = maxSideLength;
	}
	public interface HandyGestureListener{
		void onSideUp();
		void onSideDown();
		void onSideLeft();
		void onSideRight();
	}
	private float x1 = 0;
	private float x2 = 0;
	private float y1 = 0;
	private float y2 = 0;
	public void dealWithTouchEvent(MotionEvent event){
		if(listener == null){
			throw new NullPointerException("HandyGestureListener is null!");
		}
		switch (event.getAction()) {
		
		case MotionEvent.ACTION_DOWN:
			x1 = event.getX();
			y1 = event.getY();
			break;
		case MotionEvent.ACTION_UP:
			x2 = event.getX();
			y2 = event.getY();
			if(y1 - y2 > maxSideLength) {
				listener.onSideUp();
			} else if(y2 - y1 > maxSideLength) {
				listener.onSideDown();
			} else if(x1 - x2 > maxSideLength) {
				listener.onSideLeft();
			} else if(x2 - x1 > maxSideLength) {
				listener.onSideRight();
			}
			break;
		default:
			break;
		}

	}
}


 
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">
</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">使用很简单。</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">
</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span><pre name="code" class="java">package com.example.activity;



import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;

import com.example.activity.HandyGesturer.HandyGestureListener;


public class MainActivity extends Activity  implements HandyGestureListener{


	HandyGesturer gesturer;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		gesturer = new HandyGesturer(this, this, 50);
	
	}
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		gesturer.dealWithTouchEvent(event);
		return super.onTouchEvent(event);
	}

	@Override
	public void onSideUp() {
		System.out.println("onUp");
		
	}

	@Override
	public void onSideDown() {
		System.out.println("onDown");
	}

	@Override
	public void onSideLeft() {
		System.out.println("onLeft");
	}

	@Override
	public void onSideRight() {
		System.out.println("onRight");
	}

	

	



}


 


实例化手势处理类,并且设置一个监听器就行了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值