Android2D 画面の大きさ

さて, Android でCanvasに2DGraphicsを書いていく訳ですが, 座標や大きさなどを決めながら描画する上で重要なのは, 画面のサイズ(描画サイズ)です。

描画できる全体のサイズから, どの大きさでいろいろ描画するかを実際に決めていくのに,  描画サイズが欲しいものです。

いろいろサンプルを探しながら考えましたが

愚鈍なプログラマーの独り言 のページを参考にしました。

どうやら, Canvasサイズとスクリーンサイズなるものがあるらしく, どっちやねんということになりそうです。

ではサンプルです。何も書いていません。数字をチェックしてみてください。

public class MultiLineDemoView extends View
{
	private Paint paint;
	
	private int screenWidth;		// width
	
	private int screenHeight;		// height
	
	private static final String TAG = "MultiLineDemoView";
	
	public MultiLineDemoView ( Context context )
	{
		super(context);
		
		paint = new Paint(Paint.ANTI_ALIAS_FLAG);
	}

	@Override
	protected void onSizeChanged ( int w, int h, int oldw, int oldh )
	{
		super.onSizeChanged(w, h, oldw, oldh);
		this.screenWidth = w;
		this.screenHeight = h;
	}

	@Override
	protected void onDraw ( Canvas canvas )
	{
		canvas.drawColor(Color.BLACK);
		
		
		Log.d(TAG, "Width: " + screenWidth);
		Log.d(TAG, "Height: " + screenHeight); // just fit

		// Get Width and Height from canvas
		int canvasWidth = canvas.getWidth();
		int canvasHeight = canvas.getHeight();
		
		Log.d(TAG, "Canvas Width: " + canvasWidth);
		Log.d(TAG, "Canvas Height: " + canvasHeight);
		
		
	}
}

onSizeChangedで書かれているものが, どうやらスクリーンサイズでこれを基準に描画すると見た目はよさそう。

Canvas オブジェクトからcanvasのサイズが取得できます。