android中OnGestureListener和回调函数的应用

最近研究了一下,下拉刷新的功能。感觉里面的回调函数的思想很好,所以自己也做了一个简单的案例。

案例简单所以直接贴代码。


package com.example.callback;

import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Callback {

	protected static final String TAG = "MainActivity";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Log.i(TAG, "onCreate");
		Leftscroll left = new Leftscroll() {

			@Override
			public void action() {
				Log.i(TAG, "left");
			}
		};
		Rightscroll right = new Rightscroll() {

			@Override
			public void action() {
				Log.i(TAG, "right");
			}
		};
		Upscroll up = new Upscroll() {

			@Override
			public void action() {
				Log.i(TAG, "up");
			}
		};
		Downscroll down = new Downscroll() {

			@Override
			public void action() {
				Log.i(TAG, "down");
			}
		};
		setInterface(left, right, up, down);
	}
}



package com.example.callback;

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

public class Callback extends Activity implements OnGestureListener {

	public static final String TAG = "Callback";
	private GestureDetector gestureDetector;
	private Leftscroll left;
	private Rightscroll right;
	private Upscroll up;
	private Downscroll down;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		gestureDetector = new GestureDetector(this, this);
	}

	public void setInterface(Leftscroll left, Rightscroll right, Upscroll up,
			Downscroll down) {
		this.left = left;
		this.right = right;
		this.up = up;
		this.down = down;
	}
	
	@Override
	public boolean dispatchTouchEvent(MotionEvent ev) {
		if (gestureDetector.onTouchEvent(ev)) {
			return true;
		}
		return super.dispatchTouchEvent(ev);
	}

	@Override
	public boolean onDown(MotionEvent e) {
		return false;
	}

	@Override
	public void onShowPress(MotionEvent e) {

	}

	@Override
	public boolean onSingleTapUp(MotionEvent e) {
		return false;
	}

	@Override
	public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
			float distanceY) {
		return false;
	}

	@Override
	public void onLongPress(MotionEvent e) {

	}

	@Override
	public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
			float velocityY) {
		if (e2.getRawX() - e1.getRawX() > getWindowManager()
				.getDefaultDisplay().getWidth() / 3
				&& Math.abs(e2.getRawY() - e1.getRawY()) < 30) {
			right.action();
		} else if (e1.getRawX() - e2.getRawX() > getWindowManager()
				.getDefaultDisplay().getWidth() / 3
				&& Math.abs(e2.getRawY() - e1.getRawY()) < 30) {
			left.action();
		} else if (e2.getRawY() - e1.getRawY() > getWindowManager()
				.getDefaultDisplay().getWidth() / 3
				&& Math.abs(e2.getRawX() - e1.getRawX()) < 30) {
			down.action();
		} else if (e1.getRawY() - e2.getRawY() > getWindowManager()
				.getDefaultDisplay().getWidth() / 3
				&& Math.abs(e2.getRawX() - e1.getRawX()) < 30) {
			up.action();
		}
		return false;
	}

	public interface Leftscroll {
		void action();
	}

	public interface Rightscroll {
		void action();
	}

	public interface Upscroll {
		void action();
	}

	public interface Downscroll {
		void action();
	}

}

实现的功能是,上下左右滑动屏幕调用不同的方法,打印出不同的语句。功能没有价值主要是思想。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值