Подтвердить что ты не робот

API-интерфейс AppCompatButton backgroundTint <21

Я хочу использовать эффекты пульсации на кнопках. AppCompat v22.1 добавила AppCompatButton и новые функции для тонирования AppCompat.

Мой макет:

<android.support.v7.widget.AppCompatButton
        android:id="@+id/add_remove_button"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:backgroundTint="@color/primary"
        android:textColor="@android:color/white"
        android:text="Remove" />

На моем тестовом устройстве API 22 эффект пульсации работает отлично, но я кодирую API 11, и, к сожалению, для backgroundTint требуется API >= 21. Как я могу настроить эффект пульсации на кнопки в более старых версиях API?

4b9b3361

Ответ 1

Просто используйте app:backgroundTint вместо android:backgroundTint, оттенок будет действовать ниже Lollipop. Причина: AppCompatActivity AppCompatDelegateImplV7 использовать AppCompatViewInflater для автоматической смены кнопки или TextView на AppCompatButton или AppCompatTextView, затем app:backgroundTint вступить в силу.

введите описание изображения здесь

В моем проекте я использовал его, он работал.

Ответ 2

Ряды не доступны в виде встроенных функций на Android < 21. Это связано с проблемами производительности: устройства с новым API могут использовать RenderThread, который недоступен для старых устройств. См. Также: http://android-developers.blogspot.de/2014/10/appcompat-v21-material-design-for-pre.html

Почему на до-Lollipop нет пульсаций? Многое из того, что позволяет RippleDrawable работать бесперебойно, - это новый RenderThread от Android 5.0. Чтобы оптимизировать производительность в предыдущих версиях Android, мы оставили RippleDrawable на данный момент.