Android圖形—硬體加速(Hardware Acceleration)(一)

來源:互聯網
上載者:User

本文譯自:http://developer.android.com/guide/topics/graphics/hardware-accel.html

從Android3.0(API Level 11)開始,Android 2D渲染管道能夠更好的支援硬體加速。硬體加速執行的所有的繪圖操作都是使用GPU在View對象的畫布上來進行的。因為啟用硬體加速會增加資源的需求,因此這樣的應用會佔用更多的記憶體。

啟用硬體加速的最容易的方法是給整個應用程式都開啟全域硬體加速功能。如果應用程式只使用標準的View和Drawable,那麼開啟全域硬體加速不會導致任何的不良的繪製效果。但是,因為硬體加速並不支援所有的2D圖形繪製操作,所以對於那些使用定製的View和繪製調用的應用程式來說,開啟全域硬體加速,可以會影響繪製效果。問題通常會出現在對那些不可見的元素進行了異常或錯誤的像素渲染。為了避免這種問題,Android提供以下層級,以便可選擇性的啟用或禁止硬體加速:

1. Application

2. Activity

3. Window

4. View

如果應用程式執行了定製化的繪圖,就要在實際的帶有硬體加速的硬體裝置上測試,以便發現問題。

控制硬體加速

能夠用以下層級來控制硬體加速

Application層級

在應用的Android資訊清單檔中,把下列屬性添加到<application>元素中,來開啟整個應用程式的硬體加速。

<applicationandroid:hardwareAccelerated="true" ...>

Activity層級

如果應用程式不能夠正確的使用被開啟的全域硬體加速,那麼也可以對Activity分別進行控制。在<activity>元素中使用android:hardwareAccelerated屬性,能夠啟用或禁止Activity層級的硬體加速。以下樣本啟用全域的硬體加速,但卻禁止了一個Activity的硬體加速:

<applicationandroid:hardwareAccelerated="true">
    <activity .../>
    <activityandroid:hardwareAccelerated="false"/>
</application>

Window層級

如果需要更細粒度的控制,就可以使用下列代碼來針對給定的視窗來啟用硬體加速:

getWindow().setFlags(
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

注意:當前不能在Window層級禁止硬體加速。

View層級

能夠使用下列代碼在運行時針對一個獨立的View對象來禁止硬體加速:

myView.setLayerType(View.LAYER_TYPE_SOFTWARE,null);

注意:當前不能在View層級開啟硬體加速。View層除了禁止硬體加速以外,還有其他的功能,更多的相關資訊請看本文的“View層”。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.