Android 连接应用程序时设置MediaRouteButton动画

Android 连接应用程序时设置MediaRouteButton动画,android,chromecast,Android,Chromecast,如何更改MediaRouteButton的行为以显示加载动画,直到Chromecast应用程序启动,就像HBO或Netflix那样,而不是仅当它连接到Chromecast时才显示?据我在Netflix上看到的(我没有HBO),我在那里没有看到任何动画演员图标。当连接发生(或尝试连接)时,可以设置演员图标的动画,通常它发生得很快,所以您看不到。如果您在这方面有疑问,请告诉我,我会提供更多信息,否则在连接之外,演员图标不会(也不应该)动画。您可以创建自己的CustomMediaRouteAction

如何更改MediaRouteButton的
行为以显示加载动画,直到Chromecast应用程序启动,就像HBO或Netflix那样,而不是仅当它连接到Chromecast时才显示?

据我在Netflix上看到的(我没有HBO),我在那里没有看到任何动画演员图标。当连接发生(或尝试连接)时,可以设置演员图标的动画,通常它发生得很快,所以您看不到。如果您在这方面有疑问,请告诉我,我会提供更多信息,否则在连接之外,演员图标不会(也不应该)动画。

您可以创建自己的
CustomMediaRouteActionProvider Extendes MediaRouteActionProvider
并覆盖
onCreateMediaRouteButton()
方法,因此您还需要创建自定义
CustomMediaRouteButton
。在这个自定义按钮中,您可以轻松地在状态之间切换。当您在ApplicationConnected()上收到回调时,请将按钮状态切换为已连接,同时显示此状态(动画):


请下载MediaRouter源代码,这样您就可以了解代码的方向了

我们使用了Cast Companion库(感谢Ali和团队),在连接过程中肯定没有收到连接动画。在选择播放设备和获取onApplicationConnected回调之间大约有3秒钟的时间,因此应该有足够的时间观看动画。我们使用“mr_ic_media_route_mono_dark”可绘制,其中包含选中状态的动画,因此为什么动画在连接阶段无法播放是一个谜。目前我没有声明其中一个库中存在bug,但不确定它为什么不能按预期工作

我能够让动画开始播放的唯一方法是直接在MediaRouterButton上设置AnimationDrawable并手动启动,然后在连接后更改drawable

基本上,当onDeviceSelected回调发生时:

AnimationDrawable connecting = (AnimationDrawable) getResources().getDrawable(R.drawable.mr_ic_media_route_connecting_mono_dark);
mMediaRouteButton.setRemoteIndicatorDrawable(connecting);
connecting.start();

我似乎也无法让演员图标产生动画效果。媒体路由器按钮显示,即使在chromecast上启动应用程序之前,它也已连接。我在自己的实现和cast companion库中都看到了这一点。Media Route按钮不了解您的应用程序,因此其状态仅由您与设备的连接状态控制;应用程序是否已启动超出了它的能力范围,因此动画仅在您连接时才会出现,并且只要您连接,它就会显示为已连接。从理论上讲,你可以连接到一个设备,而永远不会启动一个应用程序;在这种情况下,“演员”按钮显示“已连接”,即使您尚未启动任何应用程序。框架中存在一些已解决的问题,因此动画应该可以开箱即用。请注意,动画仅在api客户端连接时发生,并且通常发生得非常快;它不考虑应用程序是否被连接,它纯粹是用于API客户端连接,因此,当连接到设备时,它通常是不可见的,因为连接的部分发生得非常快,即使应用程序连接可能需要更长的时间。有一种情况可以清楚地显示动画,即关闭和打开wifi。
AnimationDrawable connecting = (AnimationDrawable) getResources().getDrawable(R.drawable.mr_ic_media_route_connecting_mono_dark);
mMediaRouteButton.setRemoteIndicatorDrawable(connecting);
connecting.start();