Animate drag handle so it stays centered
Test: visual
Bug: 70799093
Change-Id: Ib804748052ec4b605ad80e4f24d14ed37fd4ba55
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java b/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java
index 9c87e1b..7f34acb 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java
@@ -21,7 +21,6 @@
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
-import android.content.res.Resources;
import android.graphics.PorterDuff.Mode;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.RippleDrawable;
@@ -47,7 +46,6 @@
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.qs.TouchAnimator.Builder;
import com.android.systemui.statusbar.CommandQueue;
-import com.android.systemui.statusbar.phone.ExpandableIndicator;
import com.android.systemui.statusbar.phone.MultiUserSwitch;
import com.android.systemui.statusbar.phone.SettingsButton;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
@@ -61,6 +59,7 @@
public class QSFooterImpl extends FrameLayout implements QSFooter,
OnClickListener, OnUserInfoChangedListener, EmergencyListener,
SignalCallback, CommandQueue.Callbacks {
+
private ActivityStarter mActivityStarter;
private UserInfoController mUserInfoController;
private SettingsButton mSettingsButton;
@@ -79,16 +78,22 @@
protected MultiUserSwitch mMultiUserSwitch;
private ImageView mMultiUserAvatar;
- protected TouchAnimator mSettingsAlpha;
+ protected TouchAnimator mFooterAnimator;
private float mExpansionAmount;
protected View mEdit;
- private TouchAnimator mAnimator;
+ private TouchAnimator mSettingsCogAnimator;
private View mActionsContainer;
+ private View mDragHandle;
+ private final int mDragHandleExpandOffset;
public QSFooterImpl(Context context, AttributeSet attrs) {
super(context, attrs);
+
+ mDragHandleExpandOffset = getResources().
+ getDimensionPixelSize(R.dimen.qs_footer_drag_handle_offset);
+
}
@Override
@@ -109,6 +114,7 @@
mMultiUserSwitch = findViewById(R.id.multi_user_switch);
mMultiUserAvatar = mMultiUserSwitch.findViewById(R.id.multi_user_avatar);
+ mDragHandle = findViewById(R.id.qs_drag_handle_view);
mActionsContainer = findViewById(R.id.qs_footer_actions_container);
// RenderThread is doing more harm than good when touching the header (to expand quick
@@ -130,7 +136,7 @@
int remaining = (width - numTiles * size) / (numTiles - 1);
int defSpace = mContext.getResources().getDimensionPixelOffset(R.dimen.default_gear_space);
- mAnimator = new Builder()
+ mSettingsCogAnimator = new Builder()
.addFloat(mSettingsContainer, "translationX",
isLayoutRtl() ? (remaining - defSpace) : -(remaining - defSpace), 0)
.addFloat(mSettingsButton, "rotation", -120, 0)
@@ -152,19 +158,20 @@
}
private void updateResources() {
- updateSettingsAnimator();
+ updateFooterAnimator();
}
- private void updateSettingsAnimator() {
- mSettingsAlpha = createSettingsAlphaAnimator();
+ private void updateFooterAnimator() {
+ mFooterAnimator = createFooterAnimator();
}
@Nullable
- private TouchAnimator createSettingsAlphaAnimator() {
+ private TouchAnimator createFooterAnimator() {
return new TouchAnimator.Builder()
.addFloat(mDivider, "alpha", 0, 1)
.addFloat(mCarrierText, "alpha", 0, 1)
.addFloat(mActionsContainer, "alpha", 0, 1)
+ .addFloat(mDragHandle, "translationY", 0, -mDragHandleExpandOffset)
.build();
}
@@ -183,10 +190,10 @@
@Override
public void setExpansion(float headerExpansionFraction) {
mExpansionAmount = headerExpansionFraction;
- if (mAnimator != null) mAnimator.setPosition(headerExpansionFraction);
+ if (mSettingsCogAnimator != null) mSettingsCogAnimator.setPosition(headerExpansionFraction);
- if (mSettingsAlpha != null) {
- mSettingsAlpha.setPosition(headerExpansionFraction);
+ if (mFooterAnimator != null) {
+ mFooterAnimator.setPosition(headerExpansionFraction);
}
}