[Media TTT] Animate in the receiver chip.

Bug: 203800342
Test: manual (see video attached to bug TODO)
Change-Id: I07729e8be62fc36216e8a698393fa70c64c23a85
This commit is contained in:
Caitlin Cassidy
2022-06-21 20:28:13 +00:00
parent c652dad8f4
commit 80432d0056
3 changed files with 30 additions and 3 deletions

View File

@@ -19,14 +19,14 @@
android:id="@+id/media_ttt_receiver_chip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/media_ttt_chip_background_receiver"
>
<com.android.internal.widget.CachingIconView
android:id="@+id/app_icon"
android:layout_width="@dimen/media_ttt_icon_size_receiver"
android:layout_height="@dimen/media_ttt_icon_size_receiver"
android:layout_gravity="center"
android:layout_gravity="center|bottom"
android:alpha="0.0"
/>
</FrameLayout>

View File

@@ -1060,6 +1060,7 @@
<!-- Since the generic icon isn't circular, we need to scale it down so it still fits within
the circular chip. -->
<dimen name="media_ttt_generic_icon_size_receiver">70dp</dimen>
<dimen name="media_ttt_receiver_vert_translation">20dp</dimen>
<!-- Window magnification -->
<dimen name="magnification_border_drag_size">35dp</dimen>

View File

@@ -25,6 +25,7 @@ import android.os.Handler
import android.os.PowerManager
import android.util.Log
import android.view.Gravity
import android.view.View
import android.view.ViewGroup
import android.view.WindowManager
import android.view.accessibility.AccessibilityManager
@@ -37,6 +38,7 @@ import com.android.systemui.media.taptotransfer.common.MediaTttChipControllerCom
import com.android.systemui.media.taptotransfer.common.MediaTttLogger
import com.android.systemui.statusbar.CommandQueue
import com.android.systemui.statusbar.gesture.TapGestureDetector
import com.android.systemui.util.animation.AnimationUtil.Companion.frames
import com.android.systemui.util.concurrency.DelayableExecutor
import com.android.systemui.util.view.ViewUtil
import javax.inject.Inject
@@ -71,8 +73,8 @@ class MediaTttChipControllerReceiver @Inject constructor(
R.layout.media_ttt_chip_receiver
) {
override val windowLayoutParams = commonWindowLayoutParams.apply {
height = getWindowHeight()
gravity = Gravity.BOTTOM.or(Gravity.CENTER_HORIZONTAL)
verticalMargin = 0.1f
}
private val commandQueueCallbacks = object : CommandQueue.Callbacks {
@@ -137,6 +139,19 @@ class MediaTttChipControllerReceiver @Inject constructor(
)
}
override fun animateChipIn(chipView: ViewGroup) {
val appIconView = chipView.requireViewById<View>(R.id.app_icon)
appIconView.animate()
.translationYBy(-1 * getTranslationAmount().toFloat())
.setDuration(30.frames)
.start()
appIconView.animate()
.alpha(1f)
.setDuration(5.frames)
.start()
}
override fun getIconSize(isAppIcon: Boolean): Int? =
context.resources.getDimensionPixelSize(
if (isAppIcon) {
@@ -145,6 +160,17 @@ class MediaTttChipControllerReceiver @Inject constructor(
R.dimen.media_ttt_generic_icon_size_receiver
}
)
private fun getWindowHeight(): Int {
return context.resources.getDimensionPixelSize(R.dimen.media_ttt_icon_size_receiver) +
// Make the window large enough to accommodate the animation amount
getTranslationAmount()
}
/** Returns the amount that the chip will be translated by in its intro animation. */
private fun getTranslationAmount(): Int {
return context.resources.getDimensionPixelSize(R.dimen.media_ttt_receiver_vert_translation)
}
}
data class ChipReceiverInfo(