Как можно создать псевдоним Android для растрового изображения из другого размера (псевдонимы drawable-large-mdpi к drawable-hdpi) - PullRequest
14 голосов
/ 19 февраля 2011

Я работаю над добавлением поддержки экранов размером с планшет в мои приложения.У меня уже есть изображения в 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, но не знаю, какссылаться на чертеж из определенного каталога.Любая помощь?

Содержание /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').

Ответы [ 2 ]

16 голосов
/ 28 июня 2011

Переместите ресурс кнопки в папку 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

2 голосов
/ 19 февраля 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...