Как я могу получить размер холста до onDraw () - PullRequest
0 голосов
/ 24 февраля 2012

Я нашел несколько связанных вопросов, без эксклюзивного ответа;

В моей игре я создаю объект.Объект (класс) занимает случайную позицию на экране: public float X=Rnd.nextInt(400);.Я хотел бы заменить значение 400 max на рандомизатор.

Он должен поместить объект где-то на X, следуя этим правилам:

левое поле холста + 10

Но .. onDraw () еще не был вызван.Поэтому я не могу сделать getWidth () на холсте.

Как мне решить эту проблему?т.е. какой метод проверки размера холста перед вызовом onDraw?(или я должен использовать размер экрана? Если да, то как?)

Thnx!

Ответы [ 3 ]

1 голос
/ 25 февраля 2012
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;

вы можете получить ctx с помощью getApplicationContext ()

, а если вы используете API <13, вы должны использовать: </p>

WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
0 голосов
/ 24 февраля 2012

Используйте следующий код для получения размера экрана:

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;
0 голосов
/ 24 февраля 2012

Вы никогда не должны использовать Canvas.getWidth (), потому что он не возвращает того, что вы думаете, он делает.Этот метод возвращает ширину всего Canvas, которая обычно соответствует ширине окна.Просто используйте взамен View.getWidth ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...