pre Lollipop中的android StateListAnimator
我搜索了越来越多,但没有找到任何答案。因此,请告诉我如何使用AnimatorInflater.loadStateListAnimator(…)和view.setStateListAnimator(…)方法在棒棒糖制作前,有什么方法可以代替这些方法吗?StateListAnimator是一个在状态发生变化时启动的动画师。在旧版本的Android上实现这一点是可能的。我正在进行中的后移植,但现在库只支持立面动画 要实现状态animator extend和override drawableStateChanged,请执行以下操作: 然后使用希望具有的状态动画实现:pre Lollipop中的android StateListAnimator,android,material-design,Android,Material Design,我搜索了越来越多,但没有找到任何答案。因此,请告诉我如何使用AnimatorInflater.loadStateListAnimator(…)和view.setStateListAnimator(…)方法在棒棒糖制作前,有什么方法可以代替这些方法吗?StateListAnimator是一个在状态发生变化时启动的动画师。在旧版本的Android上实现这一点是可能的。我正在进行中的后移植,但现在库只支持立面动画 要实现状态animator extend和override drawableStateC
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 }
和一个简单的(每个动画师的超类):
为所有视图提供正确的状态动画非常复杂和耗时,但您可以通过在drawableStateChanged中添加动画来实现这一点 非常感谢,这是我一直在寻找的。你节省了我很多时间
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 }
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 }