簡體   English   中英

如何在onDraw方法Android之外訪問畫布寬度

[英]How to access canvas width outside of the onDraw method Android

我有以下代碼:

Bitmap right1;

public TicTacToe(Context context) {
    super(context);
    right1 = BitmapFactory.decodeResource(getResources(), R.drawable.plus);
    int width = right1.getWidth();
    int height = right1.getHeight();
}

@Override
protected void onDraw(Canvas canvas){
    super.onDraw(canvas);
    canvas.drawColor(Color.WHITE);
    right1 = Bitmap.createScaledBitmap(right1, canvas.getWidth()/3, canvas.getWidth()/3, false);
    canvas.drawBitmap(right1, (canvas.getWidth() - (canvas.getWidth()/3)), 0, null);
    invalidate();
}

我想根據畫布的寬度重新縮放稱為“ right1”的位圖。 我成功完成了此操作,但是執行此操作的代碼行是onDraw方法下的第三行。 該行代碼的問題在於,當我只想運行一次時,它將不斷循環。 從概念上講,我想將這行代碼放入TicTacToe方法中,但是我不確定如何在TicTacToe方法中初始化畫布,以便獲得畫布的寬度。

您不需要在構造函數中執行此操作,只需在onDraw()方法中添加條件即可。

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

        if(right1==null){
            right1 = Bitmap.createScaledBitmap(right1, canvas.getWidth() / 3, canvas.getWidth() / 3, false);
            canvas.drawBitmap(right1, (canvas.getWidth() - (canvas.getWidth() / 3)), 0, null);
            invalidate();
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM