Merge "Change the long-press behavior on custom shortcuts to utilize an actual long-press" into udc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
d6cc0131fd
@@ -406,19 +406,21 @@ object KeyguardBottomAreaViewBinder {
|
|||||||
view.isClickable = viewModel.isClickable
|
view.isClickable = viewModel.isClickable
|
||||||
if (viewModel.isClickable) {
|
if (viewModel.isClickable) {
|
||||||
if (viewModel.useLongPress) {
|
if (viewModel.useLongPress) {
|
||||||
view.setOnTouchListener(
|
val onTouchListener = KeyguardQuickAffordanceOnTouchListener(
|
||||||
KeyguardQuickAffordanceOnTouchListener(
|
view,
|
||||||
view,
|
viewModel,
|
||||||
viewModel,
|
messageDisplayer,
|
||||||
messageDisplayer,
|
vibratorHelper,
|
||||||
vibratorHelper,
|
falsingManager,
|
||||||
falsingManager,
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
view.setOnTouchListener(onTouchListener)
|
||||||
|
view.onLongClickListener =
|
||||||
|
OnLongClickListener(falsingManager, viewModel, vibratorHelper, onTouchListener)
|
||||||
} else {
|
} else {
|
||||||
view.setOnClickListener(OnClickListener(viewModel, checkNotNull(falsingManager)))
|
view.setOnClickListener(OnClickListener(viewModel, checkNotNull(falsingManager)))
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
view.onLongClickListener = null
|
||||||
view.setOnClickListener(null)
|
view.setOnClickListener(null)
|
||||||
view.setOnTouchListener(null)
|
view.setOnTouchListener(null)
|
||||||
}
|
}
|
||||||
@@ -454,6 +456,42 @@ object KeyguardBottomAreaViewBinder {
|
|||||||
.start()
|
.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 class OnClickListener(
|
||||||
private val viewModel: KeyguardQuickAffordanceViewModel,
|
private val viewModel: KeyguardQuickAffordanceViewModel,
|
||||||
private val falsingManager: FalsingManager,
|
private val falsingManager: FalsingManager,
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ class KeyguardQuickAffordanceOnTouchListener(
|
|||||||
@SuppressLint("ClickableViewAccessibility")
|
@SuppressLint("ClickableViewAccessibility")
|
||||||
override fun onTouch(v: View, event: MotionEvent): Boolean {
|
override fun onTouch(v: View, event: MotionEvent): Boolean {
|
||||||
return when (event.actionMasked) {
|
return when (event.actionMasked) {
|
||||||
MotionEvent.ACTION_DOWN ->
|
MotionEvent.ACTION_DOWN -> {
|
||||||
if (viewModel.configKey != null) {
|
if (viewModel.configKey != null) {
|
||||||
downDisplayCoords.set(event.rawX, event.rawY)
|
downDisplayCoords.set(event.rawX, event.rawY)
|
||||||
if (isUsingAccurateTool(event)) {
|
if (isUsingAccurateTool(event)) {
|
||||||
@@ -62,21 +62,10 @@ class KeyguardQuickAffordanceOnTouchListener(
|
|||||||
.scaleX(PRESSED_SCALE)
|
.scaleX(PRESSED_SCALE)
|
||||||
.scaleY(PRESSED_SCALE)
|
.scaleY(PRESSED_SCALE)
|
||||||
.setDuration(longPressDurationMs)
|
.setDuration(longPressDurationMs)
|
||||||
.withEndAction {
|
|
||||||
if (
|
|
||||||
falsingManager?.isFalseLongTap(
|
|
||||||
FalsingManager.MODERATE_PENALTY
|
|
||||||
) == false
|
|
||||||
) {
|
|
||||||
dispatchClick(viewModel.configKey)
|
|
||||||
}
|
|
||||||
cancel()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
true
|
|
||||||
} else {
|
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
false
|
||||||
|
}
|
||||||
MotionEvent.ACTION_MOVE -> {
|
MotionEvent.ACTION_MOVE -> {
|
||||||
if (!isUsingAccurateTool(event)) {
|
if (!isUsingAccurateTool(event)) {
|
||||||
// Moving too far while performing a long-press gesture cancels that
|
// Moving too far while performing a long-press gesture cancels that
|
||||||
@@ -91,7 +80,7 @@ class KeyguardQuickAffordanceOnTouchListener(
|
|||||||
cancel()
|
cancel()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
true
|
false
|
||||||
}
|
}
|
||||||
MotionEvent.ACTION_UP -> {
|
MotionEvent.ACTION_UP -> {
|
||||||
if (isUsingAccurateTool(event)) {
|
if (isUsingAccurateTool(event)) {
|
||||||
@@ -146,7 +135,7 @@ class KeyguardQuickAffordanceOnTouchListener(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
true
|
false
|
||||||
}
|
}
|
||||||
MotionEvent.ACTION_CANCEL -> {
|
MotionEvent.ACTION_CANCEL -> {
|
||||||
cancel()
|
cancel()
|
||||||
@@ -179,7 +168,7 @@ class KeyguardQuickAffordanceOnTouchListener(
|
|||||||
view.setOnClickListener(null)
|
view.setOnClickListener(null)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun cancel(onAnimationEnd: Runnable? = null) {
|
fun cancel(onAnimationEnd: Runnable? = null) {
|
||||||
longPressAnimator?.cancel()
|
longPressAnimator?.cancel()
|
||||||
longPressAnimator = null
|
longPressAnimator = null
|
||||||
view.animate().scaleX(1f).scaleY(1f).withEndAction(onAnimationEnd)
|
view.animate().scaleX(1f).scaleY(1f).withEndAction(onAnimationEnd)
|
||||||
|
|||||||
Reference in New Issue
Block a user