The app you've been thinking about making yourself look good. So add a status bar to your app that can change color. I did not do the downward compatibility ... Only mobile phone version is 4.4 and above the use of mobile phones. Someone on the internet is called immersive, and I think the blogger's explanation is right here:
Android Implementation Color Status bar
A particularly important step:
Activity must use a theme!
android:theme="@style/AppTheme.NoActionBar"
Here I am using the default theme to see what you need to use.
1, first in the activity's OnCreate method, set the title bar to Transparent:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); }
2, and then to keep your top control moving up, you need to add the following two sentences to the top control of the layout file:
android:fitsSystemWindows="true" android:clipToPadding="true"
3, then if the background color of your top control is blue, then your title bar will also turn blue:
You can look at the following:
Share:
Here is a simple book on the Great God wrote a tool Class I used very good ... Share to everyone. Also thank the great God for sharing:
Need to download an open Source Library yourself Systembartint
Have time I also want to this open source library source code to look, study!
Public class statusbarutil { /** * Modify the status bar to full transparency * * @param activity */ @TargetApi( +) Public Static void Transparencybar(Activity activity) {if(Build.VERSION.SDK_INT >= build.version_codes. LOLLIPOP) {window window = Activity.getwindow (); Window.clearflags (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); Window.getdecorview (). Setsystemuivisibility (View.system_ui_flag_layout_fullscreen | view.system_ui_flag_layout_hide_navigation | view.system_ui_flag_layout_stable); Window.addflags (WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); Window.setstatusbarcolor (color.transparent); Window.setnavigationbarcolor (color.transparent); }Else if(Build.VERSION.SDK_INT >= build.version_codes. KITKAT) {window window = Activity.getwindow (); Window.setflags (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLU Cent_status); } }/** * Modify the status bar color, support version 4.4 or above * * @param activity * @param colorid */ Public Static void Setstatusbarcolor(Activity activity,intColorid) {if(Build.VERSION.SDK_INT >= build.version_codes. LOLLIPOP) {window window = Activity.getwindow ();//Window.addflags (WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);Window.setstatusbarcolor (Activity.getresources (). GetColor (Colorid)); }Else if(Build.VERSION.SDK_INT >= build.version_codes. KITKAT) {//using the Systembartint library to color the 4.4 status bar, you need to first set the status bar to TransparentTransparencybar (activity); Systembartintmanager Tintmanager =NewSystembartintmanager (activity); Tintmanager.setstatusbartintenabled (true); Tintmanager.setnavigationbartintenabled (true); Tintmanager.setstatusbartintresource (Colorid); } }/** * Set the status bar black font icon, * suitable for 4.4 or more versions miuiv, FlyMe and 6.0 or later other Android * * @param activity * @ret Urn 1:miuui 2:flyme 3:android6.0 * / Public Static int Statusbarlightmode(Activity activity) {intresult =0;if(Build.VERSION.SDK_INT >= build.version_codes. KITKAT) {if(Miuisetstatusbarlightmode (Activity.getwindow (),true) {result =1; }Else if(Flymesetstatusbarlightmode (Activity.getwindow (),true) {result =2; }Else if(Build.VERSION.SDK_INT >= build.version_codes. M) {Activity.getwindow (). Getdecorview (). Setsystemuivisibility (View.system_ui_flag_layout_fullscreen | View.system_ui_flag_light_status_bar); result =3; } }returnResult }/** * When the system type is known, set the status bar Black font icon. * Suitable for 4.4 or more versions miuiv, FlyMe and above 6.0 other Android * * @param activity * @param type 1:miuui 2:flym E 3:android6.0 * / Public Static void Statusbarlightmode(Activity activity,intType) {if(Type = =1) {Miuisetstatusbarlightmode (Activity.getwindow (),true); }Else if(Type = =2) {Flymesetstatusbarlightmode (Activity.getwindow (),true); }Else if(Type = =3) {Activity.getwindow (). Getdecorview (). Setsystemuivisibility (View.system_ui_flag_layout_fullscreen | View. System_ui_flag_light_status_bar); } }/** * Clear MIUI or FlyMe or 6.0 or later status bar black font */ Public Static void Statusbardarkmode(Activity activity,intType) {if(Type = =1) {Miuisetstatusbarlightmode (Activity.getwindow (),false); }Else if(Type = =2) {Flymesetstatusbarlightmode (Activity.getwindow (),false); }Else if(Type = =3) {Activity.getwindow (). Getdecorview (). setsystemuivisibility (view.system_ui_flag_visible); } }/** * Set status bar icons for dark and Meizu-specific text styles * can be used to determine if the window needs to be set for flyme user * * @param windows * @param Dark If the status bar font and icon color are set to dark * @return Boolean Successful execution returns true */ Public Static Boolean Flymesetstatusbarlightmode(Window window,BooleanDark) {Booleanresult =false;if(Window! =NULL) {Try{Windowmanager.layoutparams LP = Window.getattributes (); Field Darkflag = WindowManager.LayoutParams.class. Getdeclaredfield ("Meizu_flag_dark_status_bar_icon"); Field meizuflags = WindowManager.LayoutParams.class. Getdeclaredfield ("Meizuflags"); Darkflag.setaccessible (true); Meizuflags.setaccessible (true);intbit = Darkflag.getint (NULL);intValue = MEIZUFLAGS.GETINT (LP);if(Dark) {Value |= bit; }Else{Value &= ~bit; } meizuflags.setint (LP, value); Window.setattributes (LP); result =true; }Catch(Exception e) { } }returnResult }/** * Set the status bar font icon to be dark, need to MIUIV6 above * * @param window needs to be set Windows * @param Dark Whether to put the status bar font and Icon Yan Color set to Dark * @return Boolean Successful execution returns true * / Public Static Boolean Miuisetstatusbarlightmode(Window window,BooleanDark) {Booleanresult =false;if(Window! =NULL) {Class clazz = Window.getclass ();Try{intDarkmodeflag =0; Class layoutparams = Class.forName ("Android.view.miuiwindowmanager$layoutparams"); Field field = Layoutparams.getfield ("Extra_flag_status_bar_dark_mode"); Darkmodeflag = Field.getint (layoutparams); Method Extraflagfield = Clazz.getmethod ("Setextraflags",int. class,int. Class);if(Dark) {extraflagfield.invoke (window, Darkmodeflag, Darkmodeflag);//status bar transparent and black font}Else{Extraflagfield.invoke (window,0, Darkmodeflag);//Clear Black font} result =true; }Catch(Exception e) { } }returnResult }}
This tool class specific function of the author notes are also very detailed!
I wrote a small demo, need to download to see ~
Https://github.com/slyjs/StatusTintDemo.git
Need to learn a lot AH think tight!!!!
Android Color status bar