android 解决华为 SlidingMenu出现白屏
SlidingMenu在華為手機上出現的白屏。
之前做了一個自定義的Monitor,用來播放視頻,但是在華為手機上,每次滑動SlideMenu后,Monitor會出現白屏,之前一直不知道為什么。后來,在網上搜索了資料,終于解決了問題。
問題原因是由于SlidingMenu滑動時開啟了硬件加速,但是在華為手機上沒有很好的兼容。具體代碼是:
@TargetApi(Build.VERSION_CODES.HONEYCOMB) public void manageLayers(float percentOpen) {if (Build.VERSION.SDK_INT < 11)return; boolean layer = percentOpen > 0.0f && percentOpen < 1.0f; final int layerType = layer ? View.LAYER_TYPE_HARDWARE : View.LAYER_TYPE_NONE; if (layerType != getContent().getLayerType()) {getHandler().post(new Runnable() {public void run() {Log.v(TAG, "changing layerType. hardware? " + (layerType == View.LAYER_TYPE_HARDWARE)); getContent().setLayerType(layerType, null); getMenu().setLayerType(layerType, null); if (getSecondaryMenu() != null) {getSecondaryMenu().setLayerType(layerType, null); }}}); } }這段代碼的含義是,當滑動時,菜單和內容都開啟硬件加速,滑動結束后,取消硬件加速。解決問題也很簡單。
解決方法一:
第一種解決方法是關閉硬件加速
在AndroidManifest.xml文件中在application標簽中添加屬性 android:hardwareAccelerated=”false”,如圖:
但是,這種方法有個缺點,就是開啟了硬件加速之后,如果碰到非常復雜的界面布局,嵌套太多的話,就會報StackOverflow的錯誤,可以自己百度一下,如果你恰好遇到一個喜歡留個FrameLayout,然后在代碼里面不停的removeAllView()、addView(),動態添加布局的豬一樣的隊友,那么恭喜你,很有可能遇到我說的情況。順便說一下,優雅的解決復雜布局的方法是用多個Fragment來拆開復雜界面、分離頁面邏輯
萬一你遇到開啟硬件加速后,復雜界面報錯的情況怎么辦呢?別著急,臨時關閉硬件加速就可以了,告訴機器,這個界面不要硬件加速。
首先找到報錯的那個界面,例如MainActivity,然后設置這個Activity的屬性,針對這個Activity不要使用硬件加速就可以了,如圖:
如果這個豬一樣的隊友寫的報錯界面太多了,你總不能一個一個去找吧,所以,就有第二種方法,直接修改SlidingMenu的源碼
解決方法二:
直接將SlideMenu的代碼設置為滑動時也不要開啟硬件加速。具體代碼很簡單:
@TargetApi(Build.VERSION_CODES.HONEYCOMB)public void manageLayers(float percentOpen) {if (Build.VERSION.SDK_INT < 11)return; // boolean layer = percentOpen > 0.0f && percentOpen < 1.0f; boolean layer=false; final int layerType = layer ? View.LAYER_TYPE_HARDWARE : View.LAYER_TYPE_NONE; if (layerType != getContent().getLayerType()) {getHandler().post(new Runnable() {public void run() {Log.v(TAG, "changing layerType. hardware? " + (layerType == View.LAYER_TYPE_HARDWARE)); getContent().setLayerType(layerType, null); getMenu().setLayerType(layerType, null); if (getSecondaryMenu() != null) {getSecondaryMenu().setLayerType(layerType, null); }}}); }}
這種解決代碼比較好,建議使用這一種代碼。
android 解決華為 SlidingMenu出現白屏就講完了。
就這么簡單。
總結
以上是生活随笔為你收集整理的android 解决华为 SlidingMenu出现白屏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android TextUtils的使用
- 下一篇: android 判断进程是否处于前台