Android群英传知识点回顾——第十二章:Android5.X新特性详解


12.1 Android5.X UI设计初步

12.1.1 材料的形态模拟
12.1.2 更加真实的动画
12.1.3 大色块的使用
12.2 Material Design主题
12.3 Palette
12.4 视图与阴影
12.5 Tinting和Clipping

12.5.1 Tinting(着色)
12.5.2 Clipping(裁剪)
12.6 列表与卡片

12.6.1 RecyclerView
12.6.2 CardView
12.7 Android过渡动画
12.8 Material Design动画效果

12.8.1 Ripple效果
12.8.2 Circular Reveal
12.8.3 View state changes Animation
12.9 Toolbar
12.10 Notification

12.10.1 基本的Notification
12.10.2 折叠式Notification
12.10.3 悬挂式Notification
12.10.4 显示等级的Notification


转眼间,安卓7.0已经出了,而我还在学习5.0的知识,此刻的心情是蓝瘦、香菇,看来得加把劲了,这篇文章较长,不过有很多实例的动画确实很好看,今年是个UI火热的一年,掌握了这些动画,可谓是你的看家本领,也是你进阶的一部分

Android5.X系列开始使用新的设计风格Material Design

Google通过模拟自然界的形态变化、关线与阴影、纸与纸之间的空间层级关系,带来一种真实的空间感

Material Design中采用大量高饱和、适中亮度的大色块来突出界面的主次

希望了解更多的Material Design设计风格的读者可以访问网站:https://www.google.com/design/#resources

Material Design提供默认的三种主题

同时也提出了Color Palette的概念,让开发者自己设定系统区域的颜色

可以通过使用自定义Style来创建自己的Color Palette颜色主题

Android5.X使用Palette来提取颜色,从而让主题能够动态适应当前页面的色调

Android内置了几种提取颜色的种类:

Vibrant(充满活力的)
Vibrant dark(充满活力的黑)
Vibrant light(充满活力的白)
Muted(柔和的)
Muted dark(柔和的黑)
Muted light(柔和的白)
使用Palette需要在Dependencies中添加依赖:

这这可以给Palette传进一个Bitmap对象,并调用它的Palette.generate()静态方法或者Palette.generateAsync()方法创建一个Palette

下面例子演示如何通过加载图片的柔和色调来改变状态栏和Actionbar的色调:

使用书上源码会出现空指针错误,我们稍微把程序修改一下,查看效果图:

Material Design最重要的特点就是拟物扁平化

Android5.X在以外的View中只有x和y的方向上添加了z方向,View的z值由两部分组成:

通常可以在XML布局文件中设置View的视图高度

下面通过实例演示不同视图高度的效果:

在程序中也可以用代码变换视图高度:

通常和还可以用属性动画来改变视图高度:

Android5.X提供了两个对操作图像的新功能:Tinting和Clipping

下面有例子说明,注意tint和tintMode属性:

效果图:

使用Clipping,首先需要使用ViewOutlineProvider来修改outline,然后再通过setOutlinProvider将outline作用给视图

下面通过例子理解Clipping:

在代码中:

效果图:

关于这章,可以在我博客上已经写过了,那么就不再多写了

传送门:

Android基础控件——RecyclerView实现拖拽排序侧滑删除效果
Android基础控件——CardView的使用、仿支付宝银行卡
在Activity之间的跳转中,通过overridePendingtransition(int inId,int outId)这个方法给Activity添加一些切换动画,效果也是差强人意

Android5.X提供了三种Transition类型的动画:

进入:一个进入的过渡动画决定Activity中的所有视图怎么进入屏幕
退出:一个退出的过渡动画决定Activity中的所有视图怎么退出屏幕
共享元素:一个共享元素过渡动画决定两个Activity之间的过渡,怎么共享他们的视图
其中,进人和退出效果包括:

