Android画布绘制签名应用程序

Android画布绘制签名应用程序,android,canvas,bitmap,paint,Android,Canvas,Bitmap,Paint,我正在开发android绘画签名应用程序,它可以灵活地清除绘画并将画布保存为位图图像。我在这个应用程序中遇到了一个问题,每当我想将画布保存为位图时,我都需要检查签名是否足够长。 如果签名太短,我必须要求用户再次签名。以下是我的代码: 本课程分为两类 手指绘画活动 public class FingerPaintActivity extends Activity implements OnClickListener{ private Button clearBtn, saveBtn; priv

我正在开发android绘画签名应用程序,它可以灵活地清除绘画并将画布保存为位图图像。我在这个应用程序中遇到了一个问题,每当我想将画布保存为位图时,我都需要检查签名是否足够长。 如果签名太短,我必须要求用户再次签名。以下是我的代码: 本课程分为两类

手指绘画活动

public class FingerPaintActivity extends Activity implements OnClickListener{

private Button clearBtn, saveBtn;

private View myView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    myView = findViewById(R.id.myView);

    clearBtn = (Button) findViewById(R.id.clearBtn);
    clearBtn.setOnClickListener(this);

    saveBtn = (Button) findViewById(R.id.submitBtn);
    saveBtn.setOnClickListener(this);

}

@Override
public void onClick(View v) {

    if (v == clearBtn) {

        MyView.clearCanvas();
        myView.invalidate();
        myView.refreshDrawableState();

    } else {

        myView.setDrawingCacheEnabled(true);

        myView.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
        myView.layout(0, 0, myView.getWidth(), myView.getHeight());
        myView.buildDrawingCache(true);
        Bitmap bm = Bitmap.createBitmap(myView.getDrawingCache());
        myView.setDrawingCacheEnabled(false);
        if (bm != null) {
            try {
                String path = Environment.getExternalStorageDirectory().toString();
                OutputStream fOut = null;
                File file = new File(path, "screentest.jpg");
                fOut = new FileOutputStream(file);
                bm.compress(Bitmap.CompressFormat.JPEG, 85, fOut);
                fOut.flush();
                fOut.close();
                Log.e("ImagePath", "Image Path : " + MediaStore.Images.Media.insertImage( getContentResolver(), file.getAbsolutePath(), file.getName(), file.getName()));

                sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
}
这是第二节课: MyView

}

我面临的唯一问题是,在保存签名时,我必须在保存之前检查位图、画布或绘画的大小。我不知道该查哪一个
如果有人有想法,请帮助我。

一个简单的方法是将触摸坐标之间的距离相加,只有当总和大于某个阈值时才接受签名

因此,保持接触中绘制的总距离的运行总和_move()

后来

if(mTotal >= MINIMUM_SIGNATURE_LENGTH)
{
    acceptSignature();
}

谢谢老兄!!!!这对我帮助很大。我现在可以进行签名验证了!!
mTotal += Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));
if(mTotal >= MINIMUM_SIGNATURE_LENGTH)
{
    acceptSignature();
}