Android Eclipse - это два xml-файла состояния попадания, необходимые в папках md и hd drawable - PullRequest
1 голос
/ 24 января 2012

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

У меня такой вопрос: если у меня есть XML-файл, который определяет кликабельное изображение следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item 
 android:state_selected="false"
    android:state_pressed="false" 
    android:drawable="@drawable/listitemorange" />
<item android:state_pressed="true" 
    android:drawable="@drawable/orange_click" />
<item android:state_selected="true"
 android:state_pressed="false" 
    android:drawable="@drawable/listitemorange" />
</selector>

У меня есть изображения listitemorange и orange_click в папках md и hd, но мне нужно иметь копию самого файла xml в обеих папках, или я могу просто сохранить его в папке md и он все равно будет знать, как вызывать образы HD, когда на экране HD?

Пожалуйста, дайте мне знать, если это не имеет смысла ... спасибо!

Ответы [ 2 ]

1 голос
/ 24 января 2012

если вы поместите xml в папку drawable, а изображение в drawable-md & drawable-hd, все будет хорошо.

0 голосов
/ 24 января 2012

но нужно ли мне иметь копию самого файла xml в обеих папках, или я могу просто сохранить его в папке md, и он все равно будет знать, как вызывать образы hd на экране hd?

Насколько я понимаю, вы можете просто поместить одну копию этого xml в папку mdpi, и Android будет использовать ее, даже если устройство имеет формат hdpi.Другими словами, он будет искать ресурсы в папке mdpi, если не сможет найти их в папке hdpi.

См. ... Поддержка нескольких экранов

РЕДАКТИРОВАТЬ: Этот параграф в конце «Использование квалификаторов конфигурации» эффективно охватывает его.

Помните, что когда система Android выбирает, какие ресурсы использовать во время выполнения, онаиспользует определенную логику для определения «наиболее подходящих» ресурсов.То есть используемые вами квалификаторы не обязательно должны точно соответствовать текущей конфигурации экрана во всех случаях, чтобы система могла их использовать.В частности, при выборе ресурсов на основе квалификаторов размера система будет использовать ресурсы, предназначенные для экрана, меньшего, чем текущий экран, если нет ресурсов, которые лучше соответствуют (например, экран большого размера будет использовать ресурсы экрана нормального размера, еслинеобходимо).Однако, если единственные доступные ресурсы больше, чем текущий экран, система не будет их использовать, и ваше приложение будет аварийно завершать работу, если никакие другие ресурсы не соответствуют конфигурации устройства (например, если все ресурсы макета помечены квалификатором xlarge, ноустройство имеет экран обычного размера).

Ответ от silentnuke верен в вашем случае, если вы предоставляете только ресурсы для плотности для hdpi и mdpi.Имейте в виду, что если вы также предоставите ресурсы для ldpi, то логика провалится в папку drawable-ldpi перед проверкой папки drawable по умолчанию.

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

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