ScaleGestureDetector_OnScaleGestureListener,SimpleOnScaleGestureListener

ScaleGestureDetector这个类是专门用来检测两个手指在屏幕上做缩放的手势用的,最简单的应用就是用来缩放图片或者缩放网页。

这个类通常与GestureDetector一起存在,用来处理复杂的手势操作。

通常是单手指和双手指操作,所以通常存在一个判断手指个数然后分发事件的处理方法

例:

	public boolean onTouchEvent(MotionEvent event) {
		mNumFin = event.getPointerCount();
		Log.i("ASDFGHJKL", "------"+mNumFin);
		
		if(1 == mNumFin){
			mGestureDetector.onTouchEvent(event);
			switch (event.getAction()) {
			case MotionEvent.ACTION_UP:
				endGesture();
			}
		}else if(2 == mNumFin){
			mScaleGestureDetector.onTouchEvent(event);
		}
		return false;
	}

它存在两个实现接口OnScaleGestureListener,和SimpleOnScaleGestureListener

OnScaleGestureListener必须实现三个实现方法

1.onScale(ScaleGestureDetector detector)   返还类型是boolean

2.onScaleBegin(ScaleGestureDetector detector)  返还类型是boolean   这里返回true ,才能进入onscale()函数

3.onScaleEnd(ScaleGestureDetector detector) 返还类型是void

SimpleOnScaleGestureListener只需重写一个方法

1.onScale(ScaleGestureDetector detector)   返还类型是boolean

例:

/**
	 * 多点 
	 */
	private class MultiGestureListener implements OnScaleGestureListener{

		@Override
		public boolean onScale(ScaleGestureDetector detector) {
			return false;
		}

		@Override
		public boolean onScaleBegin(ScaleGestureDetector detector) {
			// 返回true ,才能进入onscale()函数
			return true;
		}

		@Override
		public void onScaleEnd(ScaleGestureDetector detector) {
			float oldDis = detector.getPreviousSpan();
			float curDis = detector.getCurrentSpan();
			if(oldDis - curDis >50){
				//small
				Toast.makeText(MainActivity.this, "缩小", 1000).show();
			}else if(oldDis - curDis < -50){
				//max
				Toast.makeText(MainActivity.this, "放大", 1000).show();
			}
		}
		
	}

 class ScaleGesture extends ScaleGestureDetector.SimpleOnScaleGestureListener {//双手指操作  
  
        @Override  
        public boolean onScale(ScaleGestureDetector detector) {  
            detector.getCurrentSpan();//两点间的距离跨度  
            detector.getCurrentSpanX();//两点间的x距离  
            detector.getCurrentSpanY();//两点间的y距离  
            detector.getFocusX();       //  
            detector.getFocusY();       //  
            detector.getPreviousSpan(); //上次  
            detector.getPreviousSpanX();//上次  
            detector.getPreviousSpanY();//上次  
            detector.getEventTime();    //当前事件的事件  
            detector.getTimeDelta();    //两次事件间的时间差  
            detector.getScaleFactor();  //与上次事件相比,得到的比例因子  
  
            return true;  
        } 

就这样

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值