日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android 解决华为 SlidingMenu出现白屏

發布時間:2024/4/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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出现白屏的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。