Изображение mdpi слишком мало для 10-дюймового планшета Android
У меня есть drawables для каждой плотности как ldpi, mdpi, hdpi и xhdpi.
Проблема:
Как 10-дюймовое планшетное устройство (1280x800), так и устройство для мобильных телефонов 320x480 используют среднюю плотность. У меня есть изображение 35x35 мд/дюйм, но это изображение слишком мало для планшета, тогда как для телефона это нормально.
Я прочитал соответствующие документы. Но я думаю, я не мог понять. Есть ли в любом случае для использования изображений xhdpi в планшете, или мне интересно, как использовать большие изображения для планшета mdpi.
Ответы
Ответ 1
Вы должны добавить второй идентификатор large
и/или xlarge
в ваши папки с возможностью выгрузки. Увеличьте размер в drawable-xlarge-mdpi
, пока вы не будете довольны результатом, в то время как drawable-mdpi
будет того же размера, что и раньше.
Это увеличивает размер приложения, но он устранит вашу проблему.
Ответ 2
Если вы хотите достичь этого, не увеличивая размер своего приложения, есть способ позволить экрану высокой плотности и большому экрану со средней плотностью использовать один и тот же ресурс. Вам нужно поместить изображение, которое вы хотите повторно использовать в папке "drawable-nodpi". Это остановит платформу, выполняющую собственное масштабирование при ее использовании. Например, если у вас есть ресурс с именем "my_resource", если вы хотите, чтобы экран размера планшета использовал ваш ресурс xhdpi, переместите его из drawable-xhdpi и переименуйте его следующим образом:
/drawable-nodpi/my_resource_xhdpi.png
Затем в папках drawable-xhdpi и drawable-xlarge создайте файл my_resource.xml, который выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/my_resource_xhdpi">
</bitmap>
Теперь, когда вы используете @drawable/my_resource, версия xhdpi будет использоваться экранами xhdpi и экранами xlarge, и вам остается только сохранить одну версию изображения. Я использую эту технику довольно много, и она работает очень хорошо. Надеюсь, что это поможет!
Ответ 3
Они определяются как обычная практика:
Устройства
drawable-ldpi/xyz.png low resolution devices 320x240 (now a days no phone comes with this resolution)
drawable-mdpi/xyz.png medium resolution devices 480x320
drawable-hdpi/xyz.png high resolution devices 800x480
drawable-xhdpi/xyz.png Extra high resolution devices 1280*720
drawable-xxhdpi/xyz.png Extra Extra high resolution devices 1920x1080
Таблетка:
drawable-large-mdpi/xyz.png 7" Tablet (600x1024 mdpi)
drawable-xlarge-mdpi/xyz.png 10" tablet (720x1280 mdpi, 800x1280 mdpi, etc).
Ответ 4
В дополнение к папкам drawable-hdpi я включаю некоторые ресурсы в drawable-xlarge и выпадающие большие папки. Это работает для меня.
Другой альтернативой является масштабирование изображения в коде напрямую, что я делаю со следующим кодом:
Drawable scaledIcon = new BitmapDrawable(Bitmap.createScaledBitmap(myImage, pxInt, pxInt, true));
myImageView.setBackgroundDrawable(scaledIcon);
Не рекомендуется масштабировать большое количество изображений в вашем коде (используя этот метод), так как я считаю, что он ресурсоемкий, чтобы модифицировать изображения на лету, как это. Я использую это в некоторых случаях, когда изображение, которое я использую, может быть не стандартным (и я хочу, чтобы оно всегда соответствовало правилу).