【发布时间】:2014-03-26 19:04:55
【问题描述】:
如何更改 MediaRouteButton 行为以显示加载动画,直到 Chromecast 应用启动(如 HBO 或 Netflix),而不是仅在连接到 Chromecast 时显示?
【问题讨论】:
标签: android chromecast
如何更改 MediaRouteButton 行为以显示加载动画,直到 Chromecast 应用启动(如 HBO 或 Netflix),而不是仅在连接到 Chromecast 时显示?
【问题讨论】:
标签: android chromecast
我们使用 Cast Companion 库(感谢 Ali 和团队)并且在连接过程中肯定没有获得连接动画。选择一个投射设备和获得 onApplicationConnected 回调之间大约有 3 秒的时间,因此应该有足够的时间来观看动画。我们使用 'mr_ic_media_route_mono_dark' 可绘制对象,其中包含检查状态的动画,因此为什么动画在连接阶段无法播放是个谜。目前我没有在其中一个库中声明错误,但不确定为什么它不能按预期工作。
我能够让动画开始播放的唯一方法是直接在 MediaRouterButton 上设置 AnimationDrawable 并手动启动它,然后在连接后更改 drawable。
基本上当onDeviceSelected回调发生时:
AnimationDrawable connecting = (AnimationDrawable) getResources().getDrawable(R.drawable.mr_ic_media_route_connecting_mono_dark);
mMediaRouteButton.setRemoteIndicatorDrawable(connecting);
connecting.start();
【讨论】:
您可以创建自己的CustomMediaRouteActionProvider extends MediaRouteActionProvider 并覆盖
onCreateMediaRouteButton()
方法,因此您还需要创建自定义CustomMediaRouteButton。在这个自定义按钮中,您可以轻松地在状态之间切换。当收到回调onApplicationConnected()时,将按钮状态切换为已连接,同时显示此状态(动画):
private static final int[] CHECKABLE_STATE_SET = {android.R.attr.state_checkable};
请下载 MediaRouter 源代码,以便您可以围绕代码 MediaRouterLibrarySource 进行定位
【讨论】:
据我在 Netflix 上看到的(我没有 HBO),我在那里看不到任何动画演员图标。在连接发生(或尝试)时,投射图标可以动画,通常它发生得很快,所以你看不到。如果您对这方面有任何疑问,请告诉我,我会提供更多信息,否则在连接之外,投射图标不会(也不应该)动画。
【讨论】: