网友通过本文主要向大家介绍了material design,material design风格,material design色板,material design教程,material design 库等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
更简单更全的material design状态栏
从实际使用需要出发,以最简单的方式实现了几种类型的MD状态栏。(重点在fitsSystemWindows的使用)
0,使用前提
Theme.AppCompat.Light.DarkActionBar
targetSdkVersion 23;
support librariy 23.3.0
styles-v19:
styles-v21+:
1,最普通的类型:只有一个ToolBar
layout:
.java:
/** * 简单型状态栏(ToolBar) * * @param activity */ public static void setOrdinaryToolBar(Activity activity) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { activity.getWindow().setStatusBarColor(ContextCompat.getColor(activity, R.color.colorPrimaryDark)); } else if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) { setKKStatusBar(activity, R.color.colorPrimaryDark); } }效果:
左:Android4.4 右:Android6.0
2,图片全屏透明状态栏(图片位于状态栏下面)
layout:
.javawindows="true" android:layout_height="wrap_content" />
/** * 图片全屏透明状态栏(图片位于状态栏下面) * * @param activity */ public static void setImageTransparent(Activity activity) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); } }
效果:
左:Android4.4 右:Android6.0


3,图片全屏半透明状态栏(图片位于状态栏下面)
layout:
.java:
/** * 图片全屏半透明状态栏(图片位于状态栏下面) * * @param activity */ public static void setImageTranslucent(Activity activity) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); activity.getWindow().setStatusBarColor(ContextCompat.getColor(activity, R.color.statusBar)); } else { setKKStatusBar(activity, R.color.statusBar); } }
效果:
左:Android4.4 右:Android6.0


4,ToolBar+TabLayout状态栏(ToolBar可伸缩)
layout:
.java:
/** * ToolBar+TabLayout状态栏(ToolBar可伸缩) * * @param activity */ public static void setToolbarTabLayout(Activity activity) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { activity.getWindow().setStatusBarColor(ContextCompat.getColor(activity, R.color.colorPrimaryDark)); } }
效果:
Android4.4:


Android6.0:
5,DrawerLayout+ToolBar+TabLayout状态栏(ToolBar可伸缩)
layout:
.java:
/** * DrawerLayout+ToolBar+TabLayout状态栏(ToolBar可伸缩) * * @param activity * @param drawerLayout * @param coordinatorLayout */ public static void setDrawerToolbarTabLayout(Activity activity, CoordinatorLayout coordinatorLayout) { if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) { ViewGroup contentLayout = (ViewGroup) activity.findViewById(android.R.id.content); contentLayout.getChildAt(0).setFitsSystemWindows(false); coordinatorLayout.setFitsSystemWindows(true); setKKStatusBar(activity, R.color.statusBar); } }
效果:
Android4.4:



Android6.0:
6,CollapsingToolbarLayout状态栏(可折叠图片)
layout:
.java:
/** * CollapsingToolbarLayout状态栏(可折叠图片) * * @param activity * @param coordinatorLayout * @param appBarLayout * @param imageView * @param toolbar */ public static void setCollapsingToolbar(Activity activity, CoordinatorLayout coordinatorLayout, AppBarLayout appBarLayout, ImageView imageView, Toolbar toolbar) { if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) { coordinatorLayout.setFitsSystemWindows(false); appBarLayout.setFitsSystemWindows(false); imageView.setFitsSystemWindows(false); toolbar.setFitsSystemWindows(true); CollapsingToolbarLayout.LayoutParams lp = (CollapsingToolbarLayout.LayoutParams) toolbar.getLayoutParams(); lp.height = (int) (getStatusBarHeight(activity) + activity.getResources().getDimension(R.dimen.abc_action_ba