Сохранить состояние кнопки (Обработка ресурсов) в Android? - PullRequest
3 голосов
/ 30 мая 2011

Я добился этого, чтобы поддерживать состояние кнопки с помощью XML-компонента селектора.См. Фрагмент кода, например.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!--  Non focused states 
  -->
    <item android:state_focused="false" android:state_selected="false"
        android:state_pressed="false" android:drawable="@drawable/back_arrow_normal" />
    <item android:state_focused="false" android:state_selected="true"
        android:state_pressed="false" android:drawable="@drawable/back_arrow_hover" />
    <!--  Focused states 
  -->
    <item android:state_focused="true" android:state_selected="false"
        android:state_pressed="false" android:drawable="@drawable/back_arrow_hover" />
    <item android:state_focused="true" android:state_selected="true"
        android:state_pressed="false" android:drawable="@drawable/back_arrow_hover" />
    <!--  Pressed 
  -->
    <item android:state_pressed="true" android:drawable="@drawable/back_arrow_hover" />
</selector>

Используя эту идею, мы должны иметь как минимум два изображения.Если у меня есть десять кнопок в проекте, тогда у меня должно быть двадцать изображений в нарисованном ресурсе.Чтобы обеспечить поддержку приложения в нескольких плотностях / размерах экрана, мне нужно 60 (20X3) изображений.

У меня есть два вида мыслей, но я не знаю, как их реализовать.Это:

  1. мы должны определить метод вместо файла селектора.
  2. у нас должно быть одно изображение, и нам нужно изменить альфа-значение, как iPhone.

Есть ли другие великие идеи, которые больше всего нужны?Потому что это увеличивает размер приложения.

Пожалуйста, выражайте свои мысли и идеи.

1 Ответ

1 голос
/ 10 июля 2011

Полагаю, фоны вашей кнопки не слишком сложные. Если это не так, то вы можете использовать png-файлы с 9-патчами, поэтому количество доступных для рисования уменьшится до одного сета. PNG с 9 патчами будет изменять размер и масштабироваться в соответствии с необходимостью.

Но если bckgrounds сложны, для каждого разрешения требуется несколько ресурсов.

...