Material Design 是与Android Lollipop(5.0)一起推出的一种全新的设计语言,这种设计语言旨在为手机、平板电脑、台式机和“其他平台”提供更一致、更广泛的“外观和感觉”。说白了,就是“更好看”。

android material design 样例 安卓 material design_设计


譬如说可以自定义导航栏的颜色使之与应用整体更加搭配(新浪微博就没注意这点),还有下面的信封小图标,可以自定义任何图标、文字、动画效果,还有下图中的抽屉效果(QQ在用)。

android material design 样例 安卓 material design_android_02


这些都是安卓自带的设计效果,新建项目时会自己添加上来,但即使是这样,同样会遇到很多问题。

1.修改导航栏颜色

新建项目时所有的样式颜色都是自定义好的,但是自己项目的UI不一定就与默认项目的设定一样,这时就需要修改样式颜色。这还算简单,找到manifest文件,跳到styles文件中就可以了,想怎么改怎么改。

android:theme="@style/AppTheme"
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
</style>

2.隐藏标题栏

过去的做法无非两种,一种是在加载布局前加上requestWindowFeature(Window.FEATURE_NO_TITLE)这么一句,但是自从Material Design的概念引入之后,TitleBar已经没有了,取而代之的ToolBar,所以隐藏标题栏那句是没有用的。二就是更改主题,有没有效果先不论,界面变成这个样子,你能受得了?

android material design 样例 安卓 material design_自定义_03


还是在styles里,加上<item name="windowNoTitle">true</item>这句就行了(不过只在Empty Activity中有效,可以理解为要么就用Material Design,要么就不用或是自己定义)。

3.自定义主题属性

在一些特定的需求当中,需要activity用到特定的主题,这时就出现了一个问题,那就是某些主题与Material Design不兼容,与Material Design兼容的主题中又没有我想要的效果,那又怎么办呢?

那就只能自定义主题了。

譬如说在侧滑销毁activity中需要用到透明主题,那就直接在styles中定义。

<style name="Theme.AppCompat.Translucent">
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:colorBackgroundCacheHint">@null</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
</style>

然后在manifest对应的activity中直接引用就行了。

android:theme="@style/Theme.AppCompat.Translucent"

以上就是我在实际工作中遇到的一些问题和解决方案