Android style & Theme 再探析(一)——你真的懂Style和Theme吗?

Android Style & Theme简略总结 ##.Style: style是一个特定样式view的属性的集合。一个style可以定义 比如 字体 颜色尺寸 背景等等特定属性。 ##.Theme: Theme 是一种应用于整个application,activity或指定Window整个继承结构的样式,而不仅仅是用于单个view。当你将style应用为Theme时,application或activity中的每一个view 都会应用它支持的每个style的属性。Theme还可以将style应用于非视图元素,例如stat... 阅读详情

@[TOC](Android style & Theme 再探析(一)——你真的懂Style和Theme吗?)

Style 和 Theme 在初学Android都是被各种视频一笔带过,对其理解就是style可以类似html的css 可以继承,可以各种地方直接引用做到直接管控,而theme更是一笔带过,然而当我学到了一个android 国外的style 和 Theme课程才发现,一切并非如此…

Android Theme目前的应用情况

一般情况下,我了解到的和平常搜索到的应用场景,一般情况都以处理window的标题栏和背景透明一类的内容,但我经过学习探究后才发现,我们对于这类的基础知识过于的不重视,其实Theme配合style可以做到很好的管控我们UI,做到皮肤切换,日夜间模式

Android Theme配合Style解决的问题 (WHY)

  1. 将默认的view样式修改为指定样式的样板代码,耗费时间却没有任何的技术含量,以前也会尝试使用style或者自定义组件去解决这样的问题,但这并不是最恰当的实现,后问笔者会阐述使用这种方式遇到的问题

  2. 在笔者公司UI资源紧张的情况,无法为所有app提供样式设计;内部应用直接由开发自己处理UI样式,导致app样式都比较混乱

  3. 在以前笔者没有重视style和Theme的配合使用,单单使用style管控UI元素,在app想实现日间模式,夜间模式,切换皮肤 等功能,变的异常困难。

Android Theme 和 Style (WHAT)

首先,我们来重新看一下官方定义的概念:

style官方原文:

A style is a collection of attributes that specify the appearance for a single View. A style can specify attributes such as font color, font size, background color, and much more.

笔者渣翻译:

style 是一个特定样式view的属性的集合。一个style可以定义 比如 字体 颜色尺寸 背景等等特定属性

Theme官方原文

A theme is a type of style that’s applied to an entire app, activity, or view hierarchy, not just an individual view. When you apply your style as a theme, every view in the app or activity applies each style attribute that it supports. Themes can also apply styles to non-view elements, such as the status bar and window background.

笔者渣翻译:

Theme 是一种应用于整个application,activity或view 整个继承结构的样式,而不仅仅是用于单个view。当你将style应用为Theme时,application或activity中的每一个view 都会应用它支持的每个style的属性。Theme还可以将style应用于非视图元素,例如status bar 和背景。

而我认为也是被很多人忽略的一个非常强大功能 —— 拓展并且自定义样式
官方原文:

When creating your own styles, you should always extend an existing style from the framework or support library so that you maintain compatibility with platform UI styles. To extend a style, specify the style you want to extend with the parent attribute. You can then override the inherited style attributes and add new ones.

即我们可以在theme中,直接定义我们所有view组件的默认样式,这对于我们的控件的样式提供了巨大的便利,且无需像style的定义那样,需要我们去书写备注,或者文档去说明去方便他人在多人开发中使用

实际使用展示(HOW)

针对app的Theme重写

<resources>

    <!-- Base application theme.设定我们的基础theme -->
    <style name="AppTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
        <!--
         此处定义大于minSdk的所有android版本可以适用Theme
        方便可以只需要写一份,统一管控
         -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <style name="EhiAppTheme" parent="AppTheme">
    <!--
        此处,继承appTheme定义不同sdk版本下添加的新Theme特性,添加到不同的value下面的style中,管控不同版本下的特性
    -->
        <!--重写style的默认样式-->
        <item name="buttonStyle">@style/ehiButton</item>
        <item name="android:checkboxStyle">@style/ehiCheckBox</item>
        
    </style>
     <!-- 部分代码忽略 -->
    <style name="ehiButton" parent="@style/Base.Widget.AppCompat.Button">
        <item name="android:background">@color/colorAccent</item>
        <item name="android:textColor">@color/white</item>
        <item name="android:textAppearance">@style/Base.TextAppearance.AppCompat.Small</item>
    </style>
    <style name="ehiCheckBox" parent="@style/Base.Widget.AppCompat.CompoundButton.CheckBox">
        <item name="android:background">@color/colorPrimaryDark</item>
        <item name="android:textColor">@color/white</item>
        <item name="android:textAppearance">@style/Base.TextAppearance.AppCompat.Display1</item>
        <item name="android:checked">true</item>
    </style>
   
</resources>

