2011-01-04 1 views
0

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

Например, если я использую

canvas.drawBitmap(overlay, 365, 85, paint);

Это выровняет изображение идеально подходит для телефонов, которые имеют 854px ширину. Но что-нибудь ниже, чем то, что оно будет направлено вправо.

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

+0

Вы должны передать координаты x, y в соответствии с размером экрана устройства, а не значением const. – Sandy

ответ

1

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

Вы можете найти их с помощью что-то вроде этого:

DisplayMetrics dm = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(dm); 
    wPix = dm.widthPixels; 
    hPix = dm.heightPixels; 
+0

Итак, мне нужно настроить оператор switch для каждого размера экрана? – Dave

+0

В зависимости от того, почему позиция изменена, я думаю, что вы можете сделать какой-то расчет. В качестве примера: если вы позиционируете свой образ всегда в центре по горизонтали, вам понадобится для вымышленного экрана шириной в 200 пикселей место «100». Для 500 вы хотите «250» и т. Д. Но вместо коммутатора вы, конечно, будете использовать «width/2». Что-то подобное может быть возможно для этого случая? – Nanne

+0

Можете использовать соотношение до тех пор, пока вы будете осторожны с вашим округлением, поэтому все не становится беспорядочным, но создавайте макеты для определенного разрешения, и когда экран, на котором он отображается, не имеет такого разрешения, вы бы масштабировали позицию (и, возможно, размер, если это также важно), чтобы быть более подходящим. – James

1

Я предполагаю, что вы ориентируетесь 1.6 или выше. Причина, по которой ваш фон выглядит хорошо на каждом устройстве, заключается в том, что Android автоматически масштабирует ресурсы до целевой плотности экрана при их декодировании. Вы можете предотвратить это, разместив ресурсы в «drawable-nodpi» вместо этого (вам нужно будет создать этот каталог) или передав соответствующие параметры растровым изображениям декодирования (проверьте документацию.) Если вы это сделаете, Вам нужно будет масштабировать все ваши растровые изображения вручную. Остальные два ответа имеют правильную идею, захватывают ваш размер экрана и вычисляют все значения пикселей. Никогда не используйте константы.

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

  • Нет связанных вопросов^_^