android手势识别源码,Android 用于电子签名手势识别 例子

【实例简介】

【实例截图】

6aa832e1b9f515867665a03c0ab76219.png

0f81255b45d62fbdc7dec31133738360.png

【核心代码】

/*

* Copyright (C) 2009 The Android Open Source Project

*

* Licensed under the Apache License, Version 2.0 (the "License");

* you may not use this file except in compliance with the License.

* You may obtain a copy of the License at

*

* http://www.apache.org/licenses/LICENSE-2.0

*

* Unless required by applicable law or agreed to in writing, software

* distributed under the License is distributed on an "AS IS" BASIS,

* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

* See the License for the specific language governing permissions and

* limitations under the License.

*/

package com.android.gesture.builder;

import android.app.Activity;

import android.os.Bundle;

import android.os.Environment;

import android.view.View;

import android.view.MotionEvent;

import android.gesture.GestureOverlayView;

import android.gesture.Gesture;

import android.gesture.GestureLibrary;

import android.widget.TextView;

import android.widget.Toast;

import java.io.File;

public class CreateGestureActivity extends Activity {

private static final float LENGTH_THRESHOLD = 120.0f;

private Gesture mGesture;

private View mDoneButton;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.create_gesture);

mDoneButton = findViewById(R.id.done);

GestureOverlayView overlay = (GestureOverlayView) findViewById(R.id.gestures_overlay);

overlay.addOnGestureListener(new GesturesProcessor());

}

@Override

protected void onSaveInstanceState(Bundle outState) {

super.onSaveInstanceState(outState);

if (mGesture != null) {

outState.putParcelable("gesture", mGesture);

}

}

@Override

protected void onRestoreInstanceState(Bundle savedInstanceState) {

super.onRestoreInstanceState(savedInstanceState);

mGesture = savedInstanceState.getParcelable("gesture");

if (mGesture != null) {

final GestureOverlayView overlay =

(GestureOverlayView) findViewById(R.id.gestures_overlay);

overlay.post(new Runnable() {

public void run() {

overlay.setGesture(mGesture);

}

});

mDoneButton.setEnabled(true);

}

}

public void addGesture(View v) {

if (mGesture != null) {

final TextView input = (TextView) findViewById(R.id.gesture_name);

final CharSequence name = input.getText();

if (name.length() == 0) {

input.setError(getString(R.string.error_missing_name));

return;

}

final GestureLibrary store = GestureBuilderActivity.getStore();

store.addGesture(name.toString(), mGesture);

store.save();

setResult(RESULT_OK);

final String path = new File(Environment.getExternalStorageDirectory(),

"gestures").getAbsolutePath();

Toast.makeText(this, getString(R.string.save_success, path), Toast.LENGTH_LONG).show();

} else {

setResult(RESULT_CANCELED);

}

finish();

}

@SuppressWarnings({"UnusedDeclaration"})

public void cancelGesture(View v) {

setResult(RESULT_CANCELED);

finish();

}

private class GesturesProcessor implements GestureOverlayView.OnGestureListener {

public void onGestureStarted(GestureOverlayView overlay, MotionEvent event) {

mDoneButton.setEnabled(false);

mGesture = null;

}

public void onGesture(GestureOverlayView overlay, MotionEvent event) {

}

public void onGestureEnded(GestureOverlayView overlay, MotionEvent event) {

mGesture = overlay.getGesture();

if (mGesture.getLength() < LENGTH_THRESHOLD) {

overlay.clear(false);

}

mDoneButton.setEnabled(true);

}

public void onGestureCancelled(GestureOverlayView overlay, MotionEvent event) {

}

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值