使用该Theme

  <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/EhiAppTheme"><!--引用定义的style-->
      
      <!--部分代码省略-->
    </application>

此时当我们再次编辑我们的layout文件时:

<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=".MDActivity">

    <Button
        android:id="@+id/btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="测试按钮" />


    <CheckBox
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="测试复选框" />

    <RadioGroup
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="测试1" />

        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="测试1" />
    </RadioGroup>

</LinearLayout>

使用效果展示

主题效果展示
可以看的出我们的布局文件只填写了,最基本的宽高和文本信息,还没有引入任何的style,便直接可以呈现此时一个默认的状态,减少了样板代码的同时,在多人开发中,其他人无需关心按钮的你是否定义过相关样式,也无需自己再重新定义,因为Theme使得许多view的样式变成了“所见即所得”状态!

再回到刚才提出的问题:

1.将默认的view样式修改为指定样式的样板代码,耗费时间却没有任何的技术含量…

此时,第一个问题已经,直接在用法示例中得到回答。

2.在笔者公司UI资源紧张的情况,无法为所有app提供样式设计…

在有了第一个基础上,我们就可以定义一套基础组件的样式皮肤,用于没有UI的android的项目,这对于我们的个人开发项目同样是一个福利,可以直接仿制或者引用他人的一套theme

3.在以前笔者没有重视style和Theme的配合使用,单单使用style管控UI元素,在app想实现日间模式,夜间模式,切换皮肤 等功能,变的异常困难。

这个只需要在前面的基础上,添加多套Theme利用java代码进行切换即可!

专题系列:
Android style & Theme 再探析(一)—— 你真的懂Style和Theme吗?
Android style & Theme 再探析(二) —— 一统View规范的大杀器——material design
Android style & Theme 再探析(三) —— 定制Theme示例和日夜间模式踩坑大汇总
Android style & Theme 再探析(四)——业务实践心得总结
博主博客:
http://www.whdreamblog.cn/

点云从入门到精通技术详解100篇-基于三维点云的机器人抓取位姿检测(续) 集到的深度信息会存在噪点,因此需要将生成的场景点云进行预处理,获得平滑、降采样处理场景点云,本文设计的预处理操作更能从冗杂的场景点云中提取清晰、平滑的目标点云,便于后续的抓取位姿采样,提高后续算法的处理效率。因此需要对场景点云进行适当的分割,仅保留目标物体的点云,整个过程可以通过。场较小时,空间中的点云密度会更加提高;觉子系统的效率,再保持全局点云几何形状不改变的前提下,通过对目标点云进行。体素降采样可以快速地减少点云数据并同时保持点云的形。个点,由于我们实施抓取的目标物体只占整个场景点云图的一部分, 阅读详情

相关推荐

CentOS 7下glibc升级到2.28的保姆级避坑指南(含GCC 7.3.1编译配置)

本文详细介绍了在CentOS 7系统中将glibc升级到2.28版本的完整流程,包括GCC 7.3.1的编译配置、环境变量设置、glibc编译的细节处理以及生产环境验证。文章特别强调了风险控制和避坑技巧,适用于需要提升系统兼容性的企业级用户。

weixin_29611239的博客 408

Android——Theme和Style-由浅入深,全面讲解

Theme和Style-由浅入深,全面讲解

6897

Tauri开发环境配置避坑指南:从Rust到Node.js的全流程实战

本文是一份详尽的Tauri开发环境配置实战指南,重点解析了从Rust工具链安装、Node.js版本管理到IDE配置的全流程。文章深入探讨了包管理器选择、依赖锁定、网络镜像加速等关键环节,并提供了开发与构建过程中典型问题的排查思路与解决方案,旨在帮助开发者高效避坑,顺利搭建跨平台桌面应用开发环境。

w3x4y的博客 292

Android之Theme和Style

低级扩展方式为保持与平台界面样式的兼容性,你应始终通过扩展框架或支持库中的现有样式来创建自己的样式。如需扩展样式,请使用 parent 属性指定要扩展的样式。然后,你可以替换继承的样式属性并添加新属性。例如:</推荐扩展方式当然上述做法其实并不规范,官方建议我们直接继承支持库中的样式(已定义好相关的style)。不过,你应始终继承 Android 支持库中的核心应用样式。为与 Android 4.0(API 14)及更高版本兼容,支持库中的样式会针对各版本中可用的界面属性进行优化。

iceFreedom的博客 903

【Python】多分类算法—Random Forest

【Python】多分类算法—Random Forest 本文将主要就Random Forest(随机森林)的多分类应用进行描述,当然也可运用于二分类中 文章目录【Python】多分类算法—Random Forest前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 本文主要引用的是sklearn 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import nump

weixin_43166884的博客 1万+

MATLAB 论文复现——面向电量-调频-容量市场的数据中心园区算力及电力资源规划

