Android 5.0 開機(jī)橫屏修改方法
<span style="font-family: Arial, Helvetica, sans-serif;">如果理解了Android的設(shè)計的原理, 其實這個修改原理十分簡單, 比一些網(wǎng)上流出來的粗暴的修改方式既美觀又實用。</span>
修改分為三部分:
1: 上層(Java)修改
既然設(shè)計到屏幕的修改, 肯定想到了直接修改WMS(比較粗暴的方式)。
其實Android的很多的需求都是通過配置文件來的, 這么明顯的設(shè)計需求只要去找相應(yīng)的配置就可以了。
core/res/res/values/config.xml
<bool name="config_supportAutoRotation"><span style="color:#ff0000;">false</span></bool> <integer name="config_lidOpenRotation"><span style="color:#ff0000;">90</span></integer>
修改后發(fā)現(xiàn)開機(jī)后, 開機(jī)畫面是橫屏顯示的,進(jìn)入鎖屏界面, 屏幕做了一次旋轉(zhuǎn)操作, 這個時候窗口才真正的橫屏。
跟需求還不一樣, 進(jìn)入鎖屏前需要橫屏。
所以需要修改WMS的默認(rèn)方向。
/services/core/Java/com/Android/server/wm/WindowManagerService.Java
int mRotation = <span style="color:#ff0000;">1</span>;
修改后開機(jī)發(fā)現(xiàn): 開機(jī)畫面啟動后是豎屏的, 運(yùn)行一段時間變成橫屏, 進(jìn)入鎖屏界面, 也是橫屏, 不用再做橫豎切換。
2: 底層(C++)修改
開機(jī)啟動畫面, 剛開始的時候是豎屏的。
原因很簡單: 底層的SF初始化的時候肯定是豎屏的得跟WMS匹配。 所以修改也很簡單。
framework/native/services/surfaceflinger/DisplayDevice.cpp
// initialize the display orientation transform. setProjection(DisplayState::<span style="color:#ff6666;">eOrientation90</span>, mViewport, mFrame);
再開機(jī)發(fā)現(xiàn)問題來了, 開機(jī)畫面顯示有問題, 而且進(jìn)入到鎖屏界面前也會閃一下。
3: Bootanimation 修改
到第二部的修改一直都很順利, 而且分析的效果跟修改后的顯示也是比較相符的。
但是出現(xiàn)的一閃的畫面, 讓我比較苦惱, 一直以為是修改的不夠徹底, 一直找其他初始化的地方是否沒修改, 找了半天沒找到相關(guān)的修改, 因為應(yīng)該考慮的地方都已經(jīng)修改了。
所以接下來只能看Bootanimation了。
終于發(fā)現(xiàn)了原因:
status_t status = SurfaceComposerClient::getDisplayInfo(dtoken, &<span style="color:#ff0000;">dinfo</span>);
// create the native surface sp<SurfaceControl> control = session()->createSurface(String8("BootAnimation"), dinfo<span style="color:#ff0000;">.h</span>, dinfo<span style="color:#ff0000;">.w</span>, PIXEL_FORMAT_RGB_565);
Surface申請的時候是按照豎屏申請的, 這個時候我們的屏幕已經(jīng)是橫屏了。
修改后運(yùn)行, 發(fā)現(xiàn)完美解決了開機(jī)橫屏的問題。
對于進(jìn)入鎖屏前一閃的問題: 這個也是由Bootanimation導(dǎo)致, 因為Bootanimation開始的時候是豎屏, WMS設(shè)置屏幕為橫屏的時候, Bootanimation還沒有消失, 所以導(dǎo)致了一閃的問題。
抓住這個修改主線, 不論Android怎么變, 是之前4.0 還是將來的6.0, 都是可以修改的。 (PS: 這里不涉及fastboot的logo的修改, 這個修改更簡單 替換圖片就可以了)
以上所述是小編給大家介紹的Android 5.0 開機(jī)橫屏修改方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- Android判斷屏幕是橫屏或是豎屏的簡單實現(xiàn)方法
- 基于jQuery的判斷iPad、iPhone、Android是橫屏還是豎屏的代碼
- Android如何禁止橫屏豎屏的變換
- Android開發(fā)強(qiáng)制橫屏和強(qiáng)制豎屏設(shè)置實例代碼
- Android禁止橫屏豎屏切換的有效方法
- Android 4.4.2 橫屏應(yīng)用隱藏狀態(tài)欄和底部虛擬鍵的方法
- Android強(qiáng)制設(shè)定橫屏?xí)r,SurfaceView一直黑屏
- android橫豎屏切換時候Activity的生命周期
- Android編程判斷橫屏、豎屏及設(shè)置橫豎屏的方法
相關(guān)文章
Android通過繼承Binder類實現(xiàn)多進(jìn)程通信
本篇文章主要介紹了Android通過繼承Binder類實現(xiàn)多進(jìn)程通信,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-03-03Android拼圖游戲 玩轉(zhuǎn)從基礎(chǔ)到應(yīng)用手勢變化
這篇文章主要介紹了Android拼圖游戲的實現(xiàn)方法,教大家玩轉(zhuǎn)從基礎(chǔ)到應(yīng)用手勢變化,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10Android實現(xiàn)仿360桌面懸浮清理內(nèi)存
今天給大家?guī)硪粋€仿360手機(jī)衛(wèi)士懸浮窗清理內(nèi)存的效果的教程,非常的簡單實用,需要的小伙伴可以參考下2015-12-12Android編程ProgressBar自定義樣式之動畫模式實現(xiàn)方法
這篇文章主要介紹了Android編程ProgressBar自定義樣式之動畫模式實現(xiàn)方法,涉及Android動畫模式的布局技巧,非常具有實用價值,需要的朋友可以參考下2015-10-10Android進(jìn)階之從IO到NIO的模型機(jī)制演進(jìn)
這篇文章主要為大家介紹了Android進(jìn)階之從IO到NIO的模型機(jī)制演進(jìn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01Android 仿日歷翻頁、仿htc時鐘翻頁、數(shù)字翻頁切換效果
這篇文章主要介紹了Android 仿日歷翻頁、仿htc時鐘翻頁、數(shù)字翻頁切換效果,需要的朋友可以參考下2017-07-07