又到期末了,学习下Google的材料设计。写下此文记录自己的同时,分享给需要的同学,若发现文中有什么问题和不对,欢迎指出

使用 Material Design 创建新应用

首先需要使用材料主题

如果是在5.0及以上的系统,可以直接使用材料主题。否则,就需要做5.0之前系统的兼容

引用Google官方的话:

您可对您的应用进行配置,使应用能够在支持它的设备上使用材料主题,并且能够在运行早期版本 Android 的设备上还原至早期版本的主题

具体操作就是:

  1. 定义备用样式 style和v-21的style
  2. 提供备用布局 xx布局.xml和v-21的xx布局.xml
  3. 使用支持内容库 使用v7支持库

定义备用样式

  1. 定义一个从 res/values/styles.xml 中的早期版本主题(例如 Holo)继承的主题。

  2. 定义一个从 res/values-v21/styles.xml 中的材料主题继承且拥有相同名称的主题。

  3. 在清单文件中将此主题设置为您的应用主题。

    1. //5.0以上系统使用的主题(res\values-v21文件夹中)
    2. <style name="AppTheme" parent="android:Theme.Material.Light">
    3. <!-- Customize your theme here. -->
    4. </style>
    5. //5.0以下系统使用的主题(res\values文件夹中)
    6. <style name="AppTheme" parent="Theme.AppCompat.Light">
    7. <!-- Customize your theme here. -->
    8. </style>

提供备用布局

Google是这样说的

您可在res/layout-v21/内创建用于 Android 5.0(API 级别 21)的布局文件,同时也可在res/layout/内创建用于早期版本 Android 的备用布局文件。

例如,res/layout/my_activity.xml是res/layout-v21/my_activity.xml的备用布局。

为避免代码重复,请在res/values/内定义您的风格,在res/values-v21/内为新 API 修改风格,以及使用风格继承(即:在res/values/内定义基础风格,然后在res/values-v21/内继承这些风格)。

具体操作如下:

  1. 像平时一样在layout目录里新建布局文件( 例: activity_main.xml )

  2. 在里面书写布局属性(例如: 新建一个TextView )

    1. <TextView
    2. android:layout_width="wrap_content"
    3. android:layout_height="wrap_content"
    4. android:background="@android:color/black"
    5. android:padding="5dp"
    6. android:text="@string/app_name"
    7. android:textColor="@android:color/white"
    8. android:textSize="18sp" />

可以看出5.0以上的效果除了两者的ActionBar有所不同,其余没有明显差别

现在给TextView加上Material Design新增的视图静态高度属性: elevation (ps:还要一个动画用的动态高度转换)

  1. android:elevation="20dp"

加上之后,AS就会提示我们该属性只能使用在5.0(Api 21)系统之上

于是按着AS的提示来,Ctrl+Enter,在layout-v21文件夹复写该布局文件,然后把

  1. android:elevation="20dp"

移到v-21布局文件里

为了看出加了elevation之后的效果,我们还需要给TextView加个简单的背景轮廓(shape).

  1. <shape xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:shape="rectangle">
  3. <corners android:radius="5dp" />
  4. <solid android:color="@android:color/black" />
  5. </shape>

两者布局

  1. //layout文件夹中 activity_main
  2. <TextView
  3. android:id="@+id/tv"
  4. android:layout_width="wrap_content"
  5. android:layout_height="wrap_content"
  6. android:background="@drawable/tv_back"
  7. android:padding="5dp"
  8. android:text="@string/app_name"
  9. android:textColor="@android:color/white"
  10. android:textSize="18sp" />
  11. //layout-v21文件夹中 activity_main
  12. <TextView
  13. android:id="@+id/tv"
  14. android:layout_width="wrap_content"
  15. android:layout_height="wrap_content"
  16. android:background="@drawable/tv_back"
  17. android:elevation="15dp"
  18. android:padding="5dp"
  19. android:text="@string/app_name"
  20. android:textColor="@android:color/white"
  21. android:textSize="18sp" />

其实我们应该按照官方的将两者重复的属性写到样式(style)里复用,这里暂时就不了_

比较两者



现在就能看出两者的区别了

使用V7支持库

前面的方式都没有使用V7支持库,在v-21文件夹(style和layout)中复写只是为了让应用能在5.0以下和5.0以上的系统正常运行,所以材料设计都只能显示在5.0以上的系统

  1. //v7包Gradle依赖
  2. compile 'com.android.support:appcompat-v7:21.0.+'

官方的V7包给下面这些组件提供了Material Design 风格,让材料设计在5.0以下的系统也能显示

  • EditText
  • Spinner
  • CheckBox
  • RadioButton
  • SwitchCompat
  • CheckedTextView

这些控件都在android.support.v7.widget.AppCompatView包下

  1. //例如EditText
  2. <android.support.v7.widget.AppCompatEditText
  3. android:layout_width="match_parent"
  4. android:layout_height="wrap_content"
  5. android:hint="@string/app_name"
  6. android:padding="5dp"
  7. android:textSize="18sp" />

同时要在我们的主题(style)里加上这段颜色配置,因为AppCompatTextView默认是从colorAccent着色的

  1. <item name="colorPrimary">@color/colorPrimary</item>
  2. <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
  3. <item name="colorAccent">@color/my_red</item>

效果图

