Android 将画布用于手势覆盖视图

Android 将画布用于手势覆盖视图,android,bitmap,gesture,Android,Bitmap,Gesture,我有一个GestureOverlayView,用户可以在上面绘制手势笔划,我想将这些笔划保存在PNG文件中。 我已经尝试了公共void draw(Canvas Canvas),我得到了一个PNG文件作为我下面代码的输出,但是我没有得到任何笔划,有人能帮我吗。。。。 提前谢谢 我的代码 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

我有一个GestureOverlayView,用户可以在上面绘制手势笔划,我想将这些笔划保存在PNG文件中。 我已经尝试了
公共void draw(Canvas Canvas)
,我得到了一个PNG文件作为我下面代码的输出,但是我没有得到任何笔划,有人能帮我吗。。。。 提前谢谢

我的代码

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

    setContentView(R.layout.create_gesture);

    bitmap= Bitmap.createBitmap(12, 12, Bitmap.Config.RGB_565);
    can=new Canvas(bitmap);
    GestureOverlayView overlay = (GestureOverlayView) findViewById(R.id.gestures_overlay);
    overlay.addOnGestureListener(new GesturesProcessor());
    overlay.draw(can);

}
将笔划另存为PNG的代码

          bm=mGesture.toBitmap(313, 343, 8,3);
           can.drawBitmap(bm, 0, 0, null);

           File file = new File(Environment.getExternalStorageDirectory()
                             + File.separator+"Strokes");

                      out = new FileOutputStream(file);

                     bm.compress(Bitmap.CompressFormat.PNG,100, out);
                     Toast.makeText(this, "PNG file Created "+mGesture, Toast.LENGTH_LONG).show();
按照J博士的规定进行修改

 Paint paint=new Paint();
 Bitmap bitmap=Bitmap.createBitmap(412, 412, Bitmap.Config.ARGB_4444);
 Canvas can=new Canvas(bitmap);
 Path path = new Path();
 paint.setColor(255);
。 . .


}

您需要直接从用户那里捕获手势,Draw提供给您的画布(Canvas Canvas)是供您绘制的,它不包含供您从中捕获的数据

你应使用:

   public Path getGesturePath (Path path)
然后,如果要保存它,请使用画布的drawPath


感谢您的回复…我已经做了您在代码中提到的更改,但仍然得到了空的png文件,我的问题空间中有修改过的代码。您需要从侦听器的GestureOverlayView中获取路径,就像从中继续使用覆盖并调用(侦听器的)覆盖。getGesturePath(路径),然后,您可以使用路径在画布上绘制以保存手势。我已经做了更改。您的意思是(上面的修改)应该可以工作,但是如果保存文件的时间太长,UI可能会死掉。您需要创建一个AsyncTask,并让它在使用Path对象运行时处理在请求时保存文件的问题。关于UI线程和异步任务的说明
   public Path getGesturePath (Path path)
. It can be drawn with canvas.drawPath(path, paint), either filled or stroked (based on the paint's Style), or it can be used for clipping or to draw text on a path.