Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit eb38aa7b authored by Evan Laird's avatar Evan Laird
Browse files

Animate drag handle so it stays centered

Test: visual
Bug: 70799093
Change-Id: Ib804748052ec4b605ad80e4f24d14ed37fd4ba55
parent 34b58512
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -332,6 +332,8 @@
    <dimen name="qs_footer_padding_start">16dp</dimen>
    <dimen name="qs_footer_padding_end">24dp</dimen>
    <dimen name="qs_footer_icon_size">16dp</dimen>
    <!-- Difference between drag handle margin in QQS and expanded QS -->
    <dimen name="qs_footer_drag_handle_offset">6dp</dimen>

    <dimen name="qs_notif_collapsed_space">64dp</dimen>

+19 −12
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import static android.app.StatusBarManager.DISABLE2_QUICK_SETTINGS;
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.SysUiServiceProvider;
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 @@ import com.android.systemui.tuner.TunerService;
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 @@ public class QSFooterImpl extends FrameLayout implements QSFooter,
    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 @@ public class QSFooterImpl extends FrameLayout implements QSFooter,
        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 @@ public class QSFooterImpl extends FrameLayout implements QSFooter,
        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 @@ public class QSFooterImpl extends FrameLayout implements QSFooter,
    }

    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 @@ public class QSFooterImpl extends FrameLayout implements QSFooter,
    @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);
        }
    }