android onfling onLongPress 之间的互斥关系

package com.popo.android.widget;

import android.app.Activity;

import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;

import android.graphics.RectF;

import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.GestureDetector.OnGestureListener;

public class MyPathWheelView extends View implements Runnable,OnGestureListener {
	Paint paint = new Paint();
	Paint mFramePaint;
	int start = 0;
	RectF rectF;

	Boolean Running = false;
	private int speedstep;
	private long sleeptime;

	public MyPathWheelView(Activity activity) {
		super(activity);
		// TODO Auto-generated constructor stub

		paint.setColor(Color.RED);
		paint.setAntiAlias(true);

		mFramePaint = new Paint();
		mFramePaint.setColor(Color.BLACK);
		mFramePaint.setAntiAlias(true);
		mFramePaint.setStyle(Paint.Style.STROKE);
		mFramePaint.setStrokeWidth(0);
		rectF = new RectF(40, 40, 200, 200);
		speedstep=20;
		sleeptime=20;
		Running=false;
		new Thread(this).start();

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see android.view.View#onDraw(android.graphics.Canvas)
	 */
	@Override
	protected void onDraw(Canvas canvas) {
		// TODO Auto-generated method stub
		super.onDraw(canvas);
		Log.v("msg", "hello" + start);
		canvas.drawColor(Color.WHITE);
		paint.setColor(Color.RED);
		canvas.drawArc(rectF, start, 92, true, paint);
		paint.setColor(Color.BLUE);
		canvas.drawArc(rectF, 90 + start, 92, true, paint);
		paint.setColor(Color.RED);
		canvas.drawArc(rectF, 180 + start, 92, true, paint);
		paint.setColor(Color.BLUE);
		canvas.drawArc(rectF, 270 + start, 92, true, paint);

	}
	
	
	
	/* (non-Javadoc)
	 * @see android.view.View#onTouchEvent(android.view.MotionEvent)
	 */
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		// TODO Auto-generated method stub
		//return super.onTouchEvent(event);	}
		float x = event.getX();
		float y = event.getY();
		switch(event.getAction()){
		case MotionEvent.ACTION_DOWN:
			
		}
		
		return true;
	}
	@Override
	public void run() {
		// TODO Auto-generated method stub
		while (true) {
			try {
				Thread.sleep(sleeptime);
				if (Running == true) {
					start += speedstep;
					if (start == 360) {
						start = 0;
					}
					this.postInvalidate();
				}
			} catch (Exception e) {
				// TODO: handle exception
			}
		}

	}

	@Override
	public boolean onDown(MotionEvent e) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
			float velocityY) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public void onLongPress(MotionEvent e) {
		// TODO Auto-generated method stub
		Log.v("msg","onLongPress["+e.getAction()+"]");
		
	}

	@Override
	public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
			float distanceY) {
		// TODO Auto-generated method stub
		Log.v("msg","onScroll [e1:"+e1.getX()+","+e1.getY()+"],[e2:"+e2.getX()+","+e2.getY()+"],distanceX["+distanceX+"],distanceY["+distanceY+"]");
		return false;
	}

	@Override
	public void onShowPress(MotionEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public boolean onSingleTapUp(MotionEvent e) {
		// TODO Auto-generated method stub
		return false;
	}

}

写了一个转动的轮子 可以通过收拾给他加速 减速

在这个过程中 发现了一个问题!就是

onFling 与 onLongPress 不能共同触发。
如果要使用onFling  onTouchEvent 方法必须返回true 如果返回false 就不会触发onFling事件
如果要是用onLongPress onTouchEvent方法必须返回false 如果返回true 就不回触发onLongPress事件
其中的原因 在进一步研究。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值