作者hoyunxian (WildDagger)
看板WindowsPhone
標題[開發] 關於Universal App開發二三事(補充)
時間Wed Oct 22 10:17:45 2014
原文已經是好一段時間的文章了
總之這邊一樣是有關於Universal App的開發
1. Windows 8.1其實也有專門的條件變數可以判斷
之前的文章有說,可以透過「WINDOWS_PHONE_APP」的條件編譯變數
去判斷現在在處理的APP其目標平台是不是Windows Phone 8.1
雖然可以用#if WINDOWS_PHONE_APP......#else......#endif
來判斷是Windows 8.1還是Windows Phone 8.1
不過依照微軟的趨勢,未來XBOX One也會加入Universal App的行列
到時候要怎麼區分XBOX One與Windows 8.1呢?
昨天在翻一篇地圖教學的時候,
看到作者有提到Windows 8.1也是有專門條件變數來判斷的
那個變數就是「WINDOWS_APP」
所以在這個情況下,判斷是否為Windows Phone 8.1/Windows 8.1的編譯條件
可以改寫為#if WINDOWS_APP......#elif WINDOWS_PHONE_APP......#endif
(注意第二個前面是寫成#elif,不是#elseif,也不是Ruby型的#elsif)
照這看來我猜XBOX One的APP編譯判斷條件應該會是「XBOX_APP」吧?
2. 其實不一定要把手機與平板做成一樣的畫面
前面有提過,Shared專案主要是放兩個平台共用的部分
所以針對手機與平板不一樣的部分,其實也不用說全部都要弄成一樣就是。
比方說手機可以是單純的塞資料,
平板跟電腦的版本則是可以管理資料之類的
(再怎麼說用平板跟電腦管理資料總比用手機方便吧(笑))
如果用以前的方式就變成要處理兩個APP,
但是Universal App的狀況下資料的部分可以合併處理,
這樣兩邊的Model就是一樣的了
(交換資料可以活用漫遊資料或者是伺服器來處理)
3. 手機上並不適用頁面裡面塞個共用Frame來共用應用程式列
前面寫過一篇文講說可以用在主畫面塞個Frame,
再讓這個Frame去讀取其他頁面以共用上方應用程式列的方法
不過這個方法前陣子測試的時候發現不適用於手機
因為手機是用Back按鈕,所以按下去的時候會變成呼叫Frame頁面的回上一頁事件
於是不管在哪個頁面按上一頁,都會跑回開始畫面
而更麻煩的是因為從suspending返回後,他還是會在剛才的那一頁
所以等於是走進死胡同不能用了(除非關掉重開,但想也知道沒人這麼有閒)
目前大致就這樣,如果還有甚麼的話會再補充的。
--
→ KTA0619:藍澤光只不過是個 02/01 01:46
推 Rainlilt: 光 02/01 01:46
→ cywangtw1990:樓上決鬥 02/01 01:46
→ cywangtw1990:說錯了 KTA決鬥啦 02/01 01:47
→ Rainlilt:好啊 來決鬥 我在桌上覆蓋一張水桶卡 結束這回合 02/01 01:47
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.250.109.177
※ 文章網址: http://www.ptt.cc/bbs/WindowsPhone/M.1413944269.A.9C3.html
推 ms6163: xbox目前應該沒有在uap的考慮內 所以沒有那個macro才對 10/22 11:29
推 Integra: page cachesize設定後 也不能返回上頁嗎? 10/22 12:53
因為他呼叫的不是Frame的上一頁而是呼叫包含Frame的那個頁面的上一頁事件
簡單說就是有一個Page叫MainPage,MainPage放了一個Frame,
並且在Frame裡面放置主要內容頁面
在Windows 8.1裡面,因為上一頁的指令是從Frame裡面的內容頁面呼叫
所以會呼叫Frame本身的上一頁事件
但是在Windows Phone 8.1裡面,上一頁是用硬體呼叫的
所以他不會去執行Frame的上一頁事件,
而是會呼叫MainPage(正確來說是包著MainPage的最上層Frame)的上一頁事件。
※ 編輯: hoyunxian (111.250.109.177), 10/22/2014 14:41:04
推 Integra: 原來如此 10/22 19:32