Merge "Fix 2 finger pull down animation" into sc-v2-dev

This commit is contained in:
Lucas Dupin
2021-11-08 16:45:00 +00:00
committed by Android (Google) Code Review
5 changed files with 22 additions and 24 deletions

View File

@@ -178,7 +178,10 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout {
@Override @Override
public void setSquishinessFraction(float squishinessFraction) { public void setSquishinessFraction(float squishinessFraction) {
// No-op, paged layouts are not squishy. int nPages = mPages.size();
for (int i = 0; i < nPages; i++) {
mPages.get(i).setSquishinessFraction(squishinessFraction);
}
} }
private void updateListening() { private void updateListening() {

View File

@@ -3,15 +3,14 @@ package com.android.systemui.qs
import android.view.ViewGroup import android.view.ViewGroup
import com.android.systemui.qs.dagger.QSFragmentModule.QQS_FOOTER import com.android.systemui.qs.dagger.QSFragmentModule.QQS_FOOTER
import com.android.systemui.qs.dagger.QSScope import com.android.systemui.qs.dagger.QSScope
import com.android.systemui.qs.tileimpl.HeightOverrideable
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Named import javax.inject.Named
@QSScope @QSScope
class QSSquishinessController @Inject constructor( class QSSquishinessController @Inject constructor(
private val qsTileHost: QSTileHost,
@Named(QQS_FOOTER) private val qqsFooterActionsView: FooterActionsView, @Named(QQS_FOOTER) private val qqsFooterActionsView: FooterActionsView,
private val qsAnimator: QSAnimator, private val qsAnimator: QSAnimator,
private val qsPanelController: QSPanelController,
private val quickQSPanelController: QuickQSPanelController private val quickQSPanelController: QuickQSPanelController
) { ) {
@@ -34,18 +33,10 @@ class QSSquishinessController @Inject constructor(
* Change the height of all tiles and repositions their siblings. * Change the height of all tiles and repositions their siblings.
*/ */
private fun updateSquishiness() { private fun updateSquishiness() {
// Update tile positions in the layout (qsPanelController.tileLayout as QSPanel.QSTileLayout).setSquishinessFraction(squishiness)
val tileLayout = quickQSPanelController.tileLayout as TileLayout val tileLayout = quickQSPanelController.tileLayout as TileLayout
tileLayout.setSquishinessFraction(squishiness) tileLayout.setSquishinessFraction(squishiness)
// Adjust their heights as well
for (tile in qsTileHost.tiles) {
val tileView = quickQSPanelController.getTileView(tile)
(tileView as? HeightOverrideable)?.let {
it.squishinessFraction = squishiness
}
}
// Calculate how much we should move the footer // Calculate how much we should move the footer
val tileHeightOffset = tileLayout.height - tileLayout.tilesHeight val tileHeightOffset = tileLayout.height - tileLayout.tilesHeight
val footerTopMargin = (qqsFooterActionsView.layoutParams as ViewGroup.MarginLayoutParams) val footerTopMargin = (qqsFooterActionsView.layoutParams as ViewGroup.MarginLayoutParams)

View File

@@ -13,6 +13,7 @@ import com.android.internal.logging.UiEventLogger;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.qs.QSPanel.QSTileLayout; import com.android.systemui.qs.QSPanel.QSTileLayout;
import com.android.systemui.qs.QSPanelControllerBase.TileRecord; import com.android.systemui.qs.QSPanelControllerBase.TileRecord;
import com.android.systemui.qs.tileimpl.HeightOverrideable;
import java.util.ArrayList; import java.util.ArrayList;
@@ -285,5 +286,11 @@ public class TileLayout extends ViewGroup implements QSTileLayout {
} }
mSquishinessFraction = squishinessFraction; mSquishinessFraction = squishinessFraction;
layoutTileRecords(mRecords.size(), false /* forLayout */); layoutTileRecords(mRecords.size(), false /* forLayout */);
for (TileRecord record : mRecords) {
if (record.tileView instanceof HeightOverrideable) {
((HeightOverrideable) record.tileView).setSquishinessFraction(mSquishinessFraction);
}
}
} }
} }

View File

@@ -2241,8 +2241,10 @@ public class NotificationPanelViewController extends PanelViewController {
private void updateQsExpansion() { private void updateQsExpansion() {
if (mQs == null) return; if (mQs == null) return;
float qsExpansionFraction = computeQsExpansionFraction(); float qsExpansionFraction = computeQsExpansionFraction();
float squishiness = mNotificationStackScrollLayoutController
.getNotificationSquishinessFraction();
mQs.setQsExpansion(qsExpansionFraction, getExpandedFraction(), getHeaderTranslation(), mQs.setQsExpansion(qsExpansionFraction, getExpandedFraction(), getHeaderTranslation(),
mNotificationStackScrollLayoutController.getNotificationSquishinessFraction()); mQsExpandImmediate || mQsExpanded ? 1f : squishiness);
mSplitShadeHeaderController.setQsExpandedFraction(qsExpansionFraction); mSplitShadeHeaderController.setQsExpandedFraction(qsExpansionFraction);
mMediaHierarchyManager.setQsExpansion(qsExpansionFraction); mMediaHierarchyManager.setQsExpansion(qsExpansionFraction);
int qsPanelBottomY = calculateQsBottomPosition(qsExpansionFraction); int qsPanelBottomY = calculateQsBottomPosition(qsExpansionFraction);

View File

@@ -4,13 +4,10 @@ import android.testing.AndroidTestingRunner
import android.view.ViewGroup import android.view.ViewGroup
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
import com.android.systemui.plugins.qs.QSTile
import com.android.systemui.qs.tileimpl.QSTileViewImpl
import org.junit.Before import org.junit.Before
import org.junit.Rule import org.junit.Rule
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.any
import org.mockito.Mock import org.mockito.Mock
import org.mockito.Mockito.`when` import org.mockito.Mockito.`when`
import org.mockito.Mockito.never import org.mockito.Mockito.never
@@ -21,14 +18,13 @@ import org.mockito.junit.MockitoJUnit
@SmallTest @SmallTest
class QSSquishinessControllerTest : SysuiTestCase() { class QSSquishinessControllerTest : SysuiTestCase() {
@Mock private lateinit var qsTileHost: QSTileHost
@Mock private lateinit var qqsFooterActionsView: FooterActionsView @Mock private lateinit var qqsFooterActionsView: FooterActionsView
@Mock private lateinit var qqsFooterActionsViewLP: ViewGroup.MarginLayoutParams @Mock private lateinit var qqsFooterActionsViewLP: ViewGroup.MarginLayoutParams
@Mock private lateinit var qsAnimator: QSAnimator @Mock private lateinit var qsAnimator: QSAnimator
@Mock private lateinit var qsPanelController: QSPanelController
@Mock private lateinit var quickQsPanelController: QuickQSPanelController @Mock private lateinit var quickQsPanelController: QuickQSPanelController
@Mock private lateinit var qstileView: QSTileViewImpl
@Mock private lateinit var qstile: QSTile
@Mock private lateinit var tileLayout: TileLayout @Mock private lateinit var tileLayout: TileLayout
@Mock private lateinit var pagedTileLayout: PagedTileLayout
@JvmField @Rule val mockitoRule = MockitoJUnit.rule() @JvmField @Rule val mockitoRule = MockitoJUnit.rule()
@@ -36,11 +32,10 @@ class QSSquishinessControllerTest : SysuiTestCase() {
@Before @Before
fun setup() { fun setup() {
qsSquishinessController = QSSquishinessController(qsTileHost, qqsFooterActionsView, qsSquishinessController = QSSquishinessController(qqsFooterActionsView, qsAnimator,
qsAnimator, quickQsPanelController) qsPanelController, quickQsPanelController)
`when`(qsTileHost.tiles).thenReturn(mutableListOf(qstile))
`when`(quickQsPanelController.getTileView(any())).thenReturn(qstileView)
`when`(quickQsPanelController.tileLayout).thenReturn(tileLayout) `when`(quickQsPanelController.tileLayout).thenReturn(tileLayout)
`when`(qsPanelController.tileLayout).thenReturn(pagedTileLayout)
`when`(qqsFooterActionsView.layoutParams).thenReturn(qqsFooterActionsViewLP) `when`(qqsFooterActionsView.layoutParams).thenReturn(qqsFooterActionsViewLP)
} }
@@ -56,7 +51,7 @@ class QSSquishinessControllerTest : SysuiTestCase() {
@Test @Test
fun setSquishiness_updatesTiles() { fun setSquishiness_updatesTiles() {
qsSquishinessController.squishiness = 0.5f qsSquishinessController.squishiness = 0.5f
verify(qstileView).squishinessFraction = 0.5f
verify(tileLayout).setSquishinessFraction(0.5f) verify(tileLayout).setSquishinessFraction(0.5f)
verify(pagedTileLayout).setSquishinessFraction(0.5f)
} }
} }