1

我在玩Xamarin Mobile api MediaPicker,它使用Mediaodcorder和monodroid製作一個插件來錄製視頻。MvvmCross vnext:monodroid在插件中使用VideoView

Android必須在VideoView中預覽視頻。這個限制也適用於wp7和ios的隱私。因此,我需要從我的自定義視圖中獲取VideoView(或wp7中的矩形),並將setPreviewDisplay添加到我的插件(或帶有此VideoView的init MediaPicker)中的此VideoView。

什麼是最好的方式來實現我需要UI元素的便攜式插件?

在此先感謝您的幫助。

回答

1

什麼是最好的方式來實現我需要UI元素的便攜式插件?

我想我的第一個問題是「你需要一個便攜式插件嗎?」

您在ViewModel層或更低層實際需要的界面是什麼?

我的猜測是,跨平臺的接口視圖模型會看到可能只包含:

  • 一些控制命令(如啓動/停止的東西)
  • 一些概要信息 - 例如,視頻長度
  • 文件訪問層 - 這可能只是一個文件路徑?

如果是這樣,那麼我可能會在UI中的Controls/Views/UIViews中實現大部分邏輯,然後將相關命令和值綁定到這些ViewModel屬性。

所以我不會親自實施這個插件!


我以前做過幾個使用視頻視圖的應用程序 - 一個用於視頻捕獲(僅限Android),一個用於條碼掃描。

我發現基本可用的樣本工作得很好。但是,一旦我開始嘗試擴展它們,那麼它們很快就會變得脆弱,它們很難得到工作,並且開發起來相當令人沮喪!

我會真誠地推薦您將當前的開發視爲UI視圖代碼。在你開始工作之後,你可能會發現一種很好的方式來將控件和界面分成一個插件 - 但我懷疑這不會是你花費大部分時間的地方。


例如,對於我的下一個QR碼應用程序,我打算在https://github.com/Redth/ZxingSharp.Mobile中使用單獨的UI控件 - 在ViewModel級別,我希望只公開一些作用於解碼的QR字符串的Command。

+0

我的第一個意見是通過使用Object屬性從我的UI獲取VideoView。所以,我可以在我的插件庫中投射VideoView,例如monodroid,或根據wp7或ios投射到任何UI元素。我會研究你的答案。 – Alphapage

+0

祝你好運!我認爲這有點像Pull-To-Refresh示例 - 每個UI層的功能如何實現拉到刷新 - 因此沒有「便攜式插件」。 如果你確實想使用Object參數,那麼我想我會去找一些IVideoContainer包裝 - 所以插件至少可以查詢IDroidVideoContainer或類似的東西。 – Stuart

+0

最後,我照常按照你的指示!我創建自定義控件並綁定到ViewModel屬性。再次感謝。 – Alphapage