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?
Ответы
Ответ 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 на данный момент.