关于material design是谷歌2014年I/O大会推出的,过去两年才慢慢被开发者接受,我最近也是看到很多app有很多酷炫效果,经过百般查询资料才对material design有了一个新的认识,现在话不多说我们进入主题,首先我们先来学习ToolBar,替换之前的ActionBar,相对于ActionBar它更加的灵活可以放在任何位置,现在我们来看看如何使用:
我们先来看看这个关系词:
![](https://img-blog.csdn.net/20160817155024227?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
第一种实现方法
1.首先你先去掉原来的actionbar
![]()
![]()
![](https://img-blog.csdn.net/20160810113908685?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2.考虑到这是谷歌5.0才推出来的,为了给低版本(4.4以上做适配)
![]()
![]()
![](https://img-blog.csdn.net/20160810113936373?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
3.这时候你会发现整个toolbar这种情况
![]()
![]()
![](https://img-blog.csdn.net/20160810113824870?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
为了解决这个情况这个问题我们必须在toolbar里加入
![]()
![](https://img-blog.csdn.net/20160810113953498?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
#在真是开发中华为的手机底部一般都是使用的虚拟键,如果需要透明状态栏效果,底部导航栏不要设置透明,就是if里面的第二行代码(导航栏 底部)删除即可;
第二种方法:
更改样式方法:
第一步同样需要设置样式:
- <style name="BaseAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
-
- <item name="colorPrimary">@color/transparence</item>
- <item name="colorPrimaryDark">@color/transparence</item>
- <item name="colorAccent">@color/colorAccent</item>
- <item name="android:windowTranslucentStatus">true</item>
- </style>
第二步同样是在清单文件中给activity设置theme即可:
- <activity android:name=".MainActivity"
- android:theme="@style/BaseAppTheme"/>
因为5.0支持的是变色状态栏,所以如果想兼容android5.0以上版本需要在activity的onCreate方法中加入以下代码:
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- Window window = getWindow();
- window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
- window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
- window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
- window.setStatusBarColor(Color.TRANSPARENT);
- }
以上是根据更改样式的方式实现透明状态栏效果