【问题标题】:Animate MediaRouteButton while connecting to app连接到应用程序时为 MediaRouteButton 设置动画
【发布时间】:2014-03-26 19:04:55
【问题描述】:

如何更改 MediaRouteButton 行为以显示加载动画,直到 Chromecast 应用启动(如 HBO 或 Netflix),而不是仅在连接到 Chromecast 时显示?

【问题讨论】:

    标签: android chromecast


    【解决方案1】:

    我们使用 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();
    

    【讨论】:

    • 框架中的一些问题已得到解决,因此动画应该可以开箱即用。请注意,动画仅在 api 客户端连接时发生,而且通常发生得非常快;它不考虑应用程序是否已连接,它纯粹用于 api 客户端连接,因此,当您连接到设备时,它通常不可见,因为即使应用程序连接,该部分连接发生得非常快可能需要更长的时间。清晰显示动画的一种情况是关闭和打开wifi。
    【解决方案2】:

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

    private static final int[] CHECKABLE_STATE_SET = {android.R.attr.state_checkable};
    

    请下载 MediaRouter 源代码,以便您可以围绕代码 MediaRouterLibrarySource 进行定位

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 我似乎也无法让演员图标设置动画。媒体路由器按钮显示它甚至在应用程序在 chromecast 上启动之前就已连接。我已经在我自己的实现和演员配套库中看到了这一点。
      • 媒体路由按钮不知道您的应用程序,因此其状态仅由您与设备的连接状态控制;您的应用程序是否已启动超出其范围,因此动画仅在您连接时发生,并且一旦您连接,它就会显示已连接。从理论上讲,您可以连接到设备而从不启动应用程序;在这种情况下,即使您还没有启动任何应用程序,投射按钮也会显示已连接。
      猜你喜欢
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      • 2018-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-01
      • 2014-05-11
      相关资源
      最近更新 更多