[Android] 疑難雜症 - Flex AIR的HTML Component在Android上無法正常顯示

一、問題描述:

Flex AIR程式如果需要內嵌Html Content功能時,通常會使用Html組件(mx.controls.HTML)來呈現,但是直接將含有此組件的AIR程式發佈至手機平台,將會產生網頁內容無法正常顯示的問題。

二、問題癥結:Mobile Device不支持 Flex HTML Component

由於Adobe MultiScreen計畫,因此它針對Html Content顯示建立了StageWebView類別,用來滿足各種類型裝置顯示Html內容的開發需求,目前除了TV之外其它裝置都有支援。StageWebView在Desktop Device上執行時會使用AIR WebKit engine,而若是移殖到Mobile Device,其功能會因於Device OS的Web Control機制不同而不同,總而言之,在Mobile平台上要正常顯示HTML內容請使用StageWebView。

三、解決方法:使用StageWebView

雖然StageWebView跟Flex HTML Component功能相似,但是實際使用起來卻有些許不同:其差異如下:

1. StageWebView不屬於DisplayObject,因此它不會被加入DisplayList,只能透過其stage屬性直接顯示在該stage上,它會被放在任何DisplayObject的上方。

2. 因為StageWebView物件不是DisplayObject,因此要改變其位置、大小時無法直接修改其x、y、width、height等屬性達成,但可以藉由其viewPort屬性來更改它的顯示位置及大小(位置是以stage上的座標為參考),但目前無法改變其顯示Depth,所以如果要重疊兩個物件時要注意。

3. StageWebView在取得focus後,當Keyboard input事件發生時,StageWebView物件有優先機會處理,Stage觸發的Keyboard input事件將不被處理,一般的事件處理流程在此不適用,因為StageWebView物件不在DisplayList裡。

留言

張貼留言

這個網誌中的熱門文章

[Android] layout_weight的妙用-讓View的大小以百分比率顯示(proportionate size)

[Android] 內部儲存體(Internal Storage)的檔案系統讀寫(File I/O)

【海外婚紗】道具行李篇