我一直试图在Canvas
上绘制ImageView
,但在创建位图后,我在屏幕上看不到图像。我唯一得到的是我在onDraw
方法中绘制的小圆圈。我希望Canvas
上有ImageView
。
我已获得以下代码:
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);
}
}
和
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);
}
}
提前致谢!
答案 0 :(得分:0)
首先,你过度复杂了。您不需要或不想要一个视图来执行您正在执行的操作。如果要绘制圆形,请使用onClick中的canvas.drawCircle直接在画布上进行绘制。
其次,所有setImageBitmap都会覆盖您设置的任何先前位图。如果要将其显示在上一张图像上,则有两个选项:
1)将两个图像视图相互叠加,并将顶部图像设置为在画布上制作的位图(为了完成这项工作,您可能需要确保位图上的背景颜色是透明的)。
2)在ImageView上创建一个新视图,通过覆盖onDraw显示2位图。
第一种方法可能更容易。