Android-手势识别(自定义手势识别:四种自定义手势)

1.回顾

  上篇实现:

   (1)OnTouchListener 实现 上下左右手势识别

   (2)OnTouchListener + SimpleOnGestureListener + GestureDetector 实现 上下左右 手势识别

2.重点

   (1)GestureOverlayView + GestureLibrary + OnGesturePerformedListener 实现 自定义手势识别

   (2)demo 下载

3.效果图

                                                            Android-手势识别(自定义手势识别:四种自定义手势)_第1张图片


 4. 基本步骤

   (1)自定义手势识别文件

   (2)加载 手势文件

   (3)布局实现

   (4)识别/读取 手势 

    

5. 自定义手势文件

   5.1 新建 Android Simple Project 

        以eclipse为例:File  -> New -> Other -> Android -> Android Simple Project ;

                                       Android-手势识别(自定义手势识别:四种自定义手势)_第2张图片

    5.2 Next 选择安卓版本

                                        Android-手势识别(自定义手势识别:四种自定义手势)_第3张图片

     5.3 Next 选择 GestureBuilder

                                       Android-手势识别(自定义手势识别:四种自定义手势)_第4张图片

    5.4 finish 

        右击 运行工程 -> 运行后 点击 -> add gesture -> 画上你自己定义的手势 -> 起个名字(记住 需要使用)-> done ;


    Android-手势识别(自定义手势识别:四种自定义手势)_第5张图片    Android-手势识别(自定义手势识别:四种自定义手势)_第6张图片   Android-手势识别(自定义手势识别:四种自定义手势)_第7张图片


   5.5 取得 gestrue 手势文件

    当点击done ->  显示 Toast 提醒 文件地址 -> 保存在sdcard 里,自己导出即可 ;


6.加载gestrue 手势文件

  (1)在  res 文件夹下 新建 raw 文件夹;

  (2)复制gesture 到raw 文件夹下 ;

  (3)在onCreate 里加载

private GestureLibrary library;

//加载手势文件
	    library=GestureLibraries.fromRawResource(MainActivity.this,R.raw.gestures);
		library.load();

7. 布局实现

    (1)在 布局文件中 添加 GestureOverlayView ,可以 将你自己的 控件 放在 布局里面;


                                 Android-手势识别(自定义手势识别:四种自定义手势)_第8张图片

    (2)实例:



    
        
          

          
        
    




8. 识别手势

   (1)实现OnGesturePerformedListener 监听

   

	/**
	 * 第三中方式 自定义方式
	 * 
	 */
	
	//设置监听
	class gestureOverlayListener implements OnGesturePerformedListener{

		@Override
		public void onGesturePerformed(GestureOverlayView overlay,
				Gesture gesture) {
			//识别手势: 通过 library 读取手势文件 ,在这里读取
			ArrayList predictions=library.recognize(gesture);
			//去第一个就 是 取到的第一个
			Prediction prediction=predictions.get(0);
			
			//提示值
			String str="没有改手势";
			//更加相似度 来 取得 区间(0.0~10.0 大致区间)
			if(prediction.score>=5.0){
				//通过 name 来判断 值
				if(prediction.name.equals("error")){
					str="error:很遗憾,错的!";
					img_test.setImageResource(R.drawable.icon_error);
				}else if(prediction.name.equals("light")){
					
					str="light:我是闪电";
					img_test.setImageResource(R.drawable.icon_light);
					
				}else if(prediction.name.equals("none")){
					
					str="none :什么都没有";
					img_test.setImageResource(R.drawable.icon_none);
					
				}else if(prediction.name.equals("right")){
					
					str="true : 恭喜你答对了!";
					img_test.setImageResource(R.drawable.icon_true);
				}
				
			}
		    textView1.setText(str);
			Toast.makeText(MainActivity.this,str,Toast.LENGTH_SHORT).show();
			
			
		}
	}
	

    (2)初始化控件 和 添加监听

	gestureOverlayView1=(GestureOverlayView) findViewById(R.id.gestureOverlayView1);
		//添加
		gestureOverlayView1.addOnGesturePerformedListener(new gestureOverlayListener());

9.demo 下载

http://download.csdn.net/detail/lablenet/9063867


你可能感兴趣的:(android,高级)