Android 5.x特性概览四

  上节,我们说了palatte及其特性,这里我们介绍Android 5.x的另一个特性视图与阴影。

  在第一节,我们就提到了Material Design 一大特性就是就是扁平化,倘若说 iOS 的扁平化设计太过于超前,让很多人还来不及从拟物转变到扁平,那么 Material Design 则是比iOS的扁平化效果更加接地气。通过展现生活中的材质效果、恰当地使用阴影和光线,配合平滑逼真的动画效果,模拟出一个动感十足又美丽大胆的视觉效果。

  阴影效果

  以往的Android View 通常只具有两个坐标——X 和Y,而在Android 5.X 中,Google 为其增加了一个新的坐标——Z,对应垂直方向上的高度变化。相信通过下图,大家可以很快了解Z 的意义。

  在 Android 5.X 中,View 的 Z 值由两部分组成,elevation 和 translationZ(它们都是 Android5.X 新引入的属性)。elevation 是静态的成员,translationZ 可以在代码中使用来实现动画效果,它们的关系如下所示。

  1. android:elevation 设置该组件“浮”起来的高度,to难过过设置该属性可以让该组件呈现3D效果。

  2. android:translationZ  设置该组件在Z方向(垂直屏幕方向)上的位移。

  Z轴的距离为Z = elevation + translationZ,我们可以在xml布局文件中设置elevation的值,相应源代码如下:  

  

android:elevation="XXdp"

  通过以下实例,演示了不同视图高度所显示效果的不同,XML 代码如下所示:

<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_margin="10dp"
        android:background="#00ff00" />

    <TextView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_margin="10dp"
        android:background="#00ff00"
        android:elevation="2dp" />

    <TextView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_margin="10dp"
        android:background="#00ff00"
        android:elevation="10dp" />

</LinearLayout>

  相应效果图如下:

  硬币有正反两面,同样,Android能够有xml设置属性,也当然可以用Java代码设置视图高度,相应Java代码如下:

view.setTranslationZ(XXX);

  当然,我们通常也使用属性动画来为视图高度改变的时候增加一个动画效果,代码如下所示。

if (flag) {
view.animate().translationZ(100);
flag = false;
} else {
view.animate().translationZ(0);
flag = true;
}

  这就是对Material Design中的阴影效果的介绍。

时间: 2024-08-06 10:33:45

Android 5.x特性概览四的相关文章

Android 5.x特性概览三

上节,对Material Design样式做了介绍,这节我们介绍Palette. 在Android发展的长河中,UI越来越成为Google的发展重心.上文提到Android 5.x 使用palette来提取颜色,从而使主题动态适用当前页面的色调,于是乎使整个app颜色色调更加和谐统一. Android 内置了几种提取色调的种类,如下所示. 1.Vibrant(充满活力的) 2.Vibrant dark(充满活力的黑) 3.Vibrant light(充满活力的亮) 4.Muted(柔和的) 5.

Android N 新特性

2016年5月19日,谷歌在美国加州的山景城举办了 Google I/O 开发者大会中发布.2016年6月,Android N正式命名为"牛轧糖" 本届I/O开发者大会上,Google重点介绍了Android系统三个维度:分别是性能.安全和生产力.其中性能主要新增了Vulkan API与JIT编译器(前者优化图形性能.或者加快软件安装速度):安全性包括新的数据加密方式.恶意网站识别.系统的实时更新:生产力方面加入了分屏多任务功能.程序的快速切换,所有应用都可以支持"多窗口模式

SharePoint 2016 的新特性概览(二)(What&#39;s New for IT Professionals in SharePoint Server 2016)

博客地址:http://blog.csdn.net/FoxDave SharePoint 2016 的新特性 三. 监测和数据(Insights and Data) 实时数据监测,包括对使用情况.存储.状况等的数据分析. 文档库中的开放文档格式(ODF),允许在文档库中创建ODF文档. 四. 云加速体验(Cloud Accelerated Experiences) 云端和本地服务器的合规性审查. 新的云搜索服务应用程序. 网站发布功能,将内网网站发布到外网. 新的工作组协作网站. 混和部署自动化

Android艺术开发探索第四章——View的工作原理(下)

Android艺术开发探索第四章--View的工作原理(下) 我们上篇BB了这么多,这篇就多多少少要来点实战了,上篇主席叫我多点自己的理解,那我就多点真诚,少点套路了,老司机,开车吧! 我们这一篇就扯一个内容,那就是自定义View 自定义View 自定义View的分类 自定义View的须知 自定义View的实例 自定义View的思想 一.自定义View的分类 自定义View百花齐放,没有什么具体的分类,不过可以从特性大致的分为4类,其实在我看来,就三类,继承原生View,继承View和继承Vie

Android M新特性Doze and App Standby模式详解

参考: Optimizing for Doze and App Standby Android M新特性Doze and App Standby模式详解 深入android6.0 设备 idle状态 Android M 的 Doze 模式下第三方推送服务还能用吗? 一.Optimizing for Doze and App Standby 从Android6.0开始,Android提供了两种省电延长电池寿命的功能:Doze和App Standby: 表现形式:当设备没有连接到电源,设备进入Doz

Android点击事件的四种写法

Android点击事件的四种写法 一.Android点击事件的四种写法 1.点击事件的第一种写法 .  写一个内部类.实现点击事件的接口 bt.setOnClickListener(new MyButtonListener()); 2.点击事件的第二种写法,匿名内部类 bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { callPhone(); } }); 3.点击事件的第三种

Android图表库MPAndroidChart(十四)——在ListView种使用相同的图表

Android图表库MPAndroidChart(十四)--在ListView种使用相同的图表 各位好久不见,最近挺忙的,所有博客更新的比较少,这里今天说个比较简单的图表,那就是在ListView中使用相同的图标,因为我们在下篇会讲解使用不同的图表,相同的图表还是比较简单的,我们来看下效果图 具体怎么去实现呢,这里我们先写点铺垫,比如我们需要一个基类的Activity ViewPagerBaseActivity package com.liuguilin.mpandroidchartsample

疯狂Android讲义 - 学习笔记(四)

Android应用通常有多个Activity,多个Activity组成Activity栈,当前活动的Activity位于栈顶.Activity相当于Java Web开发的Servlet.当Activity处于Android应用运行时,同样受系统控制.有生命周期. 4.1 建立.配置和使用Activity 4.1.1 Activity 建立自己的Activity需要集成Activity基类,在不同的应用场景,有时也能集成Activity的子类. Activity间接或直接继承了Context.Co

Android学习笔记(十四)——在运行时添加碎片(附源码)

在运行时添加碎片 点击获取源码 将UI分割为多个可配置的部分是碎片的优势之一,但其真正强大之处在于可在运行时动态地把它们添加到活动中. 1.使用上一篇创建的Fragments项目,在main.xml文件中注释掉两个<fragment>元素: 2.在FragmentActivity.java中添加下面的代码: FragmentManager fragmentManager = getSupportFragmentManager();//向活动添加碎片 FragmentTransaction fr