編輯:關於Android編程
<span >如果理解了Android的設計的原理, 其實這個修改原理十分簡單, 比一些網上流出來的粗暴的修改方式既美觀又實用。</span>
修改分為三部分:
1: 上層(Java)修改
既然設計到屏幕的修改, 肯定想到了直接修改WMS(比較粗暴的方式)。
其實Android的很多的需求都是通過配置文件來的, 這麼明顯的設計需求只要去找相應的配置就可以了。
core/res/res/values/config.xml
<bool name="config_supportAutoRotation"><span >false</span></bool> <integer name="config_lidOpenRotation"><span >90</span></integer>
修改後發現開機後, 開機畫面是橫屏顯示的,進入鎖屏界面, 屏幕做了一次旋轉操作, 這個時候窗口才真正的橫屏。
跟需求還不一樣, 進入鎖屏前需要橫屏。
所以需要修改WMS的默認方向。
/services/core/Java/com/Android/server/wm/WindowManagerService.Java
int mRotation = <span >1</span>;
修改後開機發現: 開機畫面啟動後是豎屏的, 運行一段時間變成橫屏, 進入鎖屏界面, 也是橫屏, 不用再做橫豎切換。
2: 底層(C++)修改
開機啟動畫面, 剛開始的時候是豎屏的。
原因很簡單: 底層的SF初始化的時候肯定是豎屏的得跟WMS匹配。 所以修改也很簡單。
framework/native/services/surfaceflinger/DisplayDevice.cpp
// initialize the display orientation transform. setProjection(DisplayState::<span >eOrientation90</span>, mViewport, mFrame);
再開機發現問題來了, 開機畫面顯示有問題, 而且進入到鎖屏界面前也會閃一下。
3: Bootanimation 修改
到第二部的修改一直都很順利, 而且分析的效果跟修改後的顯示也是比較相符的。
但是出現的一閃的畫面, 讓我比較苦惱, 一直以為是修改的不夠徹底, 一直找其他初始化的地方是否沒修改, 找了半天沒找到相關的修改, 因為應該考慮的地方都已經修改了。
所以接下來只能看Bootanimation了。
終於發現了原因:
status_t status = SurfaceComposerClient::getDisplayInfo(dtoken, &<span >dinfo</span>);
// create the native surface sp<SurfaceControl> control = session()->createSurface(String8("BootAnimation"), dinfo<span >.h</span>, dinfo<span >.w</span>, PIXEL_FORMAT_RGB_565);
Surface申請的時候是按照豎屏申請的, 這個時候我們的屏幕已經是橫屏了。
修改後運行, 發現完美解決了開機橫屏的問題。
對於進入鎖屏前一閃的問題: 這個也是由Bootanimation導致, 因為Bootanimation開始的時候是豎屏, WMS設置屏幕為橫屏的時候, Bootanimation還沒有消失, 所以導致了一閃的問題。
抓住這個修改主線, 不論Android怎麼變, 是之前4.0 還是將來的6.0, 都是可以修改的。 (PS: 這裡不涉及fastboot的logo的修改, 這個修改更簡單 替換圖片就可以了)
以上所述是小編給大家介紹的Android 5.0 開機橫屏修改方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對本站網站的支持!
本文實例講述了Android編程之圖片顏色處理方法。分享給大家供大家參考,具體如下:你想做到跟美圖秀秀一樣可以處理自己的照片,美化自己的照片嗎?其實你也可以自己做一個這樣
一直以來都認為AIDL的應用離我很遙遠,甚至不知道如何去用,也就懶得去學,之前的項目中也看到過aidl文件,只是懶得去看而已,現在感覺自己真的是無藥可救了,如果只止步於學
本文給大家介紹Activity的生命周期,如果大家學習過iOS的小伙伴的話,Activity的生命周期和iOS中ViewController的生命周期非常類似。生命周期,
最近關於微信應用號的消息越來越多,很多人也對它十分感興趣。傳聞已久的微信應用號總算要推出了,昨天晚上有網友在微博曝出一張微信應用號內測邀請函,引發了眾多的討