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
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() {

View File

@@ -3,15 +3,14 @@ package com.android.systemui.qs
import android.view.ViewGroup
import com.android.systemui.qs.dagger.QSFragmentModule.QQS_FOOTER
import com.android.systemui.qs.dagger.QSScope
import com.android.systemui.qs.tileimpl.HeightOverrideable
import javax.inject.Inject
import javax.inject.Named
@QSScope
class QSSquishinessController @Inject constructor(
private val qsTileHost: QSTileHost,
@Named(QQS_FOOTER) private val qqsFooterActionsView: FooterActionsView,
private val qsAnimator: QSAnimator,
private val qsPanelController: QSPanelController,
private val quickQSPanelController: QuickQSPanelController
) {
@@ -34,18 +33,10 @@ class QSSquishinessController @Inject constructor(
* Change the height of all tiles and repositions their siblings.
*/
private fun updateSquishiness() {
// Update tile positions in the layout
(qsPanelController.tileLayout as QSPanel.QSTileLayout).setSquishinessFraction(squishiness)
val tileLayout = quickQSPanelController.tileLayout as TileLayout
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
val tileHeightOffset = tileLayout.height - tileLayout.tilesHeight
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.qs.QSPanel.QSTileLayout;
import com.android.systemui.qs.QSPanelControllerBase.TileRecord;
import com.android.systemui.qs.tileimpl.HeightOverrideable;
import java.util.ArrayList;
@@ -285,5 +286,11 @@ public class TileLayout extends ViewGroup implements QSTileLayout {
}
mSquishinessFraction = squishinessFraction;
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() {
if (mQs == null) return;
float qsExpansionFraction = computeQsExpansionFraction();
float squishiness = mNotificationStackScrollLayoutController
.getNotificationSquishinessFraction();
mQs.setQsExpansion(qsExpansionFraction, getExpandedFraction(), getHeaderTranslation(),
mNotificationStackScrollLayoutController.getNotificationSquishinessFraction());
mQsExpandImmediate || mQsExpanded ? 1f : squishiness);
mSplitShadeHeaderController.setQsExpandedFraction(qsExpansionFraction);
mMediaHierarchyManager.setQsExpansion(qsExpansionFraction);
int qsPanelBottomY = calculateQsBottomPosition(qsExpansionFraction);

View File

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