Merge "Fix focus at ttt chip" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
cd4712486d
@@ -56,7 +56,7 @@ abstract class MediaTttChipControllerCommon<T : ChipInfoCommon>(
|
|||||||
internal val logger: MediaTttLogger,
|
internal val logger: MediaTttLogger,
|
||||||
internal val windowManager: WindowManager,
|
internal val windowManager: WindowManager,
|
||||||
private val viewUtil: ViewUtil,
|
private val viewUtil: ViewUtil,
|
||||||
@Main private val mainExecutor: DelayableExecutor,
|
@Main internal val mainExecutor: DelayableExecutor,
|
||||||
private val accessibilityManager: AccessibilityManager,
|
private val accessibilityManager: AccessibilityManager,
|
||||||
private val configurationController: ConfigurationController,
|
private val configurationController: ConfigurationController,
|
||||||
private val powerManager: PowerManager,
|
private val powerManager: PowerManager,
|
||||||
@@ -205,13 +205,15 @@ abstract class MediaTttChipControllerCommon<T : ChipInfoCommon>(
|
|||||||
*
|
*
|
||||||
* @param appPackageName the package name of the app playing the media. Will be used to fetch
|
* @param appPackageName the package name of the app playing the media. Will be used to fetch
|
||||||
* the app icon and app name if overrides aren't provided.
|
* the app icon and app name if overrides aren't provided.
|
||||||
|
*
|
||||||
|
* @return the content description of the icon.
|
||||||
*/
|
*/
|
||||||
internal fun setIcon(
|
internal fun setIcon(
|
||||||
currentChipView: ViewGroup,
|
currentChipView: ViewGroup,
|
||||||
appPackageName: String?,
|
appPackageName: String?,
|
||||||
appIconDrawableOverride: Drawable? = null,
|
appIconDrawableOverride: Drawable? = null,
|
||||||
appNameOverride: CharSequence? = null,
|
appNameOverride: CharSequence? = null,
|
||||||
) {
|
): CharSequence {
|
||||||
val appIconView = currentChipView.requireViewById<CachingIconView>(R.id.app_icon)
|
val appIconView = currentChipView.requireViewById<CachingIconView>(R.id.app_icon)
|
||||||
val iconInfo = getIconInfo(appPackageName)
|
val iconInfo = getIconInfo(appPackageName)
|
||||||
|
|
||||||
@@ -224,6 +226,7 @@ abstract class MediaTttChipControllerCommon<T : ChipInfoCommon>(
|
|||||||
|
|
||||||
appIconView.contentDescription = appNameOverride ?: iconInfo.iconName
|
appIconView.contentDescription = appNameOverride ?: iconInfo.iconName
|
||||||
appIconView.setImageDrawable(appIconDrawableOverride ?: iconInfo.icon)
|
appIconView.setImageDrawable(appIconDrawableOverride ?: iconInfo.icon)
|
||||||
|
return appIconView.contentDescription.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -122,13 +122,12 @@ class MediaTttChipControllerSender @Inject constructor(
|
|||||||
val chipState = newChipInfo.state
|
val chipState = newChipInfo.state
|
||||||
|
|
||||||
// App icon
|
// App icon
|
||||||
setIcon(currentChipView, newChipInfo.routeInfo.packageName)
|
val iconName = setIcon(currentChipView, newChipInfo.routeInfo.packageName)
|
||||||
|
|
||||||
// Text
|
// Text
|
||||||
val otherDeviceName = newChipInfo.routeInfo.name.toString()
|
val otherDeviceName = newChipInfo.routeInfo.name.toString()
|
||||||
currentChipView.requireViewById<TextView>(R.id.text).apply {
|
val chipText = chipState.getChipTextString(context, otherDeviceName)
|
||||||
text = chipState.getChipTextString(context, otherDeviceName)
|
currentChipView.requireViewById<TextView>(R.id.text).text = chipText
|
||||||
}
|
|
||||||
|
|
||||||
// Loading
|
// Loading
|
||||||
currentChipView.requireViewById<View>(R.id.loading).visibility =
|
currentChipView.requireViewById<View>(R.id.loading).visibility =
|
||||||
@@ -145,17 +144,29 @@ class MediaTttChipControllerSender @Inject constructor(
|
|||||||
// Failure
|
// Failure
|
||||||
currentChipView.requireViewById<View>(R.id.failure_icon).visibility =
|
currentChipView.requireViewById<View>(R.id.failure_icon).visibility =
|
||||||
chipState.isTransferFailure.visibleIfTrue()
|
chipState.isTransferFailure.visibleIfTrue()
|
||||||
|
|
||||||
|
// For accessibility
|
||||||
|
currentChipView.requireViewById<ViewGroup>(
|
||||||
|
R.id.media_ttt_sender_chip_inner
|
||||||
|
).contentDescription = "$iconName $chipText"
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun animateChipIn(chipView: ViewGroup) {
|
override fun animateChipIn(chipView: ViewGroup) {
|
||||||
|
val chipInnerView = chipView.requireViewById<ViewGroup>(R.id.media_ttt_sender_chip_inner)
|
||||||
ViewHierarchyAnimator.animateAddition(
|
ViewHierarchyAnimator.animateAddition(
|
||||||
chipView.requireViewById<ViewGroup>(R.id.media_ttt_sender_chip_inner),
|
chipInnerView,
|
||||||
ViewHierarchyAnimator.Hotspot.TOP,
|
ViewHierarchyAnimator.Hotspot.TOP,
|
||||||
Interpolators.EMPHASIZED_DECELERATE,
|
Interpolators.EMPHASIZED_DECELERATE,
|
||||||
duration = 500L,
|
duration = ANIMATION_DURATION,
|
||||||
includeMargins = true,
|
includeMargins = true,
|
||||||
includeFadeIn = true,
|
includeFadeIn = true,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// We can only request focus once the animation finishes.
|
||||||
|
mainExecutor.executeDelayed(
|
||||||
|
{ chipInnerView.requestAccessibilityFocus() },
|
||||||
|
ANIMATION_DURATION
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun removeChip(removalReason: String) {
|
override fun removeChip(removalReason: String) {
|
||||||
@@ -186,3 +197,4 @@ data class ChipSenderInfo(
|
|||||||
}
|
}
|
||||||
|
|
||||||
const val SENDER_TAG = "MediaTapToTransferSender"
|
const val SENDER_TAG = "MediaTapToTransferSender"
|
||||||
|
private const val ANIMATION_DURATION = 500L
|
||||||
|
|||||||
Reference in New Issue
Block a user