Android瀏覽器的外掛程式渲染模式簡介

來源:互聯網
上載者:User

 

Android2.1的瀏覽器外掛程式有兩種渲染模式,在android_npapi.h裡的定義分別是:

        kBitmap_ANPDrawingModel = 0;

        kSurface_ANPDrawingModel = 1;

        (後面簡稱bitmap模式和surface模式)。

在執行個體初始化的時候(Plugin函數列表的newp被調用時),Plug-in需要告知瀏覽器採用何種渲染方式。

 

下面就對這兩種渲染方式作簡要介紹:

 

1.bitmap模式

 

kBitmap_ANPDrawingMode是傳統的渲染方式,這種方式下,瀏覽器的底層會通過調用Plug-in提供的NPP_HandleEvent函數觸發繪製事件,並把要渲染的bitmap的地址作為參數的一部分傳給plug-in,plug-in只需要使用在初始化時擷取到的相關的ANPInterface進行繪製即可。這種模式下,plug-in不需要考慮縮放問題,畫面的縮放會由webkit自行處理。

 

//===================================

 

2.surface模式

 

 

kSurface_ANPDrawingMode帶有Android平台的特殊性,因為這種模式是需要Java側配合的。這種模式下,Plug-in會在初始化時把自己的PluginStub的類名告知webkit,webkit會根據這個類名,並結合npp參數,在Java側擷取到對應的view,並加到自己的布局裡面。要使用這種模式,plug-in必須實現一個繼承於PluginStub的類,這個類和SurfaceView有點類似,而且需要自己實現縮放。

 

根據android_npapi.h裡的描述,Surface模式的效能要比bitmap模式好,但是我在模擬器上測試時發現surface模式在縮放時會出現閃爍。不過現在android2.2的nexus one上的flash10.1貌似就是surface模式的,但是沒有閃爍,看來google為了支援Flash,在最近幾版Android上對webkit作了不少修改。


 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.