Сделать анимацию кнопки не go на рисованном фоне - PullRequest
0 голосов
/ 12 апреля 2020

Верхняя кнопка: не нажата, нижняя кнопка нажата

Как сделать так, чтобы анимация блока «по умолчанию» при нажатии кнопки на android соответствовала заданному рисуемому фону? Нарисованный фон дает кнопкам закругленные углы.

Редактировать: пульсация. xml работает, но накладывается на текст кнопки.

Кнопка:

        <Button
        android:id="@+id/about"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:textSize="20sp"
        android:text="test123"
        android:padding="5dip"
        android:textAllCaps="false"
        android:textColor="@color/settings"
        android:foreground="@drawable/ripple"
        />

Кнопка рисования setting_ 1012 *

<?xml version="1.0" encoding="utf-8"?>
<!--  res/drawable/rounded_edittext.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" android:padding="10dp">
    <solid android:color="@color/colorWhite"/>
    <corners
        android:bottomRightRadius="15dp"
        android:bottomLeftRadius="15dp"
        android:topLeftRadius="15dp"
        android:topRightRadius="15dp"/>
</shape>
Пульсация. xml

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?android:attr/colorControlHighlight">
    <item android:id="@android:id/mask">
        <shape android:shape="rectangle">
            <solid android:color="#000000" />
            <corners
                android:bottomRightRadius="15dp"
                android:bottomLeftRadius="15dp"
                android:topLeftRadius="15dp"
                android:topRightRadius="15dp"/>
        </shape>
    </item>
    <item android:drawable="@drawable/setting_button" />
</ripple>

1 Ответ

0 голосов
/ 12 апреля 2020

Решением для этого является специальный слой маски RippleDrawable. Вы задаете слой маски с помощью значения android: id, установленного на @ android: id / mask. https://proandroiddev.com/rippling-rounding-and-android-pies-d5db5f4c2fc1 http://michaelevans.org/blog/2015/05/07/android-ripples-with-rounded-corners/

  <Button
    android:id="@+id/about"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="16dp"
    android:background="@drawable/setting_button"
    android:foreground="@drawable/ripple"
    android:padding="5dip"
    android:text="test123"
    android:textAllCaps="false"
    android:textColor="@color/settings"
    android:textSize="20sp" />

И удалите <item android:drawable="@drawable/setting_button" /> из рисованной пульсации:

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:attr/colorControlHighlight">
<item android:id="@android:id/mask">
    <shape android:shape="rectangle">
        <solid android:color="#000000" />
        <corners
            android:bottomLeftRadius="15dp"
            android:bottomRightRadius="15dp"
            android:topLeftRadius="15dp"
            android:topRightRadius="15dp" />
    </shape>
</item>

...