Главная > Android > Ripple effect on Android Lollipop CardView

Ripple effect on Android Lollipop CardView

Бывает необходимость в анимации клика на объекте CardView. Как вариант можно использовать атрибут selectableItemBackground основной темы но это работает только начиная с версии API 16. А если нам надо более раннюю версию API ?
Итак имеем:

<android.support.v7.widget.CardView 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    android:clickable="true" 
    android:foreground="@drawable/custom_bg"/>

Создаем ресурс drawable-v21 (для lollipop) в нем файл custom_bg.xml с содержимым:

<ripple 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?android:attr/colorControlHighlight">
<item
    android:id="@android:id/mask"
    android:drawable="@android:color/white"/>
</ripple>

Создаем файл custom_bg.xml (для pre-lollipop) с содержимым:

<!--?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/colorHighlight"></solid>
    </shape>
</item>
<item>
    <shape>
        <solid android:color="@color/navigation_drawer_background"></solid>
    </shape>
</item>
</selector>

И довольствуемся результатом!

Categories: Android Tags:
  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.