Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 用簡單的方法,在android上實現手勢放大縮小功能

用簡單的方法,在android上實現手勢放大縮小功能

編輯:關於Android編程

package com.example.eventtest;

import java.util.ArrayList;

import android.os.Bundle;
import android.app.Activity;
import android.gesture.GestureOverlayView;
import android.gesture.GestureOverlayView.OnGestureListener;
import android.graphics.Point;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;

public class MainActivity extends Activity {

	
	double nLenStart = 0;
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
	
	
	@Override
	public boolean onTouchEvent(MotionEvent event) {	
				
		int nCnt = event.getPointerCount();
		
		int n = event.getAction();
		if( (event.getAction()&MotionEvent.ACTION_MASK) == MotionEvent.ACTION_POINTER_DOWN && 2 == nCnt)//2表示兩個手指
		{
					
			for(int i=0; i< nCnt; i++)
			{
				float x = event.getX(i);
				float y = event.getY(i);
				
				Point pt = new Point((int)x, (int)y);
	
			}
			
			int xlen = Math.abs((int)event.getX(0) - (int)event.getX(1));
			int ylen = Math.abs((int)event.getY(0) - (int)event.getY(1));
			
			nLenStart = Math.sqrt((double)xlen*xlen + (double)ylen * ylen);
			
			
		}else if( (event.getAction()&MotionEvent.ACTION_MASK) == MotionEvent.ACTION_POINTER_UP  && 2 == nCnt)
		{
			
			for(int i=0; i< nCnt; i++)
			{
				float x = event.getX(i);
				float y = event.getY(i);
				
				Point pt = new Point((int)x, (int)y);

			}
			
			int xlen = Math.abs((int)event.getX(0) - (int)event.getX(1));
			int ylen = Math.abs((int)event.getY(0) - (int)event.getY(1));
			
			double nLenEnd = Math.sqrt((double)xlen*xlen + (double)ylen * ylen);
			
			if(nLenEnd > nLenStart)//通過兩個手指開始距離和結束距離,來判斷放大縮小
			{
				Toast.makeText(getApplicationContext(), "放大", 3000).show();
			}
			else
			{
				Toast.makeText(getApplicationContext(), "縮小", 3000).show();
			}
		}
		
		
	
		return super.onTouchEvent(event);
	}


}


基礎知識:

getAction()方法返回的是int類型,用到的只有低16位,其中:低八位是動作的類型,高8位是觸摸點索引值的表示(單點為0,雙點為1)

獲得動作類型: int action = event.getAction() & ACTION_MASK 或者使用 getActionMasked()

獲得觸摸點索引類型: int pointerIndex = (event.getAction() & ACTION_POINTER_INDEX_MASK ) >> ACTION_POINTER_INDEX_SHIFT

或者使用 getActionIndex()

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved