走着官方的教程入门Material Design(一)
又到期末了,学习下Google的材料设计。写下此文记录自己的同时,分享给需要的同学,若发现文中有什么问题和不对,欢迎指出
使用 Material Design 创建新应用
首先需要使用材料主题
如果是在5.0及以上的系统,可以直接使用材料主题。否则,就需要做5.0之前系统的兼容
引用Google官方的话:
您可对您的应用进行配置,使应用能够在支持它的设备上使用材料主题,并且能够在运行早期版本 Android 的设备上还原至早期版本的主题
具体操作就是:
- 定义备用样式 style和v-21的style
- 提供备用布局 xx布局.xml和v-21的xx布局.xml
- 使用支持内容库 使用v7支持库
定义备用样式
定义一个从 res/values/styles.xml 中的早期版本主题(例如 Holo)继承的主题。
定义一个从 res/values-v21/styles.xml 中的材料主题继承且拥有相同名称的主题。
在清单文件中将此主题设置为您的应用主题。
//5.0以上系统使用的主题(res\values-v21文件夹中)
<style name="AppTheme" parent="android:Theme.Material.Light">
<!-- Customize your theme here. -->
</style> //5.0以下系统使用的主题(res\values文件夹中)
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- Customize your theme here. -->
</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/内继承这些风格)。
具体操作如下:
像平时一样在layout目录里新建布局文件( 例: activity_main.xml )
在里面书写布局属性(例如: 新建一个TextView )
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/black"
android:padding="5dp"
android:text="@string/app_name"
android:textColor="@android:color/white"
android:textSize="18sp" />
可以看出5.0以上的效果除了两者的ActionBar有所不同,其余没有明显差别
现在给TextView加上Material Design新增的视图静态高度属性: elevation (ps:还要一个动画用的动态高度转换)
android:elevation="20dp"
加上之后,AS就会提示我们该属性只能使用在5.0(Api 21)系统之上
于是按着AS的提示来,Ctrl+Enter,在layout-v21文件夹复写该布局文件,然后把
android:elevation="20dp"
移到v-21布局文件里
为了看出加了elevation之后的效果,我们还需要给TextView加个简单的背景轮廓(shape).
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="5dp" />
<solid android:color="@android:color/black" />
</shape>
两者布局
//layout文件夹中 activity_main
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/tv_back"
android:padding="5dp"
android:text="@string/app_name"
android:textColor="@android:color/white"
android:textSize="18sp" />
//layout-v21文件夹中 activity_main
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/tv_back"
android:elevation="15dp"
android:padding="5dp"
android:text="@string/app_name"
android:textColor="@android:color/white"
android:textSize="18sp" />
其实我们应该按照官方的将两者重复的属性写到样式(style)里复用,这里暂时就不了_
比较两者
现在就能看出两者的区别了
使用V7支持库
前面的方式都没有使用V7支持库,在v-21文件夹(style和layout)中复写只是为了让应用能在5.0以下和5.0以上的系统正常运行,所以材料设计都只能显示在5.0以上的系统
//v7包Gradle依赖
compile 'com.android.support:appcompat-v7:21.0.+'
官方的V7包给下面这些组件提供了Material Design 风格,让材料设计在5.0以下的系统也能显示
- EditText
- Spinner
- CheckBox
- RadioButton
- SwitchCompat
- CheckedTextView
这些控件都在android.support.v7.widget.AppCompatView包下
//例如EditText
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/app_name"
android:padding="5dp"
android:textSize="18sp" />
同时要在我们的主题(style)里加上这段颜色配置,因为AppCompatTextView默认是从colorAccent着色的
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/my_red</item>
效果图
以上只是小生简单的使用了Material Design。主要是为了熟悉要在应用中使用材料设计,需要注意的地方和正确方法。后面继续学习更加好看的材料设计_
走着官方的教程入门Material Design(一)的更多相关文章
- 官方 Material Design App
[转]MaterialDesignCenter 发表回复 转: https://github.com/lightSky/MaterialDesignCenter MaterialDesignCente ...
- 直接拿来用!十大Material Design开源项目
来自:http://www.csdn.net/article/2014-11-21/2822753-material-design-libs/1 介于拟物和扁平之间的Material Design自面 ...
- 十大Material Design开源项目
介于拟物和扁平之间的Material Design自面世以来,便引起了很多人的关注与思考,就此产生的讨论也不绝于耳.本文详细介绍了在Android开发者圈子里颇受青睐的十个Material Desig ...
- Android入门3:从Toolbar到Material Design
在Android5.0(API 21)之后,Toolbar被Google推广,逐渐走入大家视野.具体关于Actionbar和Toolbar的对比就不多啰嗦了,跟着潮流走是没错的.下面先上张简单的效果图 ...
- Asp.Net MVC4.0 官方教程 入门指南之五--控制器访问模型数据
Asp.Net MVC4.0 官方教程 入门指南之五--控制器访问模型数据 在这一节中,你将新创建一个新的 MoviesController类,并编写代码,实现获取影片数据和使用视图模板在浏览器中展现 ...
- Asp.Net MVC4.0 官方教程 入门指南之四--添加一个模型
Asp.Net MVC4.0 官方教程 入门指南之四--添加一个模型 在这一节中,你将添加用于管理数据库中电影的类.这些类是ASP.NET MVC应用程序的模型部分. 你将使用.NET Framewo ...
- Asp.Net MVC4.0 官方教程 入门指南之三--添加一个视图
Asp.Net MVC4.0 官方教程 入门指南之三--添加一个视图 在本节中,您需要修改HelloWorldController类,从而使用视图模板文件,干净优雅的封装生成返回到客户端浏览器HTML ...
- Asp.Net MVC4.0 官方教程 入门指南之二--添加一个控制器
Asp.Net MVC4.0 官方教程 入门指南之二--添加一个控制器 MVC概念 MVC的含义是 “模型-视图-控制器”.MVC是一个架构良好并且易于测试和易于维护的开发模式.基于MVC模式的应用程 ...
- Apple官方IOS开发入门教程[v0.2]
今天,又跑去找IOS开发入门教程了,结果发现没什么好的PDF. 后来发现,原来苹果官方有开发入门教程,而且写的很好.所以整理出来了,给大家分享一下. 我就不在这里贴pdf的内容了,下面有苹果官方教程的 ...
随机推荐
- sass调试--页面看到sass文件而不是css文件问题
在浏览器页面有时看到sass文件而不是css文件问题,其主要由于sass开启了source-map(调试)功能,问题如下图: sass调试 sass调试需要开启编译时输出调试信息和浏览器调试功能,两者 ...
- Windows Phone后台音乐播放本地代理实现讨论
前一篇文章讨论的wp平台音乐播放的一些遇到的问题,经过苦思冥想和多方参考安卓实现:发现我们可以考虑一种本地代理的思想来完成我们的边听边存,并且流畅拖动进度条.希望大家一起讨论.可以下载我的代码一同研究 ...
- 使用MyXls,出现访问被拒绝情况
MyXls 作为一款比较好用的 操作Excel 的开源项目. 最近日常偶然发现报权限的问题,导出xls失败,处理方式以下: 如报上图所示错误,则需要在web.config中 <system.we ...
- mysql中连接失败2003错误解决办法
在使用mysql数据库,新建连接时,会报2003-Can't connect to server on 'localhost'(10038)错误,原因主要是MYSQL服务没有启动起来,但是进入:计算机 ...
- [SLAM] Studying Guidance
Books from Zhihu: 幽默一把 看完Gonzalez:嗯,好像很好玩的样子,我也来搞一搞.看完Price:什么鬼,怎么这么多公式,公式看不懂肿么破.看完Szeliski:原来用一千页的书 ...
- Hadoop入门进阶课程8--Hive介绍和安装部署
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan ...
- NoSuchMethodError: antlr.collections.AST.getLine()I
错误完整表述: Filter execution threw an exception] with root cause java.lang.NoSuchMethodError: antlr.coll ...
- suricata学习笔记1--初步认识
1.前言 最近工作需要对网站的关键字进行检测,找出敏感词.这个过程需要对报文进行收集.解码.检测和记录日志.当前只是简单实现功能,根据关键字进行简单的匹配,而没有进行关键字的语义分析.导致的结果就是 ...
- 开放产品开发(OPD):OPD框架
在 开放产品开发(OPD):开篇 中讲了一下OPD是什么,以及它主要指引的方法,这篇文字将给大家介绍一下OPD框架. 一个公司有三种经营模式,像游戏代理的属于运营型,做企业定制项目管理软件的属于项目型 ...
- Python内置函数解析
我们知道,为了方便使用,python内置了一系列常用及关键的函数,如type().下面将对这些函数进行逐一分析.解释. Python内置函数表: 1. abs():返回绝对值.如abs(-1)= 1. ...