2014年,Google携Android5.X重装归来,全新的UI设计和更加优化的性能,令开发者眼前一亮
开发Android还得靠AS,下载地址 http://developer.android.com/intl/zh-cn/sdk/index.html
Google通过模拟自然界纸墨的形态变化、光线与阴影、纸与纸之间的控件层级关系,带来一种真实的空间感
Android5.x大量加入了各种新的动画效果,让整个设计风格更加自然和谐。
Material Desigin中运用了大量高度饱和、适中亮度的大色块来突出界面的主次,并一扫Android4.X系列Holo主题的沉重感,让界面更加富有时尚感和视觉冲击力
此外还有很多新的设计风格,如悬浮按钮,聚焦大图、无框按钮、波纹效果等新特性 具体可参考 http://www.google.com/design/#resources
之前的ARM模拟器,是以软件的形式模拟,所以很慢~x86可以选这使用宿主机器的GPU等,和真机的速度相差无几~
下面更新SDK使用了国内的代理,需要的童鞋可以看下
打开SDK Manager
install 之后
找到SDK如下目录,因为这个加速器是跨平台的,windows操作系统对应的是exe执行文件,安装即可
当然你也可以使用genymotion~有真机最好了~
除了从SDK中下载,还可以从Intel官方网站上下载加速器
官网如下: https://software.intel.com/zh-cn/android
https://software.intel.com/zh-cn/android/articles/intel-hardware-accelerated-execution-manager/
cmd命令行窗口:
虽然我们上面安装了加速器,但是只是模拟器而已,镜像才是关键!!!
因为我的电脑操作系统是64位,我们打算在5.0的模拟器中使用,所以选择如下:
https://software.intel.com/zh-cn/android/articles/android-44-kitkat-x86-emulator-system-image
下载后放到相应的目录即可~
都是默认选项,选择使用宿主机器的GPU~
哈哈 速度那是必须的快~
Material Design现在有三种默认的主题可以设置:
同时 Android5.x提出了Color Palette (颜色调色板)的概念,让开发者可以自己设定系统区域的颜色,使整个APP的颜色风格和系统的颜色风格保持一致。
通过如下代码,可以通过使用自定义Style的方式来创建自己的Color Palette 颜色主题,从而实现不同的颜色风格。
<resources>
<style name="AppTheme" parent="android:Theme.Material">
--appBar的颜色-->
<item name="android:colorPrimary">#BEBEBEitem>
--状态栏的颜色-->
<item name="android:colorPrimaryDark">#FF5AEBFFitem>
<item name="android:navigationBarColor">#FFFF4130item>
<item name="android:colorAccent">#BF3EFFitem>
style>
resources>
详见本人另一篇博客 RecyclerView完全解读
详情请查看鄙人CradView的使用
Material Design的一个很重要的特性就是拟物扁平化。
以往的Android View通常有2个属性——X和Y,而在Android5.X中,Google为其增加了一个新的属性 —Z,对应垂直方向上的高度变化。
在Android5.x中,View的Z值由 elevation + translationZ(这两个都是5.x引入的新特性)组成。
其中 elevation是静态的成员,translationZ可以在代码中使用来实现动画的效果。
Z = elevation + translationZ
在xml中设置View的视图高度
android:elevation="Xxdp"
比如:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/cardview_contents"
android:elevation="10dp" />
view.setTranslationZ(XXX)
通常也会使用属性动画来为视图高度改变的时候增加一个动画效果
if(flag){
view.animate().translationZ(100);
flag=false;
}else{
view.animate().translationZ(0);
flag=true;
}