我发现了一些相关的问题,没有独家答案;
在我的游戏中,我创建了一个对象。对象(类)在屏幕上采用随机位置:
public float X=Rnd.nextInt(400);
。我想用随机发生器替换400 max值。
它应该将对象放在X的某个位置,遵循以下规则:
画布的左边距+ 10< X<右边距画布 - 20
但是...... onDraw()尚未被调用。所以我不能在画布上做一个getWidth()。
我该如何解决这个问题?即在调用onDraw之前检查画布大小的方法是什么? (或者我应该使用屏幕尺寸?如果是这样,怎么样?)
日Thnx!
答案 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;