Loading packages/SystemUI/res/drawable/ic_qs_drag_handle.xml 0 → 100644 +24 −0 Original line number Diff line number Diff line <!-- ~ Copyright (C) 2021 The Android Open Source Project ~ ~ Licensed under the Apache License, Version 2.0 (the "License"); ~ you may not use this file except in compliance with the License. ~ You may obtain a copy of the License at ~ ~ http://www.apache.org/licenses/LICENSE-2.0 ~ ~ Unless required by applicable law or agreed to in writing, software ~ distributed under the License is distributed on an "AS IS" BASIS, ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ~ See the License for the specific language governing permissions and ~ limitations under the License --> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="36dp" android:height="24dp" android:viewportWidth="24.0" android:viewportHeight="24.0"> <path android:fillColor="?android:attr/textColorPrimary" android:pathData="M5.41,7.59L4,9l8,8 8,-8 -1.41,-1.41L12,14.17" /> </vector> packages/SystemUI/res/layout/qs_panel.xml +23 −5 Original line number Diff line number Diff line Loading @@ -13,8 +13,8 @@ See the License for the specific language governing permissions and limitations under the License. --> <com.android.systemui.qs.QSContainerImpl xmlns:android="http://schemas.android.com/apk/res/android" <com.android.systemui.qs.QSContainerImpl xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/quick_settings_container" android:layout_width="match_parent" android:layout_height="match_parent" Loading @@ -40,15 +40,33 @@ android:accessibilityTraversalBefore="@android:id/edit" android:clipToPadding="false" android:clipChildren="false"> <include layout="@layout/qs_footer_impl" /> </com.android.systemui.qs.QSPanel> </com.android.systemui.qs.NonInterceptingScrollView> <include layout="@layout/quick_status_bar_expanded_header" /> <include android:id="@+id/qs_detail" layout="@layout/qs_detail" /> <include android:id="@+id/qs_detail" layout="@layout/qs_detail" /> <include android:id="@+id/qs_customize" layout="@layout/qs_customize_panel" <include android:id="@+id/qs_customize" layout="@layout/qs_customize_panel" android:visibility="gone" /> <ImageView android:id="@+id/qs_drag_handle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="24dp" android:elevation="4dp" android:importantForAccessibility="no" android:scaleType="center" android:src="@drawable/ic_qs_drag_handle" android:tint="@color/qs_detail_button_white" tools:ignore="UseAppTint" /> </com.android.systemui.qs.QSContainerImpl> packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java +6 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.util.AttributeSet; import android.view.View; import android.view.WindowInsets; import android.widget.FrameLayout; import android.widget.ImageView; import com.android.systemui.R; import com.android.systemui.qs.customize.QSCustomizer; Loading @@ -47,6 +48,7 @@ public class QSContainerImpl extends FrameLayout { private float mQsExpansion; private QSCustomizer mQSCustomizer; private NonInterceptingScrollView mQSPanelContainer; private ImageView mDragHandle; private int mSideMargins; private boolean mQsDisabled; Loading @@ -65,6 +67,7 @@ public class QSContainerImpl extends FrameLayout { mQSDetail = findViewById(R.id.qs_detail); mHeader = findViewById(R.id.header); mQSCustomizer = findViewById(R.id.qs_customize); mDragHandle = findViewById(R.id.qs_drag_handle); setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO); } Loading Loading @@ -195,6 +198,8 @@ public class QSContainerImpl extends FrameLayout { mQSDetail.setBottom(getTop() + scrollBottom); int qsDetailBottomMargin = ((MarginLayoutParams) mQSDetail.getLayoutParams()).bottomMargin; mQSDetail.setBottom(getTop() + scrollBottom - qsDetailBottomMargin); // Pin the drag handle to the bottom of the panel. mDragHandle.setTranslationY(scrollBottom - mDragHandle.getHeight()); } protected int calculateContainerHeight() { Loading @@ -216,6 +221,7 @@ public class QSContainerImpl extends FrameLayout { public void setExpansion(float expansion) { mQsExpansion = expansion; mQSPanelContainer.setScrollingEnabled(expansion > 0f); mDragHandle.setAlpha(1.0f - expansion); updateExpansion(); } Loading packages/SystemUI/src/com/android/systemui/qs/QSFragment.java +11 −3 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.widget.FrameLayout.LayoutParams; import android.widget.ImageView; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; Loading Loading @@ -86,6 +87,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca private QSFooter mFooter; private float mLastQSExpansion = -1; private boolean mQsDisabled; private ImageView mQsDragHandler; private final RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler; private final InjectionInflationController mInjectionInflater; Loading Loading @@ -187,6 +189,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca mHeader = view.findViewById(R.id.header); mQSPanelController.setHeaderContainer(view.findViewById(R.id.header_text_container)); mFooter = qsFragmentComponent.getQSFooter(); mQsDragHandler = view.findViewById(R.id.qs_drag_handle); mQsDetailDisplayer.setQsPanelController(mQSPanelController); Loading Loading @@ -291,6 +294,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca mQSAnimator.onRtlChanged(); } } updateQsState(); } @Override Loading Loading @@ -363,8 +367,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca : View.INVISIBLE); mHeader.setExpanded((keyguardShowing && !mHeaderAnimating && !mShowCollapsedOnKeyguard) || (mQsExpanded && !mStackScrollerOverscrolling), mQuickQSPanelController); mFooter.setVisibility( !mQsDisabled && (mQsExpanded || !keyguardShowing || mHeaderAnimating mFooter.setVisibility(!mQsDisabled && (mQsExpanded || !keyguardShowing || mHeaderAnimating || mShowCollapsedOnKeyguard) ? View.VISIBLE : View.INVISIBLE); Loading @@ -372,6 +375,11 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca || (mQsExpanded && !mStackScrollerOverscrolling)); mQSPanelController.setVisibility( !mQsDisabled && expandVisually ? View.VISIBLE : View.INVISIBLE); mQsDragHandler.setVisibility((mQsExpanded || !keyguardShowing || mHeaderAnimating || mShowCollapsedOnKeyguard) && Utils.shouldUseSplitNotificationShade(mFeatureFlags, getResources()) ? View.VISIBLE : View.GONE); } private boolean isKeyguardState() { Loading Loading
packages/SystemUI/res/drawable/ic_qs_drag_handle.xml 0 → 100644 +24 −0 Original line number Diff line number Diff line <!-- ~ Copyright (C) 2021 The Android Open Source Project ~ ~ Licensed under the Apache License, Version 2.0 (the "License"); ~ you may not use this file except in compliance with the License. ~ You may obtain a copy of the License at ~ ~ http://www.apache.org/licenses/LICENSE-2.0 ~ ~ Unless required by applicable law or agreed to in writing, software ~ distributed under the License is distributed on an "AS IS" BASIS, ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ~ See the License for the specific language governing permissions and ~ limitations under the License --> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="36dp" android:height="24dp" android:viewportWidth="24.0" android:viewportHeight="24.0"> <path android:fillColor="?android:attr/textColorPrimary" android:pathData="M5.41,7.59L4,9l8,8 8,-8 -1.41,-1.41L12,14.17" /> </vector>
packages/SystemUI/res/layout/qs_panel.xml +23 −5 Original line number Diff line number Diff line Loading @@ -13,8 +13,8 @@ See the License for the specific language governing permissions and limitations under the License. --> <com.android.systemui.qs.QSContainerImpl xmlns:android="http://schemas.android.com/apk/res/android" <com.android.systemui.qs.QSContainerImpl xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/quick_settings_container" android:layout_width="match_parent" android:layout_height="match_parent" Loading @@ -40,15 +40,33 @@ android:accessibilityTraversalBefore="@android:id/edit" android:clipToPadding="false" android:clipChildren="false"> <include layout="@layout/qs_footer_impl" /> </com.android.systemui.qs.QSPanel> </com.android.systemui.qs.NonInterceptingScrollView> <include layout="@layout/quick_status_bar_expanded_header" /> <include android:id="@+id/qs_detail" layout="@layout/qs_detail" /> <include android:id="@+id/qs_detail" layout="@layout/qs_detail" /> <include android:id="@+id/qs_customize" layout="@layout/qs_customize_panel" <include android:id="@+id/qs_customize" layout="@layout/qs_customize_panel" android:visibility="gone" /> <ImageView android:id="@+id/qs_drag_handle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="24dp" android:elevation="4dp" android:importantForAccessibility="no" android:scaleType="center" android:src="@drawable/ic_qs_drag_handle" android:tint="@color/qs_detail_button_white" tools:ignore="UseAppTint" /> </com.android.systemui.qs.QSContainerImpl>
packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java +6 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.util.AttributeSet; import android.view.View; import android.view.WindowInsets; import android.widget.FrameLayout; import android.widget.ImageView; import com.android.systemui.R; import com.android.systemui.qs.customize.QSCustomizer; Loading @@ -47,6 +48,7 @@ public class QSContainerImpl extends FrameLayout { private float mQsExpansion; private QSCustomizer mQSCustomizer; private NonInterceptingScrollView mQSPanelContainer; private ImageView mDragHandle; private int mSideMargins; private boolean mQsDisabled; Loading @@ -65,6 +67,7 @@ public class QSContainerImpl extends FrameLayout { mQSDetail = findViewById(R.id.qs_detail); mHeader = findViewById(R.id.header); mQSCustomizer = findViewById(R.id.qs_customize); mDragHandle = findViewById(R.id.qs_drag_handle); setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO); } Loading Loading @@ -195,6 +198,8 @@ public class QSContainerImpl extends FrameLayout { mQSDetail.setBottom(getTop() + scrollBottom); int qsDetailBottomMargin = ((MarginLayoutParams) mQSDetail.getLayoutParams()).bottomMargin; mQSDetail.setBottom(getTop() + scrollBottom - qsDetailBottomMargin); // Pin the drag handle to the bottom of the panel. mDragHandle.setTranslationY(scrollBottom - mDragHandle.getHeight()); } protected int calculateContainerHeight() { Loading @@ -216,6 +221,7 @@ public class QSContainerImpl extends FrameLayout { public void setExpansion(float expansion) { mQsExpansion = expansion; mQSPanelContainer.setScrollingEnabled(expansion > 0f); mDragHandle.setAlpha(1.0f - expansion); updateExpansion(); } Loading
packages/SystemUI/src/com/android/systemui/qs/QSFragment.java +11 −3 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.widget.FrameLayout.LayoutParams; import android.widget.ImageView; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; Loading Loading @@ -86,6 +87,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca private QSFooter mFooter; private float mLastQSExpansion = -1; private boolean mQsDisabled; private ImageView mQsDragHandler; private final RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler; private final InjectionInflationController mInjectionInflater; Loading Loading @@ -187,6 +189,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca mHeader = view.findViewById(R.id.header); mQSPanelController.setHeaderContainer(view.findViewById(R.id.header_text_container)); mFooter = qsFragmentComponent.getQSFooter(); mQsDragHandler = view.findViewById(R.id.qs_drag_handle); mQsDetailDisplayer.setQsPanelController(mQSPanelController); Loading Loading @@ -291,6 +294,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca mQSAnimator.onRtlChanged(); } } updateQsState(); } @Override Loading Loading @@ -363,8 +367,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca : View.INVISIBLE); mHeader.setExpanded((keyguardShowing && !mHeaderAnimating && !mShowCollapsedOnKeyguard) || (mQsExpanded && !mStackScrollerOverscrolling), mQuickQSPanelController); mFooter.setVisibility( !mQsDisabled && (mQsExpanded || !keyguardShowing || mHeaderAnimating mFooter.setVisibility(!mQsDisabled && (mQsExpanded || !keyguardShowing || mHeaderAnimating || mShowCollapsedOnKeyguard) ? View.VISIBLE : View.INVISIBLE); Loading @@ -372,6 +375,11 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca || (mQsExpanded && !mStackScrollerOverscrolling)); mQSPanelController.setVisibility( !mQsDisabled && expandVisually ? View.VISIBLE : View.INVISIBLE); mQsDragHandler.setVisibility((mQsExpanded || !keyguardShowing || mHeaderAnimating || mShowCollapsedOnKeyguard) && Utils.shouldUseSplitNotificationShade(mFeatureFlags, getResources()) ? View.VISIBLE : View.GONE); } private boolean isKeyguardState() { Loading