Merge "Fix 2 finger pull down animation" into sc-v2-dev am: 3b7e950c47
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16194773 Change-Id: Ib9fee859a52928b36eed4043511665494e45e3ca
This commit is contained in:
@@ -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() {
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user