Я искал все больше и больше, но я не нашел ответа. Так скажите, пожалуйста, как использовать AnimatorInflater.loadStateListAnimator (..) и view.setStateListAnimator (..) методы в pre Lollipop, есть ли способ сделать вместо них?android StateListAnimator in pre Lollipop
2
A
ответ
3
StateListAnimator - это Animator, запущенный при изменении состояния. Это можно реализовать в старых версиях Android. Я работаю над тем, чтобы передать их в Carbon, но на данный момент библиотека поддерживает только анимацию возвышения.
Чтобы реализовать состояние аниматор расширить a View и переопределить drawableStateChanged:
397 @Override
398 protected void drawableStateChanged() {
399 super.drawableStateChanged();
402 if (stateAnimators != null)
403 for (StateAnimator animator : stateAnimators)
404 animator.stateChanged(getDrawableState());
405 }
Затем осуществить an animator с государственной анимации вы хотите иметь:
23 @Override
24 protected void onPressedChanged() {
25 if (pressed) {
26 setTranslationZ(pressedElevation);
27 } else {
28 setTranslationZ(0);
29 }
30 }
31
32 private void setTranslationZ(float translationZ) {
33 if (view.getTranslationZ() == translationZ || view.getElevation() == 0)
34 return;
35 ValueAnimator animator = ValueAnimator.ofFloat(view.getTranslationZ(), translationZ);
36 animator.setInterpolator(new AccelerateDecelerateInterpolator());
37 animator.setDuration(300);
38 animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
39 @Override
40 public void onAnimationUpdate(ValueAnimator animation) {
41 view.setTranslationZ((Float) animation.getAnimatedValue());
42 }
43 });
44 animator.start();
45 }
И простой state change detector class (суперкласс каждого аниматора):
10 public void stateChanged(int[] states) {
11 boolean newPressed = false, newEnabled = false, newChecked = false;
12 for (int state : states) {
13 if (state == android.R.attr.state_enabled) {
14 newEnabled = true;
15 } else if (state == android.R.attr.state_pressed) {
16 newPressed = true;
17 } else if (state == android.R.attr.state_checked) {
18 newChecked = true;
19 }
20 }
21 if (pressed != newPressed) {
22 pressed = newPressed;
23 onPressedChanged();
24 }
25 if (enabled != newEnabled) {
26 enabled = newEnabled;
27 onEnabledChanged();
28 }
29 if (checked != newChecked) {
30 checked = newChecked;
31 onCheckedChanged();
32 }
33 }
Наличие правильных аниматоров состояний для всех видов довольно сложное и трудоемкое, но вы можете добиться этого, добавив анимации в drawableStateChanged.
Смежные вопросы
- 1. Android shadows pre Lollipop
- 2. Android SetBackgroundResource & SetBackground не работает pre lollipop
- 3. Android setBackgroundTintList на устройствах pre-lollipop
- 4. Android - сбой приложений на устройствах Pre-Lollipop
- 5. Layout CardView pre-Lollipop e Эффект Lollipop
- 6. Volley PATCH request pre-lollipop
- 7. Правильный метод использования темы материала в Lollipop и pre-Lollipop
- 8. Эффект пульсации для pre lollipop
- 9. setCardElevation no effect pre Lollipop
- 10. Атрибут атрибута переопределения pre-lollipop
- 11. Оттенок для рисования pre Lollipop
- 12. SwitchCompat on pre lollipop devices
- 13. DrawableCompat.unwrap не работает pre Lollipop
- 14. «Ugly» CardView на устройствах Pre-Lollipop
- 15. Использование материала на pre-Lollipop sdk
- 16. Уведомление bigText не обертывается на pre-Lollipop
- 17. Дизайн материалов на планшетах Pre-Lollipop
- 18. FloatingActionButton + VectorDrawable crashing on pre-Lollipop
- 19. Android colorControlNormal xml атрибуты не работают pre-Lollipop
- 20. Создание круговой Reveal для Pre-Lollipop устройств
- 21. исключение разрешения только для Lollipop и pre-Lollipop NOT
- 22. Добавить тень к пользовательскому представлению pre-lollipop
- 23. Треугольная пуля в Android TextView для устройств Pre-Lollipop
- 24. GCM Push уведомление, когда приложение убито Android Pre lollipop
- 25. Разработка Android - Status Bar не отображается на pre Lollipop (AppCompat)
- 26. onClickListener в ViewHolder не вызывается в android pre lollipop
- 27. Android-поверхности Посмотрите похожий макет в pre-Lollipop
- 28. Кнопка Android Ripple с изогнутым фоном для устройств Pre-Lollipop
- 29. Сбой приложений для Android на Java-библиотеке pre-Lollipop
- 30. Кнопки для дизайна материалов для Android - Pre lollipop
Большое вам спасибо, это то, что я искал. Вы экономите много времени)) –