Android ImageView如何绘制路径

Android ImageView如何绘制路径,android,bitmap,android-canvas,draw,Android,Bitmap,Android Canvas,Draw,我有一个带有背景图像的ImageView。ImageView按屏幕的百分比以编程方式调整大小。视图处于相对位置,处于视图的中心。我想要的是让它可以画。我希望能够用我的手指在里面画画(就像我们小时候在油漆里画胡说八道一样)。而且,当我移动手指时,我希望立即绘制路径。你能给我举个例子说明怎么做吗?有一些非常好的绘图应用参考资料,可以通过少量的谷歌搜索找到: 简单的应用程序可获得良好的湿手指/易于实施: 更复杂但非常透彻的解释: 两者都不使用ImageView,但我确信您可以适应切换视图类型,您必

我有一个带有背景图像的ImageView。ImageView按屏幕的百分比以编程方式调整大小。视图处于相对位置,处于视图的中心。我想要的是让它可以画。我希望能够用我的手指在里面画画(就像我们小时候在油漆里画胡说八道一样)。而且,当我移动手指时,我希望立即绘制路径。你能给我举个例子说明怎么做吗?

有一些非常好的绘图应用参考资料,可以通过少量的谷歌搜索找到:

简单的应用程序可获得良好的湿手指/易于实施:

更复杂但非常透彻的解释:


两者都不使用ImageView,但我确信您可以适应切换视图类型,您必须覆盖ImageView的
onTouchEvent
onDraw
调用。在
ontochevent
中获取用户的触摸位置,并绘制到
ImageView
canvas
。 参见此处示例-

只需使用GestureOverlayView并将您的图像设置为该OverlayView的背景

<android.gesture.GestureOverlayView
           android:id="@+id/signaturePad"
           android:layout_width="match_parent"
           android:layout_height="0dp"
           android:layout_weight="5"
           android:background="@color/white"
           android:eventsInterceptionEnabled="true"
           android:fadeEnabled="false"
           android:gestureColor="@color/black"
           android:gestureStrokeLengthThreshold="0.1"
           android:gestureStrokeType="multiple"
           android:orientation="vertical" >
       </android.gesture.GestureOverlayView>
try {
          GestureOverlayView gestureView = (GestureOverlayView) findViewById(R.id.signaturePad);
            gestureView.setDrawingCacheEnabled(true);
            Bitmap bm = Bitmap.createBitmap(gestureView.getDrawingCache());
           File f = new File(Environment.getExternalStorageDirectory()
                   + File.separator + "signature.png");
            f.createNewFile();
            FileOutputStream os = new FileOutputStream(f);
           os = new FileOutputStream(f);
           //compress to specified format (PNG), quality - which is ignored for PNG, and out stream
           bm.compress(Bitmap.CompressFormat.PNG, 100, os);
          os.close();
       } catch (Exception e) {
          Log.v("Gestures", e.getMessage());
           e.printStackTrace();
       }
照此