支持库和应用条

news2024/11/27 19:57:07

每个Android新版本都会引入一些新特性,不过并不是每个人都能做到Android一推出新版本就升级到那个最新版本,实际上,大多数人都至少落后一个版本。而支持库允许在老版本的Android上使用新特性

Andriod支持库提供了对Android老版本的向后兼容性,这些支持库并不属于Android主版本,支持库中包含开发人员可以在应用中使用的Android新特性。提供支持库意味着你可以为使用老设备的用户和使用更新设备的用户提供同样的体验,尽管他们使用的Android版本不同。

下面是一些支持库的例子
v4支持库:这个支持库包含的特性最多,例如,它支持应用组件和用户界面特性。
v7 Appcompat库:包括应用条支持。
v7 Cardview库:增加了对CardView部件的支持,允许在卡片中显示信息。
约束布局库:允许创建约束布局。
v7 Recycleview库:增加了对RecycleView部件的支持。
设计支持库: 增加了对额外组件的支持,如标签页和导航抽屉。
每个库都包含一组特定的特性。

v7 AppCompat库包含可用于老版本Android的一组最新的主题:实际上,这些主题可以用于几乎所有设备。
接下来将在应用中使用这个库中包含的一个主题,这回增加一个应用条,而且在指定的所有Android版本上都有同样的表现。
在Andoird Studio中创建一个新Android工程,名为Bits and Pizzas.

一、增加v7 AppCompat支持库
在AS中点击File中的Project Structure。
在这里插入图片描述
点击Dependencies中的app,如图所示单击右侧的加号添加Library Dependency。
在这里插入图片描述
在里面搜索appconpat-v7添加即可。
在这里插入图片描述
一旦在工程中增加了AppCompat支持库,就可以在你的应用中使用这个支持库的资源了,在这里我们希望应用其中一个主题,为MainActivity增加一个应用条。

二、AppCompatActivity允许你使用AppCompat主题
想要使用Appcompat主题,就需要使用一种特殊类型的活动,名为AppCompatActivity。这是Activity的一个子类。这个类在AppCompat支持库中,设计用来处理AppCompat主题。如果想要一个应用条,能够提供对Android老版本的向后兼容性,你的活动就要扩展AppCompatActivity类而不是Activity类。
MainActivity应当是AppcompatActivity。

三、使用AndroidManifest.xml可以改变应用条的外观。
观察以下代码:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.BitsAndPizzas"
        tools:targetApi="31">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

android:icon属性为应用指定一个图标。这个图标作为应用的启动图标,如果你使用的主题会在应用条中显示一个图标,就会使用这个图标。图标是一个mipmap资源,这是一种可以用作为应用图标的图像,它们保存在app/src/main/res中的mipmap资源文件夹中。
android:label属性描述一个对用户友好的标签,它会显示在应用条中,在上面的代码中,< application >标签使用这个属性来为整个应用指定一个标签,也可以为< activity >标记增加这个属性,这会为一个活动指定标签。
android:theme属性指定主题。你既可以使用硬编码写入主题,也可以使用样式应用主题。

四、在样式资源文件中定义样式
样式资源文件包含了你希望在应用中使用的所有主题和样式的详细信息,在AS中创建工程时,IDE会创建一个默认的样式资源文件style.xml,如果没有则需要自行创建。目前最新的AS中已经自动将style.xml替换为theme.xml了,后者提供了夜间版本。
样式文件基本形式如下:

<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Base.Theme.BitsAndPizzas" parent="Theme.Material3.DayNight.NoActionBar">
        <!-- Customize your light theme here. -->
        <!-- <item name="colorPrimary">@color/my_light_primary</item> -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
    <style name="Theme.BitsAndPizzas" parent="Base.Theme.BitsAndPizzas" />
</resources>

那么是样式的名字,parent属性指定这个样式从哪里继承属性,即使用中的主题。
下面是几个常用的内置主题:
Theme.AppCompat.Light有一个浅色背景和应用条。
Theme.AppCompat有一个深色背景和深色应用条。
Theme.AppCompat.Light.NoActionBar有一个浅色背景但是没有应用条。
Theme.AppCompat.NoActionBar有一个深色背景但是没有应用条。
Theme.AppCompat.Light.DarkActionBar有一个浅色背景并有深色应用条。

