如何在onDraw()之前获得画布的大小

时间:2012-02-24 19:02:32

标签: android random android-canvas

我发现了一些相关的问题,没有独家答案;

在我的游戏中,我创建了一个对象。对象(类)在屏幕上采用随机位置:  public float X=Rnd.nextInt(400);。我想用随机发生器替换400 max值。

它应该将对象放在X的某个位置,遵循以下规则:

画布的左边距+ 10< X<右边距画布 - 20

但是...... onDraw()尚未被调用。所以我不能在画布上做一个getWidth()。

我该如何解决这个问题?即在调用onDraw之前检查画布大小的方法是什么? (或者我应该使用屏幕尺寸?如果是这样,怎么样?)

日Thnx!

3 个答案:

答案 0 :(得分:1)

WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

你可以使用getApplicationContext()

获得ctx

如果你正在使用api< 13你应该使用:

WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();

答案 1 :(得分:0)

你永远不应该使用Canvas.getWidth(),因为它不会返回你的想法。此方法返回整个Canvas的宽度,通常对应于窗口宽度。只需使用View.getWidth()。

答案 2 :(得分:0)

使用以下代码获取屏幕尺寸:

WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;