如何在保证数据中心服务质量的前提下,考虑数据中心负荷转移特性,并对其进行合理规划,对降低数据中心规划总成本及提升新型电力系统灵活性均有显著意义。然后,根据不同电力市场的结算规则,研究了数据中心园区参与电量-调频-容量市场的方式和经济收益。在此基础上,以综合成本最小化为目标,优化数据中心园区发电机、储能的建设容量以及服务器的建设数量。最后,以阿里巴巴公开运行数据为例,证明考虑多元电力市场能够大大降低数据中心规划成本,激励数据中心园区投资建设更多灵活性资源,为电网提供有效的调频服务和容量支撑。

sjr1478的博客 668

Android学习之路(25) Theme和Style

低级扩展方式为保持与平台界面样式的兼容性,您应始终通过扩展框架或支持库中的现有样式来创建自己的样式。如需扩展样式,请使用parent属性指定要扩展的样式。然后,您可以替换继承的样式属性并添加新属性。例如</style>推荐扩展方式当然上述做法其实并不规范,官方建议我们直接继承支持库中的样式(已定义好相关的style)。不过,您应始终继承 Android 支持库中的核心应用样式。为与 Android 4.0(API 级别 14)及更高版本兼容,支持库中的样式会针对各版本中可用的界面属性进行优化。

qq_32907491的博客 2202

K8s入门教程(一)

本教程提供了Kubernetes(K8s)的入门指南,涵盖了从基础概念到实战操作的全面内容。首先介绍了Kubernetes的定义和核心功能,如自动化部署、弹性伸缩、自我修复等。接着,详细讲解了如何在macOS上安装Minikube和kubectl工具,以及如何使用这些工具创建和管理Pod、Deployment和Service等核心资源。教程还包括了实战案例,如部署Nginx应用,并介绍了高级特性如滚动更新和自动伸缩。最后,提供了常见问题的解决方案,帮助用户快速上手和解决实际使用中的问题。

2401_82505179的博客 1689

Android style(样式) 和 theme(主题) 属性

Android style(样式) 和 theme(主题)

u012514113的专栏 9854

智能工厂评估模型研究

摘要:通过对国内外现有智能制造评估模型的研究,结合重庆制造业行业领跑者与落后者之间差距大的现状,以实现全要素全连接的数字化工厂为出发点,融合工业互联网标识,构建实践可行的智能工厂评估模型推动中小型企业参与智能制造转型,缓和两极分化问题。本评估模型包含工厂体系架构的3个层级,提供用于推动智能制造转型的参考,包括设计、生产、管理的全过程评估。关键词:智能制造评估模型;智能制造转型;全连接工厂;工业互联网标识0 引言受行业需求与技术创新的影响,全球制造业在历经了工业1.0机械化、工业2.0电气化和工业3.0自动

罗伯特技术屋 677

改进YOLOv9的CT图像肺结节检测与分类算法:从原理到实战

本文将详细介绍如何改进YOLOv9算法,使其更好地适应CT图像肺结节检测与分类任务。我们将从数据集准备、模型改进、训练优化到最终部署,完整呈现一个端到端的深度学习项目,并提供完整的代码实现。

YOLO 188

Android style & Theme 再探析(四)——业务实践心得总结

@[TOC](Android style &amp;amp;amp;amp; Theme 再探析(四)) 基于前几篇的探究,我们已经有了对一个app的theme和style的理论探究和demo描述了不少,那么接下来针对我在自己在app生产环境中的使用的一个使用心得总结 Android Theme的生产环境使用总结 本篇主要针对小伙伴如果要在自己的app中实践,整理以前混乱的theme和style的一个实践 针对T...

wanghao的专栏 355

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Android style & Theme 再探析(三)——定制Theme示例和踩坑大汇总

基于前两篇的文章的探究,本次带来的是皮肤切换和日夜间模式切换,以及基于重写部分控件展示Theme的作用;以及对于实际使用时的讲解,踩过的一些坑的汇总 Android Theme切换主题总结 笔者本文讲述在实践换肤以及日夜间模式切换的简单Demo Android Demo展示讲解 效果展示 由图可以看到,是本示例由多种Theme和夜间模式配合展示效果,并且针对已有的activity也进行变换,...

wanghao的专栏 553

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Android style & Theme 再探析(二) —— 一统View规范的大杀器——material design

在上一篇android style和Theme的探析中,笔者描述了自己对于它的理解与认识,但是笔者发现仅仅了解这些其实是不够的,在移动应用软件工程化以后,对于像Theme这种全局化的管控view样式来说,十分强大也是意味着十分危险的,因为app在足够庞大以后,Theme的随意改动都会引发,很多页面样式的改变,并且当你不够了解改变会影响到的部分时,这无疑是巨大的风险! View规范的现状 一般我...

wanghao的专栏 443

Android的theme和style

android的theme和style

