Экраны разных размеров для игр - Android - PullRequest
0 голосов
/ 01 сентября 2011

Я спрашивал об этом раньше, но у меня все еще есть проблемы с этой проблемой!

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

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

Заранее спасибо

Ben

Ответы [ 2 ]

1 голос
/ 01 сентября 2011

вы должны иметь возможность использовать следующее, чтобы получить размеры экрана:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();
int height = display.getHeight();

Затем решите, что делать, как считаете нужным - растяните исходное разрешение, чтобы подогнать его, потяните прямо к большемуres и т. д.

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

1 голос
/ 01 сентября 2011

Зачем вам нужны значения пикселей?Используйте значения dp, а не px !!

final float scale = getContext().getResources().getDisplayMetrics().density;
int px = (int) (dp * scale + 0.5f);

dp Пиксели, не зависящие от плотности - абстрактная единица измерения, основанная на физической плотности экрана.Эти единицы относятся к экрану 160 точек на дюйм (точек на дюйм), поэтому 160 точек на дюйм - это всегда один дюйм, независимо от плотности экрана.Отношение dp к пикселю будет меняться в зависимости от плотности экрана, но не обязательно в прямой пропорции.Эти единицы измерения следует использовать при указании размеров вида в макете, чтобы пользовательский интерфейс правильно масштабировался для отображения одного и того же фактического размера на разных экранах.(Компилятор принимает и «dip», и «dp», хотя «dp» более соответствует «sp».)

...