explode(分解)一一从屏幕中间进或出,移动视图
slide(滑动)——从屏幕边缘进或出,移动视图
fade(淡出) 一一通过改变屏幕上视图的不透明度达到添加或者移除视图
共享元素包括(简单的说ActivityA的指定的View不会消失,带着View跳转到ActivityB中):

changeBounds——改变目标视图的布局边界
changeClipBounds——裁剪目标视图边界
changeTransfrom——改变目标视图的缩放比例和旋转角度
changeImageTransfrom——改变目标图片的大小和缩放比例
这里比如ActivityA跳转到ActivityB,运用这三种过渡动画,则在ActivityA中修改:

而在ActivityB,只需要设置以下代码:

或者在ActivityB的样式文件设置如下代码:

那么接下来可以设置进入ActivityB的动画效果:

或者是设置离开ActivityB的动画效果:

下面是共享元素的使用,首先在ActivityA中设置共享元素的属性:

同时在ActivityB中设置相同的共享元素的属性:

在代码中使用共享元素,首先是单个共享元素:

或者一个视图中有多个共享元素,通过Pair.create()来创建多个共享元素:

Android5.X切换动画例子……见经典代码回顾案例一

无知识点

Ripple效果:点击后的波纹效果,可以通过代码设置波纹背景

下面通过例子来演示一下这两个效果:

效果图:

同样的,也可以通过XML来声明一个ripple,然后在布局文件中使用:

效果图:

这个动画效果具体变现为一个View以圆形的形式展开,揭示出来,通过ViewAnimationUtils.createCircularReveal()来创建动画,代码如下:

RevealAnimator的使用特别简单,主要就是几个关键的坐标点:

centerX 动画开始的中心点X
centerY 动画开始的中心点Y
startRadius 动画开始半径
endRadius 动画结束半径
接下来我们来看一下例子,了解下RevealAnimator的使用,首先用XML创建一个圆和方形:

然后在布局文件中使用这两个图形:

主程序:

效果图:

StateListAnimator:视图动画效果,以前的Selector用来修改背景达到反馈效果,现在支持Selector使用动画效果
在XML定义一个StateListAnimator,添加到Selector中:

在布局文件中直接使用:

特别要注意:Animator是要开启的,所以必须在主代码中使用AnimatorInflater.loadStateListAnimator()方法,并且通过View.setStateListAnimator()方法分配到视图中


animated-selector:同样作为一种状态改变的动画效果Selector
首先得有一套状态变换图:

然后在XML中定义这些图片组合:

最后在主程序中使用即可:

效果图:

Toolbar与ActionBar最大的区别就是Toolbar更加自由、可控,这也是Google逐渐使用Toolbar替代Actionbar的原因,使用Toolbar必须引入appcompat-v7包,i.e.并设置主题为NoActionBar,使用以下代码进行设置:

Toolbar的使用……见经典代码回顾案例二

Android5.0对Notification进行了优化:

长按Notification可以显示消息来源
锁屏状态下,可以看到Notification的通知
基本的Notification……见经典代码回顾案例三

折叠式Notification……见经典代码回顾案例四

悬挂式Notification……见经典代码回顾案例五

Notification分为三个等级:

VISIBILITY_PRIVATE:表明只有当没有锁屏的时候会显示
VISIBILITY_PUBLIC:表明在任何情况下都会显示
VISIBILITY_SECRET:表明在pin、password等安全锁和没有锁屏的情况下显示
设置Notification的等级非常简单,只需在案例三四五增加一句:

同时,Notificatio还提供了其他方法:

设置Notification背景颜色
设置Notification的category接口,用来确定Notification的显示位置
分别看下ActivityA和ActivityB的布局文件,注意transitionName在哪个View:

分别看下ActivityA和ActivityB的Activity文件:


记得先将主题设置为NoActionBar主题,在布局中声明ToolBar

在Menu文件夹中创建一个Menu的XML文件

在代码中使用

修改一下布局,实现Toolbar侧滑菜单

在主代码中实现:





经典回顾源码下载

github:https://github.com/CSDNHensen/QunYingZhuang

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值