• 手势


    public class MainActivity extends Activity {
        private static final String TAG = "MainActivity";
        private GestureLibrary library;
        private Gesture mgesture;
        private GestureOverlayView overlayView;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            library = GestureLibraries.fromRawResource(this, R.raw.gestures);//通过raw下的静态文件构建手势库对象
            library.load();//注意:很重要,必须有
            
            overlayView = (GestureOverlayView) this.findViewById(R.id.gestures);
            //只针对单笔手势:overlayView.addOnGesturePerformedListener(new GesturePerformedListener());
            //下面是处理多笔手势的方法
            overlayView.addOnGestureListener(new GestureListener());
        }
        
        public void find(View v){
            recognize(mgesture);
            overlayView.clear(true);
        }
        ///处理多笔手势
        private final class GestureListener implements OnGestureListener{
            public void onGestureStarted(GestureOverlayView overlay, MotionEvent event) {
                Log.i(TAG, "onGestureStarted()");
            }
            public void onGesture(GestureOverlayView overlay, MotionEvent event) {
                Log.i(TAG, "onGesture()");
            }
            public void onGestureEnded(GestureOverlayView overlay, MotionEvent event) {
                Log.i(TAG, "onGestureEnded()");
                mgesture = overlay.getGesture();//获取多笔手势,并存储
            }
            public void onGestureCancelled(GestureOverlayView overlay, MotionEvent event) {
                Log.i(TAG, "onGestureCancelled()");
            }
        }
        
        //处理单笔手势
        private final class GesturePerformedListener implements OnGesturePerformedListener{
            public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
                recognize(gesture);
            }        
        }
        
        private void recognize(Gesture gesture) {
            ArrayList<Prediction> predictions = library.recognize(gesture);
            if(!predictions.isEmpty()){
                Prediction prediction = predictions.get(0);
                if(prediction.score >= 6){
                    if("zhangxx".equals(prediction.name)){
                        Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:1350505050"));
                        startActivity(intent);
                    }else if("close".equals(prediction.name)){
                        finish();//关闭Activity
                    }
                }else{
                    Toast.makeText(getApplicationContext(), R.string.low, 1).show();
                }
            }else{
                Toast.makeText(getApplicationContext(), R.string.notfind, 1).show();
            }
        }
        
        @Override
        protected void onDestroy() {
            super.onDestroy();
            android.os.Process.killProcess(android.os.Process.myPid());//关闭应用
        }
        
    }
  • 相关阅读:
    javascript数据结构
    uni-app — 一套前端开发跨平台应用的终极解决方案
    从函数式编程到Ramda函数库(二)
    从函数式编程到Ramda函数库(一)
    node.js爬取数据并定时发送HTML邮件
    vue cli3.0 结合echarts3.0和地图的使用方法
    vue加载优化策略
    C#时间格式化
    wpf 调用线程无法访问此对象,因为另一个线程拥有该对象。
    使用oracle数据库开发,异常总结
  • 原文地址:https://www.cnblogs.com/heml/p/3516460.html
Copyright © 2020-2023  润新知