如何使用MvvmCross Droid VideoView创建自定义控件

时间:2014-01-05 21:11:55

标签: android xamarin.android android-videoview mvvmcross

我有一个用于搜索效果很好的视频的视图模型。我添加了一个播放按钮,点击后我想加载一个呈现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并开始播放?

我确信这很容易,但我找不到一个有效的例子。

提前致谢

1 个答案:

答案 0 :(得分:2)

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

然后创建一个名为VideoUri的属性,当它设置时,调用基础对象上的SetVideoUri和start方法。 E.g。

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

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会知道你什么时候播放了视频