[英]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.