Как я могу присвоить растровое изображение android с помощью другого размера (псевдонимы drawable-large-mdpi для drawable-hdpi)

Я работаю над добавлением поддержки экранов размером с планшетный компьютер в свои приложения. У меня уже есть изображения в drawable-mdpi и drawable-hdpi для разных экранов плотности. Моя проблема связана с планшетами, такими как Galaxy 7 ", который является" большим "экраном, но все еще является средней плотностью. Часть моего макета имеет 5 кнопок по ширине экрана, которые равномерно распределены. На большом экране с графикой mdpi, хотя изображения очень малы с тоннами пробелов между ними.

Я хотел бы использовать более крупную графику для большого макета, чтобы сделать их подходящими, а также воспользоваться экранной недвижимостью. У меня есть графика с двумя размерами в моем каталоге hdpi, который будет работать отлично. В качестве теста я скопировал все изображения из /res/drawable -hdpi в/res/drawable-large-mdpi, и все выглядело точно так, как я хочу.

Однако я не хочу раздувать размер моего приложения, справляя все эти изображения. Я хотел бы просто создавать псевдонимы для каждого из них, чтобы при запросе /res/drawable -large-mdpi/button_0 он фактически использовал вместо него /res/drawable -hdpi/button_0.

Я попытался создать xml-растровое изображение, но не знаю, как ссылаться на drawable из определенного каталога. Любая помощь?

Содержимое/res/drawable-large-mdpi/button_0.xml:

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable-hdpi/button_0" />

Ошибка, полученная выше:

error: Error: No resource found that matches the given name (at 'src' with value '@drawable-hdpi/button_0_highlighted').

Ответы

Ответ 1

эта страница рассказывает о различных модификаторах, которые вы можете использовать в папках ресурсов. Кажется, что порядок приоритета таков, что размер экрана (малый, средний, большой, xlarge) выше плотности (ldpi, mdpi, hdpi). Я бы подумал, что это означает, что если вы переименовали свою папку drawables-hdpi в drawables-large-hdpi, хотя вкладка Galaxy имеет среднюю плотность, она все равно будет использовать выходы из этой папки, потому что она имеет большой экран.

Изменить: я только что проверил это, он разрешает вашу проблему одним способом. Изображения в папке drawables-large-hdpi отображаются на вкладке Galaxy при запуске приложения. Но, к сожалению, добавление большого классификатора делает его таким, чтобы они не отображались на экранах среднего размера с плотностями hdpi. Похоже, что вам придется создавать отдельные папки и иметь 2 копии ваших больших ресурсов, если вы хотите получить эту функциональность = (.

Ответ 2

Переместите ресурс своей кнопки в папку drawable-nodpi и переименуйте ее в button_0_hdpi.xml.

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/button_0" />

При использовании псевдонима XML вы не можете указать квалификатор. У вас был @drawable-hdpi, и он должен быть просто @drawable. Вероятно, вам также понадобится сделать второй псевдоним XML в исходном месте вашего растрового изображения.

Вот хорошая статья о методе http://blog.evendanan.net/2011/03/Android-resources-and-device-fragmentation