如果不使用OnDraw,Android Canvas将不会绘制任何内容

时间:2018-08-19 18:37:13

标签: android android-layout canvas bitmap

class SquareImageView extends View {



    public SquareImageView(Context context) {
        super(context);

        init();
    }

    private void init() {

        bitmap = Bitmap.createBitmap(500, 500, Bitmap.Config.ARGB_8888);
       =mCanvas = new Canvas(bitmap);
        mpaint = new Paint();
        mpaint.setAntiAlias(true);
        mpaint.setStyle(Paint.Style.STROKE);
        mpaint.setColor(Color.RED);
        mCanvas.drawColor(Color.BLUE, PorterDuff.Mode.DARKEN);
        mCanvas.drawRect(100, 100, 200, 200, mpaint);


    }





    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

    }``

}

    如果我在init方法中使用mCanas.drawRect(),则它没有绘制任何内容,但是如果我在这样的OnDraw(Canvas canvas)方法中使用inBuilt canvas对象

  @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
           canvas.drawRect(100, 100, 200, 200, mpaint);

        }

然后矩形正在绘制,并且

如果我在onDraw()中使用了mCanvas,那么它再也没有显示任何内容,任何人都可以向我解释为什么这种情况会让我感到沮丧,任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

这意味着onDraw是您的 only 绘图门。 https://developer.android.com/training/custom-views/custom-drawing#java