[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:
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user