• <output id="aynwq"><form id="aynwq"><code id="aynwq"></code></form></output>

    <mark id="aynwq"><option id="aynwq"></option></mark>
  • <mark id="aynwq"><option id="aynwq"></option></mark><label id="aynwq"><dl id="aynwq"></dl></label>
  • 學習啦 > 學習電腦 > 電腦硬件知識 > 硬件知識 > Android開發(fā)中硬件加速支持的使用方法

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

    時間: 捷鋒774 分享

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

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

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

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

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

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

      Application級別:

      Activity級別:

      Window級別:

      復制代碼代碼如下: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級別開啟硬件加速。

      檢測當前是否啟用了硬件加速:

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

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

      引言中說過控制硬件加速可以在不同層級進行,這樣可以避免因為一個繪制動作不支持而導致整個應用都不可以使用硬件加速這樣很愚蠢的情況發(fā)生。總共有四個層級,從上到下是:

      1. Application

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

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

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

      2. Activity

      Activity等級的控制方法還是在AndroidManifest.xml中進行,如下展示了應用整體使用硬件加速,而某一個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)置的組件和應用支持硬件加速。因此,如果應用中只使用了標準UI組件,可以放心開啟硬件加速。

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

      開啟硬件加速之后的異常反應:

      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.安卓學習方法有哪些

     

    631018 主站蜘蛛池模板: 国产成人综合久久精品尤物| 欧美xxxx做受欧美| 好猛好紧好硬使劲好大国产| 君子温如玉po| 中文在线天堂网www| 色窝窝亚洲av网| 无码人妻精品一区二区| 国产一级理论片| 丰满熟妇乱又伦| 美女扒开尿囗给男生桶爽| 成人影院久久久久久影院| 午夜免费福利网站| 一个人看的www日本高清视频| 精品三级久久久久电影网1| 女人高潮内射99精品| 人妻在线无码一区二区三区| AV无码久久久久久不卡网站| 波多野吉衣在线电影| 国产精品自产拍在线网站| 亚洲人成网男女大片在线播放| 亚洲日本人成中文字幕| 日韩精品久久久久久免费| 国产乱理伦片在线看夜| 中文字幕一区二区三区精华液| 精品福利视频导航| 大学生美女特级毛片| 亚洲成人自拍网| 黑人巨大sv张丽在线播放| 日本一区二区三| 免费特级黄毛片| 92国产精品午夜福利| 欧洲熟妇色xxxx欧美老妇多毛 | 精品一区二区三区在线播放| 天天干天天色综合网| 亚洲性无码av在线| 黑人玩弄漂亮少妇高潮大叫| 成年网址网站在线观看| 免费一级毛片无毒不卡| 18成人片黄网站www| 日韩免费在线视频| 又大又硬又黄的免费视频|