2017-08-12 114 views
0

我有,我已經寫了三個應用程序(+變化)的客戶端本身的iOS,安卓和Windows 10,現在我正在考慮以某種方式鞏固應用,以減少努力維護和更新應用程序。我考慮過很多不同的方法,現在我正在考慮使用XML的方法。我希望從嘗試類似方法的人以及他們的經歷中得到一些反饋。建議多平臺應用程序

首先,我已經排除了C++,因爲我做整合的應用程序不包含噸邏輯。它會創建太多開銷代碼以使其有用。他們主要是展示從網絡服務下載內容的應用程序。其次,我也排除了大部分跨平臺工具(PhoneGap和類似工具),因爲我的客戶希望使用最新的本地功能以本地語言編寫應用程序(這使得他們可以檢查更多當蘋果,或谷歌過來給我的客戶,讓他們更多的特色機會)。我知道像Xamarin一樣存在經過充分測試的跨平臺解決方案。但我擔心必須解決這些平臺的缺點。例如,客戶端設計團隊有一些像素納粹,所以我需要對佈局有絕對的控制權。我不想打這個系統。

所以我的想法已經寫UI(這是大多數應用程序的肉)的XML。下面是一些示例

<define-component name="button"> <visualstate condition="aspect-ratio less-than 1.5 and width less-than 500pt"> <stack orientation="horizontal"> <image source="$source" accessibility-index="1"/> <label text="$title" accessibility-index="2"/> <visualstate/> <visualstate condition="aspect-ratio greater-than-equal 1.5"> ... <visualstate/> ... </define-component>

<screen id="main-menu"> <visualstate condition="@portrait"/> <component name="button" source="button.png" title="Example Button"/> </screen>

它讓我遞歸定義輕鬆處理不同的縱橫比的視覺狀態。它也允許我遞歸地定義組件。例如,我可以使用參數定義XML中的按鈕組件。然後,我可以定義一個使用該按鈕組件的特定導航按鈕組件。這使我可以保留定義屏幕的主要XML非常簡短。客戶需要的另一件事是易於處理可訪問性(和排序),這對於內置到XML中是很方便的。

我也想過增加一個獨立的XML文檔,其中可能包括基本功能,因此,即使是代碼可以在XML中指定(該應用程序是很容易的)。

所以我的問題是,看起來像一個完全徒勞無功,或者已經人以同樣的方式接近了多平臺的問題?

同樣,我的目標是減少工作,而不是更多。我意識到引入一個XML規範會引入很多工作。無論是指定一個合適的驗證模式,還是簡單地使用該語言編寫UI。我只是試圖在使用像我上面描述的自定義系統的應用程序中推廣代碼/ UI的成本與本機維護許多不同代碼庫的成本之間找到一個很好的平衡點。

回答

3

所以,它聽起來就像你可能已經駁回了Xamarin形式的選擇,但我會強烈建議您使用它,因爲它聽起來完全像你描述。 對於Xamarin和任何跨平臺解決方案總是有點恥辱,但它已經成爲跨平臺開發的優秀產品。 Xaml是一個非常強大的XML UI +數據綁定語言,易於使用。 您還可以使用本機渲染器和「效果」,它們允許您從本機平臺級別創建/修改視圖,這意味着您可以使用完整的本機框架使其「像素完美」,如果對於某些因爲便攜式視圖並沒有完全削減它。 我在所有3個主要的本地平臺上花費了大量時間,即使在我工作的非常重要的UI應用程序上,我也非常滿意Xamarin Forms。無論如何,它現在都是免費的,只要一試。

+0

我喜歡你的帖子,我一直在想更多。但是如果我想要做一些奇特的效果,就像在屏幕之間進行轉換一樣。我覺得如果我編寫自己的UI引擎,我完全可以控制。無論嵌套的XML元素,都可以放在一個單獨的UIView中,這樣我就可以完成整個轉換(我的客戶最有可能感興趣的部分),如放大按鈕或將按鈕變形爲下一個屏幕的標題等。另外,我希望這個系統還能工作幾年。如果我控制引擎,這不成問題,但對於Xamarin來說,需求可能會改變,從而產生額外的工作。 –

+0

我也喜歡直接在XML中添加定義自定義組件和可視化狀態。在Xamarin中是如此容易做到的(沒有引入額外的本地代碼)? –

+1

當然,這是xaml的主要吸引力 - 靈活性。當然,您必須閱讀文檔和教程才能真正獲得完整範圍,但以下是幾個快速示例的參考: 自定義佈局/控件:https://developer.xamarin.com/guides/ xamarin-forms/user-interface/layouts/custom/ 基本觸發器(類似於視覺狀態):https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/triggers/ – Ackerbar