Merge "Change the long-press behavior on custom shortcuts to utilize an actual long-press" into udc-dev am: d6cc0131fd
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23418597 Change-Id: I097086af4476e09f360714ea475dbedddb05e744 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -406,19 +406,21 @@ object KeyguardBottomAreaViewBinder {
|
||||
view.isClickable = viewModel.isClickable
|
||||
if (viewModel.isClickable) {
|
||||
if (viewModel.useLongPress) {
|
||||
view.setOnTouchListener(
|
||||
KeyguardQuickAffordanceOnTouchListener(
|
||||
view,
|
||||
viewModel,
|
||||
messageDisplayer,
|
||||
vibratorHelper,
|
||||
falsingManager,
|
||||
)
|
||||
val onTouchListener = KeyguardQuickAffordanceOnTouchListener(
|
||||
view,
|
||||
viewModel,
|
||||
messageDisplayer,
|
||||
vibratorHelper,
|
||||
falsingManager,
|
||||
)
|
||||
view.setOnTouchListener(onTouchListener)
|
||||
view.onLongClickListener =
|
||||
OnLongClickListener(falsingManager, viewModel, vibratorHelper, onTouchListener)
|
||||
} else {
|
||||
view.setOnClickListener(OnClickListener(viewModel, checkNotNull(falsingManager)))
|
||||
}
|
||||
} else {
|
||||
view.onLongClickListener = null
|
||||
view.setOnClickListener(null)
|
||||
view.setOnTouchListener(null)
|
||||
}
|
||||
@@ -454,6 +456,42 @@ object KeyguardBottomAreaViewBinder {
|
||||
.start()
|
||||
}
|
||||
|
||||
private class OnLongClickListener(
|
||||
private val falsingManager: FalsingManager?,
|
||||
private val viewModel: KeyguardQuickAffordanceViewModel,
|
||||
private val vibratorHelper: VibratorHelper?,
|
||||
private val onTouchListener: KeyguardQuickAffordanceOnTouchListener
|
||||
) : View.OnLongClickListener {
|
||||
override fun onLongClick(view: View): Boolean {
|
||||
if (falsingManager?.isFalseLongTap(FalsingManager.MODERATE_PENALTY) == true) {
|
||||
return true
|
||||
}
|
||||
|
||||
if (viewModel.configKey != null) {
|
||||
viewModel.onClicked(
|
||||
KeyguardQuickAffordanceViewModel.OnClickedParameters(
|
||||
configKey = viewModel.configKey,
|
||||
expandable = Expandable.fromView(view),
|
||||
slotId = viewModel.slotId,
|
||||
)
|
||||
)
|
||||
vibratorHelper?.vibrate(
|
||||
if (viewModel.isActivated) {
|
||||
KeyguardBottomAreaVibrations.Activated
|
||||
} else {
|
||||
KeyguardBottomAreaVibrations.Deactivated
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
onTouchListener.cancel()
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onLongClickUseDefaultHapticFeedback(view: View?) = false
|
||||
|
||||
}
|
||||
|
||||
private class OnClickListener(
|
||||
private val viewModel: KeyguardQuickAffordanceViewModel,
|
||||
private val falsingManager: FalsingManager,
|
||||
|
||||
@@ -46,7 +46,7 @@ class KeyguardQuickAffordanceOnTouchListener(
|
||||
@SuppressLint("ClickableViewAccessibility")
|
||||
override fun onTouch(v: View, event: MotionEvent): Boolean {
|
||||
return when (event.actionMasked) {
|
||||
MotionEvent.ACTION_DOWN ->
|
||||
MotionEvent.ACTION_DOWN -> {
|
||||
if (viewModel.configKey != null) {
|
||||
downDisplayCoords.set(event.rawX, event.rawY)
|
||||
if (isUsingAccurateTool(event)) {
|
||||
@@ -62,21 +62,10 @@ class KeyguardQuickAffordanceOnTouchListener(
|
||||
.scaleX(PRESSED_SCALE)
|
||||
.scaleY(PRESSED_SCALE)
|
||||
.setDuration(longPressDurationMs)
|
||||
.withEndAction {
|
||||
if (
|
||||
falsingManager?.isFalseLongTap(
|
||||
FalsingManager.MODERATE_PENALTY
|
||||
) == false
|
||||
) {
|
||||
dispatchClick(viewModel.configKey)
|
||||
}
|
||||
cancel()
|
||||
}
|
||||
}
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
false
|
||||
}
|
||||
MotionEvent.ACTION_MOVE -> {
|
||||
if (!isUsingAccurateTool(event)) {
|
||||
// Moving too far while performing a long-press gesture cancels that
|
||||
@@ -91,7 +80,7 @@ class KeyguardQuickAffordanceOnTouchListener(
|
||||
cancel()
|
||||
}
|
||||
}
|
||||
true
|
||||
false
|
||||
}
|
||||
MotionEvent.ACTION_UP -> {
|
||||
if (isUsingAccurateTool(event)) {
|
||||
@@ -146,7 +135,7 @@ class KeyguardQuickAffordanceOnTouchListener(
|
||||
}
|
||||
)
|
||||
}
|
||||
true
|
||||
false
|
||||
}
|
||||
MotionEvent.ACTION_CANCEL -> {
|
||||
cancel()
|
||||
@@ -179,7 +168,7 @@ class KeyguardQuickAffordanceOnTouchListener(
|
||||
view.setOnClickListener(null)
|
||||
}
|
||||
|
||||
private fun cancel(onAnimationEnd: Runnable? = null) {
|
||||
fun cancel(onAnimationEnd: Runnable? = null) {
|
||||
longPressAnimator?.cancel()
|
||||
longPressAnimator = null
|
||||
view.animate().scaleX(1f).scaleY(1f).withEndAction(onAnimationEnd)
|
||||
|
||||
Reference in New Issue
Block a user