• Android手势操作


      1 xml文件
      2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      3     xmlns:tools="http://schemas.android.com/tools"
      4     android:layout_width="match_parent"
      5     android:orientation="vertical"
      6     android:layout_height="match_parent"
      7     tools:context=".MainActivity" >
      8     <android.gesture.GestureOverlayView
      9         android:id="@+id/gestureOverlayView1"
     10         android:layout_width="match_parent"
     11         android:layout_height="0dp"
     12         android:layout_weight="1"
     13         android:gestureStrokeType="multiple" >
     14     </android.gesture.GestureOverlayView>
     15     <Button 
     16         android:layout_height="wrap_content"
     17         android:layout_width="wrap_content"
     18         android:layout_gravity="center_horizontal"
     19         android:id="@+id/Button"
     20         android:layout_weight="0"
     21         android:text="识别"/>
     22 </LinearLayout>
     23 
     24 注意:
     25     android_weight=0 表示是首先计算该控件的的高度或宽度,然后计算android_weight="1"控件的 高度,一般他是和 android:layout_height="0dp"结合使用的,否则是不会出来效果
     26 
     27 
     28 
     29 public class MainActivity extends Activity {
     30     private GestureLibrary library;
     31     private Gesture gestures;
     32     protected void onCreate(Bundle savedInstanceState) {
     33         super.onCreate(savedInstanceState);
     34         setContentView(R.layout.main);
     35         GestureOverlayView gesture=(GestureOverlayView) this.findViewById(R.id.gestureOverlayView1);
     36         library=GestureLibraries.fromRawResource(this, R.raw.gestures);//得到手势文件的类文件
     37         library.load();//加载手势库
     38         
     39         /**
     40          * 为手势添加事件监听
     41          */
     42         gesture.addOnGestureListener(new OnGestureListener(){
     43             public void onGesture(GestureOverlayView overlay, MotionEvent event)
     44             {
     45                 // TODO Auto-generated method stub
     46             }
     47             @Override
     48             public void onGestureCancelled(GestureOverlayView overlay,MotionEvent event) 
     49             {
     50                 // TODO Auto-generated method stub
     51             }
     52             @Override
     53             public void onGestureEnded(GestureOverlayView overlay,MotionEvent event) 
     54             {
     55                 gestures=overlay.getGesture();//得到一个手势
     56             }
     57             @Override
     58             public void onGestureStarted(GestureOverlayView overlay,MotionEvent event)
     59             {
     60                 // TODO Auto-generated method stub
     61             }
     62         });
     63         
     64         this.findViewById(R.id.Button).setOnClickListener(new OnClickListener()
     65         {
     66             public void onClick(View v)
     67             {
     68                 find(gestures);
     69             }
     70         });
     71     }
     72 
     73     public void find(Gesture gesture)
     74     {
     75         ArrayList<Prediction> predictions=library.recognize(gesture);//得到手势库中的一个集合
     76         if(predictions!=null)
     77         {
     78             Prediction prediction= predictions.get(0);//得到一个最匹配的一项,手势匹配默认会把最匹配的一项放在最前面
     79             /**
     80              * 判断匹配的度数是否大于60%,prediction.score的值在大于0小于10的,如果是4的话就是匹配值是40%的意思
     81              */
     82             if(prediction.score>5)
     83             {
     84                 if("close".equals(prediction.name))
     85                 {
     86                     finish();//此方法只能那个关闭Activity,并不能杀死进程,所以要在OnDestory()方法中杀死进程
     87                 }
     88                 else if("call".equals(prediction.name))
     89                 {
     90                     Intent intent=new Intent(Intent.ACTION_CALL,Uri.parse("tel:15824935047"));
     91                     startActivity(intent);
     92                 }
     93             }
     94             else
     95             {
     96                 Toast.makeText(this, "匹配值太低", Toast.LENGTH_LONG).show();
     97             }
     98         }else
     99         {
    100             Toast.makeText(this, "匹配不成功", Toast.LENGTH_LONG).show();
    101         }
    102     }
    103     
    104     @Override
    105     protected void onDestroy() {
    106         Process.killProcess(Process.myPid());//杀死当前进程
    107         super.onDestroy();
    108     }
    109 
    110     @Override
    111     public boolean onCreateOptionsMenu(Menu menu) {
    112         // Inflate the menu; this adds items to the action bar if it is present.
    113         getMenuInflater().inflate(R.menu.main, menu);
    114         return true;
    115     }
    116 
    117 }
  • 相关阅读:
    Flink中的广播流之BroadcastStream
    啊。。这是为什么。。 花甜的工作笔记
    我那庞大身躯,脆弱心灵的3250 花甜的工作笔记
    好吧,我承认,我不是一个专一的人。。。 花甜的工作笔记
    沾沾自喜 花甜的工作笔记
    我高调的来啦。。。。 花甜的工作笔记
    今天偶听一词云终端 花甜的工作笔记
    我开始出轨了。 花甜的工作笔记
    软件限制策略。。。。。辛苦中。。 花甜的工作笔记
    推荐系统建构精选文章
  • 原文地址:https://www.cnblogs.com/tianshidechibang234/p/3198919.html
Copyright © 2020-2023  润新知