it-swarm.com.ru

Установка пульсации FloatingActionButton

Я пытаюсь установить для пульсации FloatingActionButton что-то похожее на this

Из материала дизайна.

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

Я следовал за ответом здесь:

Пример FloatingActionButton с библиотекой поддержки

но мой FAB все еще скучен!

Правка: Мой текущий код: XML:

  <Android.support.design.widget.FloatingActionButton
     Android:id="@+id/item_activity_fab"
     Android:layout_width="64dp"
     Android:layout_height="64dp"
     Android:layout_marginRight="16dp"
     Android:src="@drawable/watch"
     app:borderWidth="0dp"
     app:elevation="6dp"
     app:fabSize="normal"
     app:layout_anchor="@id/item_activity_title_background"
     app:layout_anchorGravity="top|right|end"
     app:pressedTranslationZ="12dp"
     app:rippleColor="@Android:color/transparent"/>

Джава:

    mAddToWatchListFAB.setRippleColor(ContextCompat.getColor(this, R.color.orange_6));

Я попробовал этот метод на FAB, но, похоже, он не работал. Я также попробовал шаги в ссылке, которую я предоставил

13
x10sion

добавьте следующие 2 свойства в ваш код xml кнопки с плавающим действием

 app:rippleColor="@color/textcolor"
 Android:clickable="true"

делая FAB кликабельным, добавляет цвет пульсации

27
Usman Iqbal

Вы можете реализовать это так, как сказал мой Габриэле Мариотти

Вы можете сделать что-то вроде этого:

<Button
      Android:layout_width="wrap_content"
      Android:layout_height="wrap_content"
      Android:background="@drawable/ripple"

    />

Где находится ripple.xml:

<ripple xmlns:Android="http://schemas.Android.com/apk/res/Android" 
                      Android:color="?android:colorControlHighlight">
        <item Android:id="@Android:id/mask">
            <shape Android:shape="oval">
                <solid Android:color="?android:colorAccent" />
            </shape>
        </item>
 </ripple>

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

ОБНОВЛЕНИЕ

<Android.support.design.widget.FloatingActionButton
     Android:id="@+id/item_activity_fab"
     Android:layout_width="64dp"
     Android:layout_height="64dp"
     Android:layout_marginRight="16dp"
     Android:src="@drawable/watch"
     Android:background="@drawable/ripple"
     app:borderWidth="0dp"
     app:elevation="6dp"
     app:fabSize="normal"
     app:layout_anchor="@id/item_activity_title_background"
     app:layout_anchorGravity="top|right|end"
     app:pressedTranslationZ="12dp"/>

И используйте вышеупомянутый ripple.xml. Так просто! Все, что вам нужно сделать, это замаскировать :)

ОБНОВЛЕНИЕ 2

Для API 20 и менее, есть варианты реализации волнового эффекта. Проверьте следующие советы, сказанные Марчин Орловски

К счастью, уже есть несколько пользовательских реализаций:

включая тематические наборы виджетов Materlial, совместимые со старыми версиями Android:

так что вы можете попробовать один из них или Google для других "виджетов материала" или около того ...

4
Sibidharan

Вместо использования прозрачного, попробуйте использовать:

app:rippleColor="@color/colorAccentLight"

где colorAccentLight - это более яркий акцент вашего текущего цвета акцента. В моем случае я использовал:

<color name="colorAccent">#E040FB</color>
<color name="colorAccentLight">#E1BEE7</color>

в colors.xml file ... Или вы всегда можете установить для него другой случайный цвет (кроме вашего текущего цвета акцента) для целей тестирования.

1
DaveNOTDavid

Ваш цвет пульсации прозрачен. Я ожидаю, что ваша пульсация проявляется нормально, но поскольку она невидима, вы ее не видите.

Смотрите этот ответ для решения.

Android: вы можете иметь волновой эффект, чей цвет по умолчанию является прозрачным?

0
Kuffs
    <!--change this to any color-->
    app:rippleColor="@Android:color/transparent"

    <!-- try this line instead above -->
    app:rippleColor="@color/colorPrimary"
    Android:clickable="true"
0
user3607151