翻译自:www.android4devs.com/2014/12/how-to-make-meterial-design-app.html 真的成为了学习路上的专业翻译户。。。
先放上最终的效果图
图片要大大的才好看
How to make Meterial Design App Bar/ActionBar and style it
在这篇文章中以及随后的文章中,我们将会学习 material design,Material design带给了android许多新的功能,在这篇文章中我们将会学习如何实现App Bar使用一种特殊的属性,Toobar(ActionBar想在被称为App Bars),并且添加图标到App bar。
1.老生长谈,导入架包
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:23.0.0'}
2.尽管Actionbar 已经被App bar/Toolbar替代,可是我们依然可以使用ActionBar,当时在我们的这栗子中,我们将创建一个ToolBar,所以我们需要到 style.xml 中去改变我们的theme,"Theme.AppCompat.Light.NoActionBar"(只要有NoActionBar即可),就是为了去除原本的ActionBar。
3.现在,我们讨论讨论我们projecyt的颜色方案,正如你看的图片
这些属性可以让你设置你的app基本的颜色方案,(windowBackground怎么都编译,显示有问题,实现的人好心求段代码)
为了实现这一步,我们余姚一个文件叫做 color.xml(我没有这么做,这样不好不好)
<?xml version="1.0" encoding="utf-8"?><resources> <color name="colorPrimaryDark">#1976D2</color> <color name="colorPrimary">#2196F3</color> <color name="textColorPrimary">#FFFFFF</color> <color name="navigationBarColor">#2196F3</color></resources>
如下就是Style.xml的样子
<?xml version="1.0" encoding="utf-8"?><resources> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorPrimary">@color/colorPrimary</item> <item name="android:textColorPrimary">@color/textColorPrimary</item> <item name="android:navigationBarColor">@color/navigationBarColor</item> </style></resources>
这里我多加了2个属性,可能需要v21-style/xml 详见前一个博文,http://www.cnblogs.com/ryan-ys/p/4745010.html
4.现在创建一个Toolbar了,Toolbar仅仅就是另一个layout,只是她能够被放置在UI界面上的任何一个地方。现在为了让ToolBar能被所有的需求,或者在大多数的activit中,我们取而代之放在Activity中,而是放在一个单独的文件中叫做 tool_bar.xml,让她包含在我们所需要的activity中。
转到res目录,我们创建以一个新的Layout Resourse File并且命名为 tool_bar.xml,并且根元素为 android.support.v7.widget.toolbar,如下图所示
(翻译原图)
5.在tool_bar.xml中添加toolbar的背景颜色,并且设置elevation的阴影效果。
<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/colorPrimary" android:elevation="4dp"> </android.support.v7.widget.Toolbar>
6.将我们的Toolbar添加到main_activity.java中,
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <include android:id="@+id/toolbar" layout="@layout/tool_bar"></include> <TextView android:layout_below="@+id/toolbar" android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /></RelativeLayout>
7.MainActivity的设置
package com.ryan.toolbardemo01;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.Toolbar;import android.view.Menu;import android.view.MenuItem;public class MainActivity extends AppCompatActivity { private Toolbar toolbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); }}
8.剩下的就是就是展示 如何添加 menu items,比如serch icon 和 uesr icon,icons我选用的是来自 icons4andrioid.com,并且推荐我的一篇帖子,5 tools every android developer must know的帖子,下载好图片后(官方推荐大小),添加到drawbles目录下,
9.现在需要添加search icons 和 user icons,在 menu_main.xml中
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> <item android:id="@+id/action_settings" android:orderInCategory="100" android:title="@string/action_settings" app:showAsAction="never" /> <item android:title="serch" android:id="@+id/search" android:icon="@drawable/search" android:orderInCategory="200" app:showAsAction="ifRoom"></item> <item android:title="user" android:id="@+id/user" android:icon="@drawable/users" android:orderInCategory="300" app:showAsAction="ifRoom"></item></menu>
现在 所有的步骤都做好了。
希望你会喜欢这篇译文,以及原博主的创作www.android4devs.com/2014/12/how-to-make-meterial-design-app.html
我把我原先的代码重构了下,截下最终效果图,上方阴影部分还是能看出来的