下面的代码,能画一幅图了。但看起来,实现的方法不简洁。
有没有简略的方法?
@Override
protected void onDraw(Canvas canvas) {
//成功画了一根线
paint.setColor(Color.RED);
canvas.drawLine(0, 0, 100, 100, paint);
//成功将R.drawable.green(32*32)的图,画在50,50坐标点上
Bitmap bitmap = Bitmap.createBitmap(32, 32, Bitmap.Config.ARGB_8888);
Canvas cvs = new Canvas(bitmap);
Resources r = this.getContext().getResources();
Drawable drawable = r.getDrawable(R.drawable.green);
drawable.setBounds(0, 0, 32, 32);
drawable.draw(cvs);
canvas.drawBitmap(bitmap, 50, 50, paint);
}
有没有简略的方法?
@Override
protected void onDraw(Canvas canvas) {
//成功画了一根线
paint.setColor(Color.RED);
canvas.drawLine(0, 0, 100, 100, paint);
//成功将R.drawable.green(32*32)的图,画在50,50坐标点上
Bitmap bitmap = Bitmap.createBitmap(32, 32, Bitmap.Config.ARGB_8888);
Canvas cvs = new Canvas(bitmap);
Resources r = this.getContext().getResources();
Drawable drawable = r.getDrawable(R.drawable.green);
drawable.setBounds(0, 0, 32, 32);
drawable.draw(cvs);
canvas.drawBitmap(bitmap, 50, 50, paint);
}
如果你只要实现这个画图可以这样,避免重复初始化和在onDraw内new实例 private Paint paint=new Paint();
private Bitmap bitmap = Bitmap.createBitmap(32, 32, Bitmap.Config.ARGB_8888);
{
Canvas cvs = new Canvas(bitmap);
Resources r = this.getContext().getResources();
Drawable drawable = r.getDrawable(R.drawable.green);
paint.setColor(Color.RED);
drawable.setBounds(0, 0, 32, 32);
drawable.draw(cvs);
}
@Override protected void onDraw(Canvas canvas) {
canvas.drawLine(0, 0, 100, 100, paint);
canvas.drawBitmap(bitmap, 50, 50, paint);
}
mBitmapBg = BitmapFactory.decodeResource(resource, R.drawable.ic_vd_mic_on0);
在ondraw中这样绘制canvas.drawBitmap(mBitmapBg, 0,0, mPaint);
希望可以帮到楼主
private void fillPointArrays() {
Resources r = getResources();
Bitmap bitmap;
bitmap = BitmapFactory.decodeResource(r, R.drawable.green_point);
pointArray[GREEN] = bitmap;
bitmap = BitmapFactory.decodeResource(r, R.drawable.new_green_point);
pointArray[NEW_GREEN] = bitmap;
bitmap = BitmapFactory.decodeResource(r, R.drawable.red_point);
pointArray[RED] = bitmap;
bitmap = BitmapFactory.decodeResource(r, R.drawable.new_red_point);
pointArray[NEW_RED] = bitmap;
}@Override
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(pointArray[GREEN], 50, 50, null);
canvas.drawBitmap(pointArray[NEW_GREEN], 100, 50, null);
canvas.drawBitmap(pointArray[RED], 50, 100, null);
canvas.drawBitmap(pointArray[NEW_RED], 100, 100, null);
}