Merge "Add dialog launch animations" into sc-v2-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
9fbcffdff6
@@ -16,15 +16,17 @@
|
|||||||
~ limitations under the License.
|
~ limitations under the License.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<FrameLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:sysui="http://schemas.android.com/apk/res-auto"
|
xmlns:sysui="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:padding="24dp"
|
android:padding="24dp"
|
||||||
android:layout_marginStart="16dp"
|
android:layout_marginStart="16dp"
|
||||||
android:layout_marginEnd="16dp"
|
android:layout_marginEnd="16dp"
|
||||||
android:background="@drawable/qs_dialog_bg"
|
|
||||||
>
|
>
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/title"
|
android:id="@+id/title"
|
||||||
@@ -86,4 +88,6 @@
|
|||||||
sysui:layout_constraintEnd_toEndOf="parent"
|
sysui:layout_constraintEnd_toEndOf="parent"
|
||||||
style="@style/Widget.QSDialog.Button"
|
style="@style/Widget.QSDialog.Button"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
</FrameLayout>
|
||||||
@@ -16,7 +16,9 @@
|
|||||||
|
|
||||||
<resources xmlns:android="http://schemas.android.com/apk/res/android">
|
<resources xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
<style name="Theme.SystemUI.Dialog" parent="@android:style/Theme.DeviceDefault.Dialog" />
|
<style name="Theme.SystemUI.Dialog" parent="@android:style/Theme.DeviceDefault.Dialog">
|
||||||
|
<item name="android:buttonCornerRadius">28dp</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="Theme.SystemUI.Dialog.Alert" parent="@*android:style/Theme.DeviceDefault.Dialog.Alert" />
|
<style name="Theme.SystemUI.Dialog.Alert" parent="@*android:style/Theme.DeviceDefault.Dialog.Alert" />
|
||||||
|
|
||||||
|
|||||||
@@ -417,7 +417,9 @@
|
|||||||
<item name="android:windowIsFloating">true</item>
|
<item name="android:windowIsFloating">true</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="Theme.SystemUI.Dialog" parent="@android:style/Theme.DeviceDefault.Light.Dialog" />
|
<style name="Theme.SystemUI.Dialog" parent="@android:style/Theme.DeviceDefault.Light.Dialog">
|
||||||
|
<item name="android:buttonCornerRadius">28dp</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="Theme.SystemUI.Dialog.Alert" parent="@*android:style/Theme.DeviceDefault.Light.Dialog.Alert" />
|
<style name="Theme.SystemUI.Dialog.Alert" parent="@*android:style/Theme.DeviceDefault.Light.Dialog.Alert" />
|
||||||
|
|
||||||
@@ -933,26 +935,14 @@
|
|||||||
<item name="actionDividerHeight">32dp</item>
|
<item name="actionDividerHeight">32dp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="Theme.SystemUI.Dialog.QSDialog">
|
<style name="TextAppearance.QSDialog.Title" parent="Theme.SystemUI.Dialog">
|
||||||
<item name="android:windowIsTranslucent">true</item>
|
|
||||||
<item name="android:windowBackground">@android:color/transparent</item>
|
|
||||||
<item name="android:windowIsFloating">true</item>
|
|
||||||
<item name="android:backgroundDimEnabled">true</item>
|
|
||||||
<item name="android:windowCloseOnTouchOutside">true</item>
|
|
||||||
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
|
|
||||||
<item name="android:dialogCornerRadius">28dp</item>
|
|
||||||
<item name="android:buttonCornerRadius">28dp</item>
|
|
||||||
<item name="android:colorBackground">@color/prv_color_surface</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="TextAppearance.QSDialog.Title" parent="Theme.SystemUI.Dialog.QSDialog">
|
|
||||||
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
||||||
<item name="android:textSize">24sp</item>
|
<item name="android:textSize">24sp</item>
|
||||||
<item name="android:fontFamily">@*android:string/config_headlineFontFamily</item>
|
<item name="android:fontFamily">@*android:string/config_headlineFontFamily</item>
|
||||||
<item name="android:lineHeight">32sp</item>
|
<item name="android:lineHeight">32sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="Widget.QSDialog.Button" parent = "Theme.SystemUI.Dialog.QSDialog">
|
<style name="Widget.QSDialog.Button" parent = "Theme.SystemUI.Dialog">
|
||||||
<item name="android:background">@drawable/qs_dialog_btn_filled</item>
|
<item name="android:background">@drawable/qs_dialog_btn_filled</item>
|
||||||
<item name="android:textColor">@color/prv_text_color_on_accent</item>
|
<item name="android:textColor">@color/prv_text_color_on_accent</item>
|
||||||
<item name="android:textSize">14sp</item>
|
<item name="android:textSize">14sp</item>
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ import com.android.systemui.R
|
|||||||
*/
|
*/
|
||||||
class UserDialog(
|
class UserDialog(
|
||||||
context: Context
|
context: Context
|
||||||
) : SystemUIDialog(context, R.style.Theme_SystemUI_Dialog_QSDialog) {
|
) : SystemUIDialog(context) {
|
||||||
|
|
||||||
// create() is no-op after creation
|
// create() is no-op after creation
|
||||||
private lateinit var _doneButton: View
|
private lateinit var _doneButton: View
|
||||||
@@ -72,7 +72,7 @@ class UserDialog(
|
|||||||
attributes.fitInsetsTypes = attributes.fitInsetsTypes or WindowInsets.Type.statusBars()
|
attributes.fitInsetsTypes = attributes.fitInsetsTypes or WindowInsets.Type.statusBars()
|
||||||
attributes.receiveInsetsIgnoringZOrder = true
|
attributes.receiveInsetsIgnoringZOrder = true
|
||||||
setLayout(
|
setLayout(
|
||||||
context.resources.getDimensionPixelSize(R.dimen.qs_panel_width),
|
context.resources.getDimensionPixelSize(R.dimen.notification_panel_width),
|
||||||
ViewGroup.LayoutParams.WRAP_CONTENT
|
ViewGroup.LayoutParams.WRAP_CONTENT
|
||||||
)
|
)
|
||||||
setGravity(Gravity.CENTER)
|
setGravity(Gravity.CENTER)
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import android.content.Intent
|
|||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.annotation.VisibleForTesting
|
import androidx.annotation.VisibleForTesting
|
||||||
|
import com.android.systemui.animation.DialogLaunchAnimator
|
||||||
import com.android.systemui.dagger.SysUISingleton
|
import com.android.systemui.dagger.SysUISingleton
|
||||||
import com.android.systemui.plugins.ActivityStarter
|
import com.android.systemui.plugins.ActivityStarter
|
||||||
import com.android.systemui.plugins.FalsingManager
|
import com.android.systemui.plugins.FalsingManager
|
||||||
@@ -36,6 +37,7 @@ class UserSwitchDialogController @VisibleForTesting constructor(
|
|||||||
private val userDetailViewAdapterProvider: Provider<UserDetailView.Adapter>,
|
private val userDetailViewAdapterProvider: Provider<UserDetailView.Adapter>,
|
||||||
private val activityStarter: ActivityStarter,
|
private val activityStarter: ActivityStarter,
|
||||||
private val falsingManager: FalsingManager,
|
private val falsingManager: FalsingManager,
|
||||||
|
private val dialogLaunchAnimator: DialogLaunchAnimator,
|
||||||
private val dialogFactory: (Context) -> UserDialog
|
private val dialogFactory: (Context) -> UserDialog
|
||||||
) {
|
) {
|
||||||
|
|
||||||
@@ -43,11 +45,13 @@ class UserSwitchDialogController @VisibleForTesting constructor(
|
|||||||
constructor(
|
constructor(
|
||||||
userDetailViewAdapterProvider: Provider<UserDetailView.Adapter>,
|
userDetailViewAdapterProvider: Provider<UserDetailView.Adapter>,
|
||||||
activityStarter: ActivityStarter,
|
activityStarter: ActivityStarter,
|
||||||
falsingManager: FalsingManager
|
falsingManager: FalsingManager,
|
||||||
|
dialogLaunchAnimator: DialogLaunchAnimator
|
||||||
) : this(
|
) : this(
|
||||||
userDetailViewAdapterProvider,
|
userDetailViewAdapterProvider,
|
||||||
activityStarter,
|
activityStarter,
|
||||||
falsingManager,
|
falsingManager,
|
||||||
|
dialogLaunchAnimator,
|
||||||
{ UserDialog(it) }
|
{ UserDialog(it) }
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -69,7 +73,11 @@ class UserSwitchDialogController @VisibleForTesting constructor(
|
|||||||
|
|
||||||
settingsButton.setOnClickListener {
|
settingsButton.setOnClickListener {
|
||||||
if (!falsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
|
if (!falsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
|
||||||
activityStarter.postStartActivityDismissingKeyguard(USER_SETTINGS_INTENT, 0)
|
dialogLaunchAnimator.disableAllCurrentDialogsExitAnimations()
|
||||||
|
activityStarter.postStartActivityDismissingKeyguard(
|
||||||
|
USER_SETTINGS_INTENT,
|
||||||
|
0
|
||||||
|
)
|
||||||
}
|
}
|
||||||
dismiss()
|
dismiss()
|
||||||
}
|
}
|
||||||
@@ -81,7 +89,7 @@ class UserSwitchDialogController @VisibleForTesting constructor(
|
|||||||
}
|
}
|
||||||
adapter.linkToViewGroup(grid)
|
adapter.linkToViewGroup(grid)
|
||||||
|
|
||||||
show()
|
dialogLaunchAnimator.showFromView(this, view)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -22,6 +22,7 @@ import android.testing.AndroidTestingRunner
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.test.filters.SmallTest
|
import androidx.test.filters.SmallTest
|
||||||
import com.android.systemui.SysuiTestCase
|
import com.android.systemui.SysuiTestCase
|
||||||
|
import com.android.systemui.animation.DialogLaunchAnimator
|
||||||
import com.android.systemui.plugins.ActivityStarter
|
import com.android.systemui.plugins.ActivityStarter
|
||||||
import com.android.systemui.plugins.FalsingManager
|
import com.android.systemui.plugins.FalsingManager
|
||||||
import com.android.systemui.qs.PseudoGridView
|
import com.android.systemui.qs.PseudoGridView
|
||||||
@@ -68,6 +69,8 @@ class UserSwitchDialogControllerTest : SysuiTestCase() {
|
|||||||
private lateinit var launchView: View
|
private lateinit var launchView: View
|
||||||
@Mock
|
@Mock
|
||||||
private lateinit var gridView: PseudoGridView
|
private lateinit var gridView: PseudoGridView
|
||||||
|
@Mock
|
||||||
|
private lateinit var dialogLaunchAnimator: DialogLaunchAnimator
|
||||||
@Captor
|
@Captor
|
||||||
private lateinit var clickCaptor: ArgumentCaptor<View.OnClickListener>
|
private lateinit var clickCaptor: ArgumentCaptor<View.OnClickListener>
|
||||||
|
|
||||||
@@ -87,6 +90,7 @@ class UserSwitchDialogControllerTest : SysuiTestCase() {
|
|||||||
{ userDetailViewAdapter },
|
{ userDetailViewAdapter },
|
||||||
activityStarter,
|
activityStarter,
|
||||||
falsingManager,
|
falsingManager,
|
||||||
|
dialogLaunchAnimator,
|
||||||
{ dialog }
|
{ dialog }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -94,7 +98,7 @@ class UserSwitchDialogControllerTest : SysuiTestCase() {
|
|||||||
@Test
|
@Test
|
||||||
fun showDialog_callsDialogShow() {
|
fun showDialog_callsDialogShow() {
|
||||||
controller.showDialog(launchView)
|
controller.showDialog(launchView)
|
||||||
verify(dialog).show()
|
verify(dialogLaunchAnimator).showFromView(dialog, launchView)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user