Android5.0新特性

虽然6.0早就出了,但是呢,5.0用的都很少。

主要就是更换版本

较高,用户强烈要求才会更换。


Android 5.0新特性

  1. Material Theme
  2. View的阴影和裁剪
  3. Drawables图形资源
  4. Animations
  5. 新增控件-卡片和列表

http://developer.android.com/training/material/index.html

1.MaterialDesigh概述

材质设计,以抽象化的形式展现物理世界的特征。

Material 主题
  • 系统自带的主题

    1. @android:style/Theme.Material
    2. @android:style/Theme.Material.Light
    3. @android:style/Theme.Material.Light.DarkActionBar
  • 如何自定义主题

    参见http://developer.android.com/training/material/theme.html

    不同的Theme,不同的属性值。

  • 常用的样式属性

     <style name="RedTheme" parent="android:Theme.Material">
    
        <!-- 状态栏颜色,会被statusBarColor效果覆盖-->
        <item name="android:colorPrimaryDark">@color/status_red</item>
        <!-- 状态栏颜色,继承自colorPrimaryDark -->
        <item name="android:statusBarColor">@color/status_red</item>
        <!-- actionBar颜色 -->
        <item name="android:colorPrimary">@color/action_red</item>
        <!-- 背景颜色 -->
        <item name="android:windowBackground">@color/window_bg_red</item>
        <!-- 底部栏颜色 -->
        <item name="android:navigationBarColor">@color/navigation_red</item>
    
        <!-- ListView的分割线颜色,switch滑动区域色-->
        <item name="android:colorForeground">@color/fg_red</item>
        <!-- popMenu的背景色 -->
        <item name="android:colorBackground">@color/bg_red</item>
    
        <!-- 控件默认颜色 ,效果会被colorControlActivated取代  -->
        <item name="android:colorAccent">@color/control_activated_red</item>
    
        <!-- 控件默认时颜色  -->
        <item name="android:colorControlNormal">@color/control_normal_red</item>
        <!-- 控件按压时颜色,会影响水波纹效果,继承自colorAccent  -->
        <item name="android:colorControlHighlight">@color/control_highlight_red</item>
        <!-- 控件选中时颜色 -->
        <item name="android:colorControlActivated">@color/control_activated_red</item>
        <!-- Button的默认背景 -->
        <item name="android:colorButtonNormal">@color/button_normal_red</item>
    
        <!-- Button,textView的文字颜色  -->
        <item name="android:textColor">@color/white_text</item>
        <!-- RadioButton checkbox等控件的文字 -->
        <item name="android:textColorPrimaryDisableOnly">@color/white_text</item>
        <!-- actionBar的标题文字颜色 -->
        <item name="android:textColorPrimary">@color/white_text</item>
    </style>
    

2.阴影和裁剪

Z轴属性
  • Z = elevation + translationZ

    android:elevation   //静态Z轴的高度。相对于父控件的高度
    android:translationZ    //Z轴偏移的高度。
    
  • 高度决定了View的遮盖关系,遮盖关系决定绘制时机。

阴影轮廓
android:outlineProvider:
none:不显示阴影
background :按照显示区域来绘制阴影
bounds :在View的边界描绘阴影
paddedBounds: 在View边界描绘阴影,但会忽略paddingTop和paddingLeft

View都是矩形的,阴影默认是沿着背景的边界绘制。如果背景是矩形了自然没有问题。 如果是圆形的,分两种情况:

  1. 通过shape定义的,系统可以识别出真实边界,阴影绘制没有问题.
  2. 带有透明通道的png图片,会当成矩形绘制阴影。因为系统无法排除透明通道,识别出真实的边界,

为了避免圆形的View显示矩形的阴影,,View增加了一个新的描述来指明内容显示的形状,这就是轮廓。

  • 布局设置:

    android:outlineProvider="none|background|bounds|paddedBounds" 
    
    none 不显示阴影
    background :按照显示区域来绘制阴影
    bounds :在View的边界描绘阴影
    paddedBounds: 在View边界描绘阴影,但会计算paddingTop和paddingLeft
    
  • 代码设置:

    圆形png图片因为无法排除透明通道,无法识别出真实边界,所以可以自定义,代码提供轮廓

    View.setOutlineProvider(new ViewOutlineProvide(){
         public void getOutline(View view, Outline outline) {
            //矩形,圆形,圆角矩形,Path。除了正常的阴影,也可以自定义奇葩的阴影效果
             outline.setOval(0, 0, view.getWidth(), view.getHeight());
        }
    });
    
轮廓裁剪

由于轮廓可以自定义,当轮廓小于View的大小,View并不会变小。如果希望View大小跟轮廓匹配,可以裁剪View的大小以适应轮廓,这样也可以通过裁剪生成新的形状。

Outline.canClip();//是否可以被裁剪。目前支持矩形,圆形,圆角矩形
View.setClipToOutline(true);//允许裁剪View大小以适应轮廓
  • 只能往小了裁,不能往大了裁。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值