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, чтобы получить тот же эффект.
Однако, если ваш текущий метод работает, дерзайте!