下面的代码,能画一幅图了。但看起来,实现的方法不简洁。
有没有简略的方法?
@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);
}

解决方案 »

  1.   


    如果你只要实现这个画图可以这样,避免重复初始化和在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);
          }
      

  2.   

    楼主用这个方法创建图片
    mBitmapBg = BitmapFactory.decodeResource(resource, R.drawable.ic_vd_mic_on0);
    在ondraw中这样绘制canvas.drawBitmap(mBitmapBg, 0,0, mPaint);
    希望可以帮到楼主
      

  3.   

    确实可以帮到
    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);
    }