Android: Как добиться эффекта свечения при длительном нажатии на элемент списка? - PullRequest
10 голосов
/ 29 июня 2011

При использовании селектора по умолчанию длительное нажатие на элемент списка приводит к переходу фона между двумя цветами.

Замена селектора на приведенный ниже снимает эффект. Согласно этому вопросу , мне нужна анимация для его воспроизведения. Как мне поступить так в xml?

<?xml version="1.0" encoding="utf-8"?>
<selector
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_pressed="true">
        <shape>
            <solid
                android:color="@color/state_pressed" />
        </shape>
    </item>
    <item
        android:state_focused="true">
        <shape>
            <solid
                android:color="@color/state_focused" />
        </shape>
    </item>
    <item>
        <shape>
            <solid
                android:color="@color/state_idle_grey" />
        </shape>
    </item>
</selector>

1 Ответ

9 голосов
/ 29 июня 2011

Вот код из list_selector_background:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_window_focused="false" android:drawable="@android:color/transparent" />
        <!--
                Even though these two point to the same resource, have two states so
                the drawable will invalidate itself when coming out of pressed state.
        -->
        <item android:state_focused="true" android:state_enabled="false"
                android:state_pressed="true"     android:drawable="@drawable/list_selector_background_disabled" />
        <item android:state_focused="true" android:state_enabled="false"
                android:drawable="@drawable/list_selector_background_disabled" />
        <item android:state_focused="true" android:state_pressed="true"
                android:drawable="@drawable/list_selector_background_transition" />
        <item android:state_focused="false" android:state_pressed="true"
                android:drawable="@drawable/list_selector_background_transition" />
        <item android:state_focused="true"
                android:drawable="@+drawable/list_selector_background_focus" />
</selector>

Найдено в Интернете .

И он использует этот переход для длинных нажатий:

<transition xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/list_selector_background_pressed"  />
    <item android:drawable="@drawable/list_selector_background_longpress"  />
</transition>

Найден и в Интернете .

Для этого нет анимации.И помните, чтобы держать ваши состояния в одном и том же порядке или, по крайней мере, подумать об этом, если вы поменяете их местами, порядок важен.

Лично мне нравится, когда все ведет себя стандартным образом, поэтому я просто позволюстандартный список выбора.

С уважением, Стефан

...