【问题标题】:How to create a custom control with MvvmCross Droid VideoView如何使用 MvvmCross Droid VideoView 创建自定义控件
【发布时间】:2014-01-06 19:44:15
【问题描述】:

我有一个用于搜索视频的视图模型,效果很好。我添加了一个播放按钮,单击后我想加载一个呈现 VideoView 的视图。搜索视图模型包含足够的数据来生成视频的 URL。

渲染 VideoView 的最佳方式是什么?

我找到了这个示例,但它似乎是 MvvmCross 的旧版本: https://gist.github.com/Alphapage/3945799

我应该创建像 N=18 - Android 自定义控件 - N+1 天的 MvvmCross 这样的自定义控件吗? http://www.youtube.com/watch?v=s1LhXdCTsn4&feature=youtube_gdata

如果我创建一个自定义控件,我应该如何将视频的 URL 传递给 VideoView 并开始播放?

我确信这很容易做到,但我找不到一个可行的例子。

提前致谢

【问题讨论】:

    标签: android xamarin.android android-videoview mvvmcross


    【解决方案1】:

    您可以像 Stuart 那样创建自定义视图,但不是从 View 继承,而是从 VideoView 继承。

    然后创建一个名为 VideoUri 的属性,并在设置时调用基础对象上的 SetVideoUri 和 start 方法。例如

    请注意以下代码是用记事本编写的,因此可能需要一些调整:)

    public class BindableVideoView : VideoView
    {
        private Uri _videoUri = default(Uri);
        public Uri VideoUri
        {
    
            get{ return _videoUri;}
            set{
    
               if(_videoUri!=value)
               {
                   if(base.IsPlaying)
                   {
                        base.StopPlayback();
                   }
               }
               base.SetVideoURI(value);
               base.Start();
            }
        }     
    }
    

    你可以做一些事情,比如为 IsPlaying 公开一个属性,然后你的 viewmodel 可以双向绑定到它,这样你的 viewmodel 就会知道你什么时候播放完视频

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多