不卡AV在线|网页在线观看无码高清|亚洲国产亚洲国产|国产伦精品一区二区三区免费视频

學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 電腦硬件知識 > 硬件知識 > Android開發(fā)中硬件加速支持的使用方法

Android開發(fā)中硬件加速支持的使用方法

時間: 捷鋒774 分享

Android開發(fā)中硬件加速支持的使用方法

  這篇文章主要介紹了Android應(yīng)用開發(fā)中硬件加速支持的使用方法,主要針對圖形繪制時的硬件加速與OpenGL調(diào)用,下面是學(xué)習(xí)啦小編帶來的關(guān)于Android開發(fā)中硬件加速支持的使用方法的內(nèi)容,歡迎閱讀!

  Android開發(fā)中硬件加速支持的使用方法:

  Android從3.0(API Level 11)開始,在繪制View的時候支持硬件加速,充分利用GPU的特性,使得繪制更加平滑,但是會多消耗一些內(nèi)存。

  開啟或關(guān)閉硬件加速:

  由于硬件加速自身并非完美無缺,所以Android提供選項來打開或者關(guān)閉硬件加速,默認(rèn)是關(guān)閉??梢栽?個級別上打開或者關(guān)閉硬件加速:

  Application級別:

  Activity級別:

  Window級別:

  復(fù)制代碼代碼如下:getWindow().setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

  注意:目前為止,Android還不支持在Window級別關(guān)閉硬件加速。

  View級別:

?
1
myView.setLayerType(View.LAYER_TYPE_HARDWARE, null);

  注意:目前為止,Android還:不支持在View級別開啟硬件加速。

  檢測當(dāng)前是否啟用了硬件加速:

?
1
2
3
4
5
6
7
8
9
// 方法一
// 此方法返回true,如果myView掛在一個開啟了硬件加速的Window之下,
// 也就是說,它在繪制的時候不一定使用了硬件加速,getDrawingCache
myView.isHardwareAccelerated();
    
// 方法二
// 返回true,如果canvas在繪制的時候啟用了硬件加速
// 盡量采用此方法來判斷是否開啟了硬件加速
canvas.isHardwareAccelerated();

  控制硬件加速開關(guān)

  引言中說過控制硬件加速可以在不同層級進行,這樣可以避免因為一個繪制動作不支持而導(dǎo)致整個應(yīng)用都不可以使用硬件加速這樣很愚蠢的情況發(fā)生??偣灿兴膫€層級,從上到下是:

  1. Application

  應(yīng)用程序等級控制硬件加速,在AndroidManifest.xml中進行:

?
1
<application android:hardwareAccelerated="true" ...>

  在Android4.0以上(包含)默認(rèn)就為true,即打開。如果整個應(yīng)用都不想用硬件加速,則設(shè)定為false。

  2. Activity

  Activity等級的控制方法還是在AndroidManifest.xml中進行,如下展示了應(yīng)用整體使用硬件加速,而某一個Activity不使用的例子:

?
1
2
3
4
<application android:hardwareAccelerated="true">
 <activity ... />
 <activity android:hardwareAccelerated="false" />
</application>

  3. Window

  窗口級控制,如果只是想讓某個窗口使用硬件加速:

?
1
2
3
getWindow().setFlags(
 WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
 WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

  4. View

  可以通過代碼在運行時控制單個View是否使用硬件加速:

?
1
myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

  LAYER_TYPE_HARDWARE即為使用硬件加速(GPU),LAYER_TYPE_SOFTWARE使用CPU進行繪制。

  理解View的繪制模型:

  1.沒有硬件加速:invalidate the view hierarchy ------> draw the view hierarchy

  2.有硬件加速:invalidate the view hierarchy ------> record and update the display list ------> draw the display list

  硬件加速的限制:

  目前,Android對硬件加速的支持并非完美,有些繪制操作在開啟硬件加速的情況下不能正常工作(具體的列表可以參考Android開發(fā)者文檔)。

  不過Android可以保證內(nèi)置的組件和應(yīng)用支持硬件加速。因此,如果應(yīng)用中只使用了標(biāo)準(zhǔn)UI組件,可以放心開啟硬件加速。

  隨著Android的版本升級,相信一段時間之后,硬件加速可以得到完美的支持。

  開啟硬件加速之后的異常反應(yīng):

  1.某些UI元素沒有顯示:可能是沒有調(diào)用invalidate

  2.某些UI元素沒有更新:可能是沒有調(diào)用invalidate

  3.繪制不正確:可能使用了不支持硬件加速的操作, 需要關(guān)閉硬件加速或者繞過該操作

  4.拋出異常:可能使用了不支持硬件加速的操作, 需要關(guān)閉硬件加速或者繞過該操作

看了Android開發(fā)中硬件加速支持的使用方法文章內(nèi)容的人還看:

1.電腦系統(tǒng)啟動硬件加速的方法介紹

2.Win8系統(tǒng)關(guān)閉顯卡硬件加速的方法

3.安卓學(xué)習(xí)方法有哪些

 

631018