Java 在图像视图/位图上绘制画布

Java 在图像视图/位图上绘制画布,java,android,canvas,bitmap,imageview,Java,Android,Canvas,Bitmap,Imageview,我一直试图在ImageView上绘制Canvas,但在创建位图后,我在屏幕上看不到任何图像。我唯一得到的是我在onDraw方法中画的小圆圈。我想将画布放在图像视图上 我有以下代码: public class MainActivity extends AppCompatActivity { ImageView imageView; Bitmap myBitmap; Paint paint; Button button; @Override protected void

我一直试图在
ImageView
上绘制
Canvas
,但在创建位图后,我在屏幕上看不到任何图像。我唯一得到的是我在
onDraw
方法中画的小圆圈。我想将
画布
放在
图像视图

我有以下代码:

public class MainActivity extends AppCompatActivity {

  ImageView imageView;
  Bitmap myBitmap;
  Paint paint;
  Button button;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    button = (Button) findViewById(R.id.button);

  }

  public void onClickButton(View view) {

    View v = new DrawCanvas(getApplicationContext());
    Bitmap bitmap = Bitmap.createBitmap(48, 48, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);

    v.draw(canvas);
    imageView = (ImageView) findViewById(R.id.testpicture);
    imageView.setImageBitmap(bitmap);
  }
}


提前谢谢

首先,你把事情复杂化了。你不需要,也不想看到你正在做的事情。如果要绘制圆,请在onClick中使用canvas.drawCircle直接在画布上绘制

其次,alling setImageBitmap将覆盖以前设置的任何位图。如果要在上一张图像上显示此内容,您有2个选项:

1) 使用两个相互重叠的图像视图,并将顶部图像设置为在画布上制作的位图(要进行此操作,可能需要确保位图上的背景色是透明的)

2) 创建一个子类为off ImageView的新视图,该视图通过覆盖onDraw显示2个位图

第一种方法可能更简单

public class DrawCanvas extends View {

    Paint paint = new Paint();

    public DrawCanvas(Context context) {
      super(context);
    }

    public DrawCanvas(Context context, AttributeSet attrs) {
      super(context, attrs);
    }


    @Override
    public void onDraw(Canvas canvas) {
      super.onDraw(canvas);
      paint.setColor(Color.RED);

      canvas.drawCircle(25, 25, 5, paint);
    }
}