qq_33464734的博客 681

Android开发之Theme、Style探索及源码浅析

由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!由于整个文档比较全面,内容比较多,篇幅不允许,下面以截图方式展示。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

2401_84121485的博客 1066

style与theme

在android开发中style和theme是开发者基础知识点,两者有很多容易混淆的地方,因此,总结一下其中的异同点: 一:概念    (1) Theme是针对窗体级别的,改变窗体样式的,如窗口标题、边框等。不能作用于单个View组件,是对整个应用的所有Activity或单个Activity起作用。    (2) Style是针对窗体元素级别的,改变指定控件或者Layout的样式

忘了时间的猪 300

Android应用开发中的风格和主题(style,themes)

http://www.oschina.net/discuss/thread/1373 当你设计你的程序的时候,你可以用风格和主题来统一格式化各种屏幕和UI元素。风格是一个包含一种或者多种格式化属性的集合,你可以将其用为一个单位用在布局XML单个元素当中。比如,你可以定义一种风格来定义文本的字号大小和颜色,然后将其用在View元素的一个特定的实例。主题是一个包含一种或者多

愤怒的可乐罐 1528

Android中的主题(theme)和样式(style)

在Android客户端开发中,往往要给用户一些很好的体验,那么就要用到主题和样式,可以用主题和样式来统一管理界面和UI组件。使组件和界面产生一些想要的效果。 一、主题和样式定义: 1、主题(Theme):主题只能针对Activity来说,不能给一个组件设置主题。主题就是包含一种或多种的格式化属性的集合,我们可以为一个Activity设置专门的theme,也可以为所有的Activity设置the

TigerChain 的码之路 3092

Android开发Style和Theme精准知识面总结,看到的赶紧收藏!

这块知识大部分同学都知道,但是同样比较碎,比如说定义一个Style,到底该用于主题还是用于某个view?再比如说Style的继承应该怎么用?等等…本文我将尽可能全面的将这块知识点总结一下。 资源位置 开发过程中style和theme等这些资源文件会放在res/values/文件夹下,都是xml文件。 attrs.xml colors.xml dimens.xml string.xml arrays.xml styles.xml themes.xml 以上这些xml文件项目中没有的话可以新建,xml命名

乂星人 1297

Android中Theme主题和Style样式使用介绍总结

1.Theme主题 1.1.Theme主题作用范围 Theme主要是针对应用级别的或者说窗体级别,可以设置应用主题(应用换肤效果)和Activity的主题;主题是不能应用在某一个单独的View中;或者说Theme是用来设置应用全局主题风格的,对整个应用或某个Activity存在影响。 1.2.Theme主题的定义 在AS中res/values/style.xml中定义,例如新建项目AS自动创建的Theme,是系统提供; &lt;!-- Base application theme. --&gt

Tiger的专栏 6515

android 主题和样式-style和Theme的区别和使用

项目中经常使用style和Theme,但却从来没有考虑过它们的区别,只会copy来copy去的,有时候还有些迷茫,为了彻底告别迷茫,现把这两者的区别和使用总结出来,供自己和大伙参考 一.作用域 Theme是针对窗体级别的,改变窗体样式。 Style是针对窗体元素级别的,改变指定控件或者Layout的样式 二.使用方式 Theme 1. 在res\values\ 下创建themes.

duanyu218的专栏 1783

总结一下Android中主题(Theme)的正确玩法

在AndroidManifest.xml文件中有&lt;application android:theme="@style/AppTheme"&gt;,其中的@style/AppTheme是引用的res/values/styles.xml 中的主题样式,也有可能是引用的 res/values-v11/styles.xml 或者 res/values-v14/styles.xml,这是根据运行此程序...

weixin_30653097的博客 4536

Android中Style和Theme的使用

本文转自:程序开发技术交流分享Style:Style是View中一些属性的集合,包括height,padding,font color,background等等,Style单独定义在xml文件中,类似与web页面中css的角色,将设计和内容分开,便于修改和重复使用。 定义Style:style文件需要保存在res/values目录下,文件名任意,但是必须是xml文件,sytle文件的根标记必须是。写了一个简单示例,效果如下:程序目录结构如下图,其中mystyle.xml是自定义的style文件。main.x

降龍 3万+

android的style和theme的区别

说白了Theme就是Style,只不过是另一个描述而已。 官方API    A theme is a style applied to an entire Activity or application, rather than an individual View  1、 style应用于单个View时,我们利用style属性进行引用  2、 style应用于Activity或A

Mr__ren的专栏 862

Android中样式style和主题Theme的使用总结

一.Style的使用使用style属性可以很方便的抽取一些属性,不用重复写很多相同的属性。二。设置全屏,这个应用比较多

wenzhi的博客 2万+
下一篇: Android style & Theme 再探析(二) —— 一统View规范的大杀器——material design
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值