以上只是小生简单的使用了Material Design。主要是为了熟悉要在应用中使用材料设计,需要注意的地方和正确方法。后面继续学习更加好看的材料设计_

走着官方的教程入门Material Design(一)的更多相关文章

  1. 官方 Material Design App

    [转]MaterialDesignCenter 发表回复 转: https://github.com/lightSky/MaterialDesignCenter MaterialDesignCente ...

  2. 直接拿来用!十大Material Design开源项目

    来自:http://www.csdn.net/article/2014-11-21/2822753-material-design-libs/1 介于拟物和扁平之间的Material Design自面 ...

  3. 十大Material Design开源项目

    介于拟物和扁平之间的Material Design自面世以来,便引起了很多人的关注与思考,就此产生的讨论也不绝于耳.本文详细介绍了在Android开发者圈子里颇受青睐的十个Material Desig ...

  4. Android入门3:从Toolbar到Material Design

    在Android5.0(API 21)之后,Toolbar被Google推广,逐渐走入大家视野.具体关于Actionbar和Toolbar的对比就不多啰嗦了,跟着潮流走是没错的.下面先上张简单的效果图 ...

  5. Asp.Net MVC4.0 官方教程 入门指南之五--控制器访问模型数据

    Asp.Net MVC4.0 官方教程 入门指南之五--控制器访问模型数据 在这一节中,你将新创建一个新的 MoviesController类,并编写代码,实现获取影片数据和使用视图模板在浏览器中展现 ...

  6. Asp.Net MVC4.0 官方教程 入门指南之四--添加一个模型

    Asp.Net MVC4.0 官方教程 入门指南之四--添加一个模型 在这一节中,你将添加用于管理数据库中电影的类.这些类是ASP.NET MVC应用程序的模型部分. 你将使用.NET Framewo ...

  7. Asp.Net MVC4.0 官方教程 入门指南之三--添加一个视图

    Asp.Net MVC4.0 官方教程 入门指南之三--添加一个视图 在本节中,您需要修改HelloWorldController类,从而使用视图模板文件,干净优雅的封装生成返回到客户端浏览器HTML ...

  8. Asp.Net MVC4.0 官方教程 入门指南之二--添加一个控制器

    Asp.Net MVC4.0 官方教程 入门指南之二--添加一个控制器 MVC概念 MVC的含义是 “模型-视图-控制器”.MVC是一个架构良好并且易于测试和易于维护的开发模式.基于MVC模式的应用程 ...

  9. Apple官方IOS开发入门教程[v0.2]

    今天,又跑去找IOS开发入门教程了,结果发现没什么好的PDF. 后来发现,原来苹果官方有开发入门教程,而且写的很好.所以整理出来了,给大家分享一下. 我就不在这里贴pdf的内容了,下面有苹果官方教程的 ...

随机推荐

  1. WCF安全3-Transport与Message安全模式

    概述: WCF的安全传输主要涉及认证.消息一致性和机密性三个主题.WCF采用两种不同的机制来解决这三个涉及传输安全的问题,一般将它们成为不同的安全模式,即Transport安全模式和Message安全 ...

  2. Mysql中的各种timeout

    在使用MySQL的过程中,你是否遇到了众多让人百思不得其解的Timeout?那么这些Timeout之后,到底是代码问题,还是不为人知的匠心独具?本期Out-man,讲述咱们MySQL DBA自己的Ti ...

  3. SCRUM项目 4.0

    4.0----------------------------------------------- 1.准备看板. 形式参考图4. 2.任务认领,并把认领人标注在看板上的任务标签上. 先由个人主动领 ...

  4. UnityShader快速上手指南(四)

    简介 由于其他项目中断了几天更新,继续~~ 这一篇主要是讲光照的(包含漫反射和高光以及多光源的处理) 还是先来看看具体效果(多光源后面单独展示) 有了基本的光照处理之后越来越有立体感了有不有 ╮(╯▽ ...

  5. 计算html标签textarea字符长度

    今天学习jQuery,做练习计算html标签textarea字符长度,先添加一个视图操作(Action): 创建一个视图,并按下面顺序标记1,2,3进行写html或javascript脚本: 其中标记 ...

  6. AEAI DP开发平台升级说明

    本次发版的AEAI DP_v3.5.0版本为AEAI DP _v3.4.0版本的升级版本,该产品现已开源并上传至开源社区http://www.oschina.net/p/aeaidp. 1 升级说明 ...

  7. C#接口知识大全收藏

    第一节 接口慨述 接口(interface)用来定义一种程序的协定.实现接口的类或者结构要与接口的定义严格一致.有了这个协定,就可以抛开编程语言的限制(理论上).接口可以从多个基接口继承,而类或结构可 ...

  8. 重新想象 Windows 8 Store Apps (41) - 打印

    [源码下载] 重新想象 Windows 8 Store Apps (41) - 打印 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 打印 示例1.需要打印的文档Pr ...

  9. python 的import机制2

    http://blog.csdn.net/sirodeng/article/details/17095591   python 的import机制,以备忘: python中,每个py文件被称之为模块, ...

  10. Unity3D脚本语言UnityScript初探

    译者注: Unity3D中支持三种语言:JavaScript.C#.Boo,很多人不知道如何选择,通过这篇译文,我们可以搞清楚这三者语言的来龙去脉,对选择主语言有一定的借鉴意义. 首先,Unity是基 ...