diff --git a/api/current.txt b/api/current.txt
index af85c9df3..688957eda 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -4,12 +4,12 @@ package android.support.design.widget {
ctor public AppBarLayout(android.content.Context);
ctor public AppBarLayout(android.content.Context, android.util.AttributeSet);
method public void addOnOffsetChangedListener(android.support.design.widget.AppBarLayout.OnOffsetChangedListener);
- method public float getTargetElevation();
+ method public deprecated float getTargetElevation();
method public final int getTotalScrollRange();
method public void removeOnOffsetChangedListener(android.support.design.widget.AppBarLayout.OnOffsetChangedListener);
method public void setExpanded(boolean);
method public void setExpanded(boolean, boolean);
- method public void setTargetElevation(float);
+ method public deprecated void setTargetElevation(float);
}
public static class AppBarLayout.Behavior extends android.support.design.widget.HeaderBehavior {
diff --git a/lollipop/android/support/design/widget/ViewUtilsLollipop.java b/lollipop/android/support/design/widget/ViewUtilsLollipop.java
index f080592b3..cb9fc8845 100644
--- a/lollipop/android/support/design/widget/ViewUtilsLollipop.java
+++ b/lollipop/android/support/design/widget/ViewUtilsLollipop.java
@@ -16,13 +16,65 @@
package android.support.design.widget;
+import android.animation.AnimatorInflater;
+import android.animation.ObjectAnimator;
+import android.animation.StateListAnimator;
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.support.design.R;
+import android.util.AttributeSet;
import android.view.View;
import android.view.ViewOutlineProvider;
class ViewUtilsLollipop {
+ private static final int[] STATE_LIST_ANIM_ATTRS = new int[] {android.R.attr.stateListAnimator};
+
static void setBoundsViewOutlineProvider(View view) {
view.setOutlineProvider(ViewOutlineProvider.BOUNDS);
}
+ static void setStateListAnimatorFromAttrs(View view, AttributeSet attrs,
+ int defStyleAttr, int defStyleRes) {
+ final Context context = view.getContext();
+ final TypedArray a = context.obtainStyledAttributes(attrs, STATE_LIST_ANIM_ATTRS,
+ defStyleAttr, defStyleRes);
+ try {
+ if (a.hasValue(0)) {
+ StateListAnimator sla = AnimatorInflater.loadStateListAnimator(context,
+ a.getResourceId(0, 0));
+ view.setStateListAnimator(sla);
+ }
+ } finally {
+ a.recycle();
+ }
+ }
+
+ /**
+ * Creates and sets a {@link StateListAnimator} with a custom elevation value
+ */
+ static void setDefaultAppBarLayoutStateListAnimator(final View view,
+ final float targetElevation) {
+ final StateListAnimator sla = new StateListAnimator();
+
+ // Enabled, collapsible and collapsed == elevated
+ sla.addState(new int[]{android.R.attr.enabled, R.attr.state_collapsible,
+ R.attr.state_collapsed},
+ ObjectAnimator.ofFloat(view, "elevation", targetElevation));
+
+ // Enabled and collapsible, but not collapsed != elevated
+ sla.addState(new int[]{android.R.attr.enabled, R.attr.state_collapsible,
+ -R.attr.state_collapsed},
+ ObjectAnimator.ofFloat(view, "elevation", 0f));
+
+ // Enabled but not collapsible == elevated
+ sla.addState(new int[]{android.R.attr.enabled, -R.attr.state_collapsible},
+ ObjectAnimator.ofFloat(view, "elevation", targetElevation));
+
+ // Default, none elevated state
+ sla.addState(new int[0], ObjectAnimator.ofFloat(view, "elevation", 0));
+
+ view.setStateListAnimator(sla);
+ }
+
}
diff --git a/res/anim-v21/design_appbar_state_list_animator.xml b/res/anim-v21/design_appbar_state_list_animator.xml
new file mode 100644
index 000000000..c7bba1407
--- /dev/null
+++ b/res/anim-v21/design_appbar_state_list_animator.xml
@@ -0,0 +1,43 @@
+
+
+
+
+ -
+
+
+
+ -
+
+
+
+ -
+
+
+
+ -
+
+
+
+
\ No newline at end of file
diff --git a/res/values-v21/styles.xml b/res/values-v21/styles.xml
new file mode 100644
index 000000000..76bde7838
--- /dev/null
+++ b/res/values-v21/styles.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index f3abec119..4e54db4e0 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -210,6 +210,7 @@
+
+
+
+
+
+