-
效果图
-
布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="手写字体识别:"
android:textSize="24sp"/>
<!-- 绘制手势的GestureOverlayView -->
<android.gesture.GestureOverlayView
android:id="@+id/gestures1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gestureStrokeType="multiple"
android:eventsInterceptionEnabled="false"
android:orientation="vertical"/>
</LinearLayout>
- 处理
import androidx.appcompat.app.AppCompatActivity;
import android.gesture.Gesture;
import android.gesture.GestureLibraries;
import android.gesture.GestureLibrary;
import android.gesture.GestureOverlayView;
import android.gesture.Prediction;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
public class StartActivity3 extends AppCompatActivity implements GestureOverlayView.OnGesturePerformedListener, GestureOverlayView.OnGesturingListener {
GestureLibrary mLibrary;
GestureOverlayView mDrawGestureView;
TextView txt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start3);
txt = findViewById(R.id.textView1);
mDrawGestureView=findViewById(R.id.gestures1);
mLibrary = GestureLibraries.fromRawResource(this,R.raw.gestures);
if(!mLibrary.load()){
finish();
}
//设置手势可多笔画绘制,默认情况为单笔画绘制
mDrawGestureView.setGestureStrokeType(GestureOverlayView.GESTURE_STROKE_TYPE_MULTIPLE);
//设置手势的颜色(蓝色)
mDrawGestureView.setGestureColor(getResources().getColor(R.color.purple_200));
//设置还没未能形成手势绘制是的颜色(红色)
mDrawGestureView.setUncertainGestureColor(Color.RED);
//设置手势的粗细
mDrawGestureView.setGestureStrokeWidth(10);
/*手势绘制完成后淡出屏幕的时间间隔,即绘制完手指离开屏幕后相隔多长时间手势从屏幕上消失;
* 可以理解为手势绘制完成手指离开屏幕后到调用onGesturePerformed的时间间隔
* 默认值为420毫秒,这里设置为2秒
*/
mDrawGestureView.setFadeOffset(2000);
//绑定监听器
mDrawGestureView.addOnGesturePerformedListener(this);
mDrawGestureView.addOnGesturingListener(this);
}
@Override
public void onGesturingStarted(GestureOverlayView gestureOverlayView) {
System.out.println("关于手势开始---");
}
@Override
public void onGesturingEnded(GestureOverlayView gestureOverlayView) {
System.out.println("关于手势结束---");
}
@Override
public void onGesturePerformed(GestureOverlayView gestureOverlayView, Gesture gesture) {
System.out.println("关于手势执行---"+gesture);
ArrayList predictions=mLibrary.recognize(gesture);
if(predictions.size()>0)
{
Prediction prediction = (Prediction)predictions.get(0);
if(prediction.score > 1.0){
Toast.makeText(this,prediction.name,Toast.LENGTH_SHORT).show();
txt.append(prediction.name);
}
}
}
}
- 手势库
链接:https://pan.baidu.com/s/1yDFBneXG3X8_eBQmysET6g
提取码:xxw3
- 只能识别字母,没有字体的识别库,那位博友如果有字体库,麻烦分享个链接