Android中的Style、Theme详解已经发展史
Style介绍
style就像单词意思一样,风格,这里面是属性的集合,如果页面中有许多控件的属性值相同那么就可以把这些属性抽出来放到style里面,定义也很简单,在values文件下的styles里面创建就可以了。
例如:
Style的使用
这个相对来说就简单了,系统中也为我们预先定义了许多style,看了上一篇介绍的attr相信系统定义的这些style也会看懂吧。
文章最早发布于我的微信公众号 Android开发者家园 中,欢迎大家扫描下面二维码关注微信公众获取更多知识内容。
本文为sydMobile原创文章,可以随意转载,但请务必注明出处!
Theme
Theme和Style使用的是同一个元素标签<style>
区别在与 Theme 与 Style 作用的范围不同,Theme 要求你设置到AndroidMainfest.xml的<application>
或者<activity>
中。这两种设置,在不同的地方作用范围也是不一样的。
在<application>
中设置的话,那么就是说你的整个应用的所有Activity都是使用的 Theme 里面的风格了。在<activity>
中设置的话,只是被设置的Activity中的 view 使用这个 Theme 里面的属性。
说起Theme来,就不得不说Android主题的进化史了,Theme的进化史也是Android系统的进步史。
Theme进化史
其实Theme没有我们想象中的那么高大上,就是主题。所谓的主题,我们来举个例子:
比如我们房子装修的进化史:刚开始住的都是破旧的土房,所以那管什么房子装修啊,能住就行了。最开始的Android也是这样的,刚开始谁管你页面内容丑不丑啊,能用就行了。你先在回头看看系统在3.0以前的手机,保证你能被丑哭了。随着社会的发展我们住上了瓦房子,里面也该稍微装修一下了,对应Android系统来说,在3.0以后Android系统也有了设计主题(Honeycomb holograghic theme全息主题),看上去好看一些了。再后来大家都住上了楼房,就有了装修样式。对应Android系统,在5.0的时候引入了Materail Design Theme 到此为止Android系统在主题上已经有了质的改变。
下面对应这几个样式我们来分别说一下,并简单展示一下对应的APP运行出来是什么样子的。
Theme的基本类(所有Theme的父类)
android:Theme API 1 开始
这个Theme是最基础的Theme后面的Android Theme都是在这个基础上进行的改变
Theme基础说明
下面是样式是Theme的程序运行的结果
页面中设置Button的样式
点击Button的时候的呈现效果
CheckBox和ProgressBar的样式展现效果
Dialog 样式
最初的时候Android开发就是使用的这个Theme,这个针对的只是API 11之前开发APP的,所以
在现在说来这个主题已经过时了,不过后API新出来的主题都是继承了这个主题。
在 API11之前开发出来的软件如果使用默认主题的话,按钮为白色,点击事件是黄色,总之就是
很丑陋,没有设计美感。你可以运行一个Android3.0的模拟机看看系统画面就知道这个Theme了(注意一定要是原始Android系统)
Holo主题
在Android3.0(API 11 开始引进,Google推出了Holo主题(Honeycomb holograghic theme全息主题))。
这个主题比起之前的主题有了很大的变化。之后在4.0(API14)的时候google又发布了更加规范的设计Android Design,这样就有更多的Android应用采用了Holo主题了。所以我们一般认为是在Android4.0后用了Holo主题,其实在Android3.0的时候就已经引进了,在4.0的时候才更加规范了。
如果你想要你的 App 在 Android4.0 之前的手机上显示为Holo主题的话应该怎么做呢?很简单,这个时候就需要我们的v4、v7包了,这个时候就体现这两个包的价值了,其实这俩包就是为了你的App可以在老版本的Android系统上使用最新的 Android API 功能所诞生的。v4的包意思就是兼容到API为4的android手机(Android1.6),v7的包是兼容到API为7的Android手机(Android2.1),如果你考虑到你的程序在1.6以上的Android系统上可以使用Holo主题的话,就使用你的compileSdkVersion的SDK版本所对应的兼容包里面的样式就可以了。关于兼容包的内容之后再单独写篇文章介绍一下吧。
采用Holo主题的APP的运行效果
CheckBox和ProgressBar的样式
点击ListView的时候的效果
看起来是不是比最初的Theme要好很多啊,感觉很有科技感把。
Materail Theme
最有设计艺术的 Theme 来了,早前的UI都是拿着苹果手机的APP来设计APP的样式,是因为Android早期确实没有什么设计美感,在Android5.0就不同了,可以说Android5.0是Android的一个分水岭把,从Android5.0以后Android无论在运行还是设计美感上都一点也不输给iOS了。在Android5.0,Google推出了 Material theme(材料设计),这个设计可谓是重磅啊。这个设计风格很多iOS的应用也在使用。
Material Design官网的介绍:Material Design 是我们将经典的设计原则和科技、创新相结合而创造的设计语言。这份文档会随着我们对 Material Design 的探索而不断更新。
这是所有优秀的设计师都应该学习的设计风格,如果设计出一款完全符合Material Design的APP,肯定会让用户眼前一亮!
Material Design的官网 :https://material.io/
中文翻译: https://www.mdui.org/design/
许多优秀的APP设计就是来自官网的灵感
具体的样式风格种类可以参考:https://blog.csdn.net/tuke_tuke/article/details/73188426 总结的很详细
小的知识点
v7包内的Activity类的样式必须和v7包内的Theme搭配如果Activity继承自普通包内的Activity的话,则样式不建议使用v7包内,如果使用v7包里面的样式也达不到想要的兼容效果,会根据手机系统的版本出现不同的Theme,所以v7包里面的Theme还是要和v7包内的Activity搭配。
compile ‘com.android.support:appcompat-v7:24.2.1’
v7后面的24.2.1说的这个v7包推出的版本号,也就是API24推出的,如果后面是小于21的话,则v7包内的样式兼容的就是Holo样式而不是Materail样式了,也就是说虽然都是v7包,但是版本不同,里面对应的内容也是不同的。
一个APP好的设计应该是在有自己的Theme但是要遵循Materail设计,我们应该定义好属于我们自己的Theme,应用到APP的风格中,所有的控件风格应该是在value中统一定义的。
如果系统默认定义的某个样式不符合你审美,你就可以定义自己的Theme,不过要继承系统的Theme,然后修改里面的某一方面的样式风格就可以了。比如修改Button的默认样式风格等等,都是可以的!
更多资料干货可以关注我的公众号!
个人创建了一个微信群,里面有行业的大佬,会不断的分享一些优质文章,交流技术,谈天说地。想要加入的可以添加我好友,拉你进群。早点找到组织,困惑会在交流中消失!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
iOS使用锁屏监听的私有API被拒 com.apple.springboard.lockcomplete
最近公司有个项目需要对锁屏进行监控以便进行一些操作,然后在更新新版本的时候,审核竟然被拒绝了。原因竟然是调用了 Apple 不允许使用的 锁屏API ,如下方法一;后来改成方法二,终于审核通过了。 如果不确定是哪个第三方使用了,这个可以cd 到项目根目录: grep -R 'com.apple.springboard.lockcomplete' * 他会检索出来,哪使用了 锁屏监听 方法一: 导入头文件和宏定义 // AppDelegate.m #import <notify.h> #define NotificationLock CFSTR("com.apple.springboard.lockcomplete") #define NotificationChange CFSTR("com.apple.springboard.lockstate") #define NotificationPwdUI CFSTR("com.apple.springboard.hasBlankedScreen") #define LOCK_SCREEN_NOTIFY @"LockScreen...
-
下一篇
Android性能分析工具简介
在Android项目开发工程中,功能开发只是其中的一部分,更多的时候是优化,优化除了个人的良好习惯,往往还需要借助第三方工具。本文罗列Android优化过程中的一些常用工具借助这些工具,可以很方便的帮助我们进行性能的分析,进而进行产品的优化。Android应用优化主要从页面优化,内存优化,电量优化,GPU优化和网络优化等方面着手,涉及的知识也比较广泛,下面是优化的一些常见工具。 Android官方工具 Android官方提供了很多的优化工具,很多工具已经自动集成到Android Studio的集成开发环境中,下面就这些工具做一个简单的介绍。 StrictMode "严格模式", 主要用来限制应用做一些不符合性能规范的事情. 一般用来检测主线程中的耗时操作和阻塞。开启StrictMode后, 如果线程中做一些诸如读写文件, 网络访问等操作, 将会在Log console输出一些警告, 警告信息包含Stack Trace来显示哪个地方出了问题。 使用及更多的介绍可以访问:https://developer.android.com/reference/android/os/StrictMod...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 2048小游戏-低调大师作品
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- MySQL数据库在高并发下的优化方案
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2配置默认Tomcat设置,开启更多高级功能