2011-01-19 4 views
0

Я хочу нарисовать прямоугольник, который заполняет весь экран на всех телефонах Android, все разрешение, все плотности экрана. Все ... :) Сначала из того, что я понимаю Холст. drawRect использовать в качестве значений размеров в пикселях. Надеюсь, это правильно. Будучи новым для Android я подумал, что если я просто пишу, как это будет достаточно, так как в данный момент нет Android устройства с разрешением выше, чем 1024х1024 пикселей:Заполнение всего экрана в нескольких разрешениях экрана, плотности

ScreenWidth = 1024; 
ScreenHeight = 1024; 
canvas.drawRect(0,0, ScreenWidth, ScreenHeight, mLoadPaint); 

Но, кажется, что на некоторых устройствах этот прямоугольник не заполняет весь экран. Странно, и я не могу объяснить, что это происходит не всегда, но в определенный момент времени ... В любом случае, кажется, что есть проблема с кодом, поэтому я хотел бы изменить его, чтобы посмотреть что-то вроде это, но теперь уверен, что metrics.widthPixels и metrics.heightPixels будет решить мою проблему:

wm = (WindowManager) getSystemService(WINDOW_SERVICE); 
DisplayMetrics metrics = new DisplayMetrics(); 
wm.getDefaultDisplay().getMetrics(metrics); 
canvas.drawRect(0,0, metrics.widthPixels, metrics.heightPixels, mLoadPaint); 

Я хочу знать, если это правильно, и если этот кусок кода будет охватывать все экраны, и прямоугольник будет заполнить весь экран. Конечно, при таком подходе мне придется также заботиться об ориентации экрана, так как кажется, что значения меняются между ними, когда экран находится в Пейзаже.

+0

Из любопытства, что происходит * в * прямоугольник? Я уверен, что ваш второй вариант (с использованием показателей) должен работать, и вам не нужно беспокоиться о том, что меняются значения, если ваш метод drawRect находится где-то, который будет вызываться при изменении ориентации (например, onCreate()), , – kcoppock

+0

Это фильтр, фильтр яркости, так что это происходит ... активность пользователя ... :) Мне нужно беспокоиться, потому что прямоугольник - это рисовать onCreate (это сервис), но ориентация может измениться в любое время в течение срока службы. Я уже реализовал это и работает на эмуляторе и моем телефоне, но эй, 1024x1024 работал также на эмуляторе и моем телефоне ... :) – Alex

+0

Если у него есть пользовательский интерфейс, он должен быть в действии. Действие уничтожается и восстанавливается (например, onCreate() вызывается снова), когда меняется ориентация, если вы специально не отменяете ее, чтобы этого не делать. – kcoppock

ответ

0

Вы можете попробовать canvas.drawColor (int color)

Смежные вопросы