最近做的程式中遇到了一些奇怪的問題:**未知,只對特定機型出現問題。如果你也遇到了,可以考慮是不是
硬體加速
(hardware acceleration)的錯
從android3.0 (api level 11)開始,android的2d顯示管道被被設計得更加支援硬加速了.硬加速使用gpu承擔了所有在view的canvas上執行的繪製操作。
硬體加速是個好東西,可以讓listview、webview滑動的更流暢,但是也總是會出現莫名其妙的的問題。
問題1:edittext中文字的重疊
這是我之前乙個部落格中解決過的問題,詳見:
在某些4.x的機器中,如果開啟了硬體加速,edittext會出現奇怪的文字重疊的情況。
解決的方法:對edittext關閉硬體加速即可。
問題2:無法顯示
做的程式裡有的時候會需要載入大圖,但是硬體加速中 opengl對於記憶體是有限制的。如果遇到了這個限制,logcat只會報乙個warning: bitmap too large to be uploaded into a texture (587x7696, max=2048x2048)
這時我們就需要把硬體加速關閉了。
但開始我是這樣處理的,我關閉了整個應用的硬體加速:
[html]view plain
copy
<
android:allowbackup
="true"
android:icon
="@drawable/ic_launcher"
android:hardwareaccelerated
="false"
android:label
=android:theme
=>
隨後我就發現,雖然可以顯示了,但是listview和webview等控制項顯得特別的卡,這說明硬體加速對於程式的效能提公升是很明顯的。所以我就改為對於activity的關閉
[html]view plain
copy
<
activity
android:name
="icyfox.webviewimagezoomertest.mainactivity"
android:label
=android:hardwareaccelerated
="false"
這樣問題得到了較好的解決,實際上,我們還可以對每個控制項是否加速進行控制。
寫這篇文章的目的,想讓大家在遇到些奇怪的問題的時候,可以想到這一點,希望對大家有所幫助。
Android 硬體加速
開啟或關閉硬體加速 由於硬體加速自身並非完美無缺,所以android提供選項來開啟或者關閉硬體加速,預設是關閉。可以在4個級別上開啟或者關閉硬體加速 activity級別 window級別 getwindow setflags windowmanager.layoutparams.flag hard...
Android硬體加速
android從3.0 apilevel11 開始,在繪製view的時候支援硬體加速,充分利用gpu的特性,使得繪製更加平滑,但是會多消耗一些記憶體。開啟或關閉硬體加速 由於硬體加速自身並非完美無缺,所以android提供選項來開啟或者關閉硬體加速,預設是關閉。可以在4個級別上開啟或者關閉硬體加速 ...
Android硬體加速
從android3.0 api level 11 開始,支援硬體加速,可充分利用gpu的特性,使得介面渲染更加平滑。但是硬體加速自身並非完美,在某些webview版本上,比如android5初期的一些rom上的webview版本是chrome37 38版本,由於其本身的硬體加速策略的bug,導致 稍...