上述代码中三个item项是自行添加的,colorPrimary指示应用使用主颜色,colorPrimaryDark指示应用作为状态条的颜色,colorAccent指示所有UI控件的颜色。
所以仍然需要在颜色资源文件中定义这个三个颜色。在colors.xml文件中添加下列三行代码如下:

    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>

直接启动应用便会在应用上方的应用条已经变成了蓝色。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/940396.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

模块化与组件化:开发中的双剑合璧

引言&#xff1a;模块化与组件化的重要性 在现代软件开发中&#xff0c;随着项目规模的增长和技术的复杂性增加&#xff0c;如何有效地组织和管理代码变得越来越重要。模块化与组件化作为两种主要的代码组织方法&#xff0c;为开发者提供了有效的工具&#xff0c;帮助他们创建…

小白带你学习linux的LNMT和动静分离(三十九)

目录 一、LNMT 1、部署tomcat 2、部署nginx 3、部署Mariadb 4、配置Nginx 二、Nginx高级配置 1、location 2、rewirte 三、动静分离 1、修改nginx配置文件 2、重启服务&#xff01;&#xff01;&#xff01; 一、LNMT L是linux&#xff0c;N是nginx &#xff0c;M是…

8.28作业

定义一个基类 Animal&#xff0c;其中有一个虚函数 perform()&#xff0c;用于在子类中实现不同的表演行为。 #include <iostream>using namespace std; class Animal { public:Animal() {}virtual void perform(){} }; class Monkey:public Animal { public:Monkey() {…

普通制造型企业,如何成就“链主品牌

“链主品牌”通常掌握产业链主导地位&#xff0c;对于普通制造型企业看起来是遥不可及的事情&#xff0c;事实上并非如此。从洞察穿越周期的“链主品牌”规律来看&#xff0c;做螺丝起家的伍尔特、做宠物牵引绳的福莱希等小企业也可以成为“链主品牌”。另外&#xff0c;由于新…

如何用大模型解决产业场景实战问题?案例精讲教程来了!

科技爆炸&#xff0c;大模型赋能千行百业 生成式 AI 正以惊人的势头改变着我们的世界&#xff0c;新的浪潮席卷着全球各个行业&#xff0c;同时&#xff0c;也赋予企业前所未有的创新力量。大模型通过海量数据和复杂算法&#xff0c;刻画出AI世界的精妙法则&#xff0c;让企业…

【Android】TextView适配文本大小并保证中英文内容均在指定的UI 组件内部

问题 现在有一个需求&#xff0c;在中文环境下textView没有超过底层的组件限制&#xff0c;但是一切换到英文环境就超出了&#xff0c;这个如何解决呢&#xff1f;有啥例子吗&#xff1f; 就像这样子的。 解决 全部代码如下&#xff1a; <?xml version"1.0"…

解决无公网IP的微信公众号开发调试问题,利用内网穿透的实践经验分享

文章目录 前言1. 配置本地服务器2. 内网穿透2.1 下载安装cpolar内网穿透2.2 创建隧道 3. 测试公网访问4. 固定域名4.1 保留一个二级子域名4.2 配置二级子域名 5. 使用固定二级子域名进行微信开发 前言 在微信公众号开发中&#xff0c;微信要求开发者需要拥有自己的服务器资源来…

多线程(二)

一.关于线程的常用操作 1.启动线程 run(): 对于run方法的覆写只是指定线程要做的任务清单&#xff0c;而不是真正的启动线程 start()&#xff1a; start()方法才是真正的在底层创建出一个线程&#xff0c;并且启动 2.中断线程 1.通过共享的标记来中断 package demo; impor…

参加校招面试测试岗位一次次被刷,耗时一个多月经常偷偷在晚上哭

