步骤:

    1.在模拟器里使用gestures builder 创建手势(如果模拟器没有这个,就新建android sample project,选择gestures builder,在运行),创建几个手势。

   2.在ddms里面导出刚才创建的手势,在sd卡目录下的gestrues文件。

   3.新建raw目录,把gestrues文件拷贝进去。

   4.在布局xml中,使用控件gestures overlay view。

   5.代码中读取手势库,并导入到内存来。

   6.匹配手势,将用户输入的手势与库进行比对,按照相似度高低进行排列,实现监听事件


代码如下:

public class MainActivity extends Activity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
//      读取手势库
        final GestureLibrary library = GestureLibraries.fromRawResource(this, R.raw.gestures);
        library.load();//导入手势库,加载到内存来
        //匹配手势
        GestureOverlayView  overlayView = (GestureOverlayView) findViewById(R.id.gestureOverlayView1);
        overlayView.addOnGesturePerformedListener(new OnGesturePerformedListener()
        {
            //手势监听事件
            @Override                                              //gesture为用户输入的手势
            public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture)
            {
                ArrayList recognize = library.recognize(gesture);
                //用户输入的手势,与库里的手势进行匹配,得到recognize的容器,按照匹配的相似度从高到低排列,0~10分
                Prediction prediction = recognize.get(0);//得到最相似的
                if(prediction.score >= 5)//相似分数
                {
                    if("toast".equals(prediction.name))//手势名
                    {
                        Toast.makeText(MainActivity.this, "toast", Toast.LENGTH_LONG).show();
                    }
                    else if("exit".equals(prediction.name))
                    {
                        finish();
                    }
                           
                }
            }
        });
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}