Android, холст и экраны

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

Если я создаю холст в Photoshop 800x480px (240ppi) и создаю логотип на этом холсте размером 282 x 121px, я не могу понять, почему при отображении изображения он занимает 3/4 экрана в моем эмуляторе с теми же 800x480px.

Код, который я использую для отображения логотипа, следующий

Bitmap logo = BitmapFactory.decodeResource(getResources(), R.drawable.logo);

//in the onDraw
canvas.drawBitmap(logo, 0, 0, null);

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


Возможное решение

Не будучи уверенным, что это лучший способ сделать что-либо и который заслуживает какой-либо обратной связи, я натолкнулся на это решение (обычно, когда вы уже опубликовали вопрос:D) - кодировать изображение следующим образом:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false;

//Load images
logo = BitmapFactory.decodeResource(getResources(), R.drawable.logo, options);

1 ответ

Решение

Изображение, вероятно, занимало только 3/4 экрана в эмуляторе из-за предварительного масштабирования, которое иногда делает Android.

Проверьте эту статью о том, как обрабатывать несколько разрешений и размеров экрана.

Вы можете попробовать поместить drawable в каталог 'res / drawable-mdpi /' или 'res / drawable-ldpi /', чтобы провести различие между экранами средней и низкой плотности. Другой вариант - поместить его в каталог res / drawable-nodpi /, чтобы предотвратить любое предварительное масштабирование. Я даже поместил несколько изображений в папку res / raw, чтобы получить тот же эффект.

Однако, если ваш текущий метод работает, дерзайте!

Другие вопросы по тегам