前言 前两天有粉丝联系我&#xff0c;说他软件工程专业&#xff0c;大厂校招屡次被刷&#xff0c;有一个已经到了三面&#xff0c;还是被刷了&#xff0c;感觉很绝望&#xff0c;不想找工作了。邮箱里也有很多信息&#xff0c;初试都没有过&#xff0c;找工作太难了&#xff0…

财务软件的必要性与优势:为什么企业需要投资财务管理工具?

财务管理是每家企业的核心&#xff0c;可以说财务管理如何关系到企业是否顺利运行。随着企业业务规模的扩大及其复杂性的增加&#xff0c;手工处理财务数据和流程变得越来越困难和难以控制。因此越来越多的企业选择配备一款好用的财务软件来帮助自己进行财务管理。 财务管理的作…

QT初学者该安装qt creator哪个版本?

对于Qt初学者&#xff0c;建议安装最新版本的Qt Creator。Qt Creator是Qt官方提供的集成开发环境&#xff08;IDE&#xff09;&#xff0c;用于开发Qt应用程序。每个Qt版本都会配套提供对应的Qt Creator版本&#xff0c;确保兼容性和稳定性。同时&#xff0c;选择合适的Qt版本也…

因果推断(六)基于微软框架dowhy的因果推断

因果推断&#xff08;六&#xff09;基于微软框架dowhy的因果推断 DoWhy 基于因果推断的两大框架构建&#xff1a;「图模型」与「潜在结果模型」。具体来说&#xff0c;其使用基于图的准则与 do-积分来对假设进行建模并识别出非参数化的因果效应&#xff1b;而在估计阶段则主要…

芯片 半导体 晶圆

芯片&#xff08;chip&#xff09;就是半导体元件产品的统称&#xff0c;是 集成电路&#xff08;IC&#xff0c; integrated circuit&#xff09;的载体&#xff0c;由晶圆分割而成。 半导体集成电路是将很多元件集成到一个芯片内, 以处理和储存各种功能的电子部件。由于半导…

动态场景建图 Removert(offline) 和 DynamicFilter(online)前端部分对比

1.Removert 简单来说2020年的REMOVERT是针对动态环境下的建图进行优化的一篇很好的作品。 针对的主要问题&#xff1a;若是采用点云特征进行匹配的话&#xff0c;动态障碍物在预处理阶段也会被剔除。那么&#xff0c;另一个方面&#xff0c;动态障碍物对点云地图的构建的影响在…

实验篇—— 基因家族Motif 分析

实验篇—— 基因家族Motif 分析 文章目录 前言一、名词解释二、实操1. MEME工具箱2. Motif Discovery&#xff08;基序发现&#xff09;1. 结果网页2. 在TBtools中&#xff08;额外&#xff09; 2. Motif Enrichment&#xff08;基序富集分析&#xff09;3. Motif Search&#…

docker network

docker network create <network>docker network connect <network> <container>docker network inspect <network>使用这个地址作为host即可 TODO&#xff1a;添加docker-compose

【Leetcode】124.二叉树中的最大路径和(Hard)

一、题目 1、题目描述 二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root ,返回其…

兼容AD210 车规级高精度隔离放大器:ISO EM210

车规级高精度隔离放大器&#xff1a;ISO EM210 Pin-Pin兼容AD210的低成本,小体积DIP标准38Pin金属外壳封装模块&#xff0c;能有效屏蔽现场EMC空间干扰。功能设计全面&#xff0c;采用非固定增益方式&#xff0c;输入信号经过输入端的前置放大器&#xff08;增益为1-100&#x…

Zblog博客网站搭建与上线发布:在Windows环境下利用cpolar内网穿透实现公网访问的指引

文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 想要成为一个合格的技术宅或程序员&#xff0c;自己搭建网站制作网页是绕…

快速使用Git完整开发

0.Git的下载 在这一节Git下载帮助文档里简单提及了不同平台下Git的下载。 注意&#xff1a;我们目前&#xff08;在您还对Git一知半解的时候&#xff09;不推荐使用任何图形化界面&#xff0c;这对您的学习作用不大&#xff0c;除非您已经熟练操作Git命令和Git的相关概念&…