Отображение изображения в одном месте на нескольких экранах | Android
Я создаю игру на весь экран. Я использую изображение для фона и рисую изображения поверх него. Фоновое изображение выглядит великолепно на всех устройствах, но я не могу нарисовать наложенные изображения в одном месте на всех устройствах.
Например, если я использую
canvas.drawBitmap(overlay, 365, 85, paint);
Он идеально выровняет изображение для телефонов шириной 854 пикселя. Но что-нибудь ниже, чем то, что будет сдвинуто вправо.
Я пытался поиграть с дипом, но не могу понять это. Есть ли где-нибудь, где я могу убедиться, что они соответствуют друг другу во всех разрешениях?
2 ответа
Если вы хотите сделать это таким образом, вам, вероятно, нужно рассчитать положение в зависимости от размера экрана.
Вы можете найти их, используя что-то вроде этого:
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
wPix = dm.widthPixels;
hPix = dm.heightPixels;
Я предполагаю, что вы нацеливаетесь на 1.6 или выше. Причина, по которой ваш фон выглядит хорошо на каждом устройстве, заключается в том, что Android автоматически масштабирует ресурсы до целевой плотности экрана при их декодировании. Вы можете предотвратить это, поместив вместо этого свои ресурсы в "drawable-nodpi" (вам придется создать этот каталог), или передав соответствующие опции функциям декодирования растрового изображения (см. Документацию.) Если вы сделаете это, вы Вам нужно будет вручную масштабировать все ваши растровые изображения. Два других ответа имеют правильную идею, захватите ваш размер экрана и рассчитайте все значения пикселей. Никогда не используйте константы.