专业的网站建设公/搜索引擎案例分析结论

专业的网站建设公,搜索引擎案例分析结论,自己做提卡网站,上虞建设局网站在 Android 开发中,UI 组件一直在不断演进,从最初的原生组件,到 Support Library(AppCompat 兼容库),再到如今的 Material Design 组件。这篇文章将梳理 Android UI 组件的发展历史,并提供详细的…

在 Android 开发中,UI 组件一直在不断演进,从最初的原生组件,到 Support Library(AppCompat 兼容库),再到如今的 Material Design 组件。这篇文章将梳理 Android UI 组件的发展历史,并提供详细的对照表,帮助开发者选择合适的 UI 组件。


时间线:Android UI 组件的发展

1. 原生 UI 组件(Android 1.0 ~ 4.x 时代)

  • 时间:2008 年(Android 1.0 发布)~ 2013 年(Android 4.4 时代)
  • 特性
    • 最初的 Android 版本提供了基础 UI 组件,比如 ButtonTextViewEditText 等。
    • 这些控件依赖于系统,导致在不同版本的 Android 设备上可能存在行为、外观不一致的问题。
    • 在 Android 3.0(Honeycomb,2011 年)开始引入 ActionBar,但这个组件在 Android 2.x 版本中无法使用。

2. Support Library(Android 4.x ~ 9 时代)

  • 时间:2011 年(Android 3.0 时代)~ 2018 年(Android 9)

  • Support Library(支持库)

    • 为了解决不同 Android 版本的兼容性问题,Google 在 Android 3.0(Honeycomb)后推出了 Support Library,方便开发者在旧版本系统上使用新特性。
    • 主要版本:
      • v4(Android 1.6+):提供 Fragment、ViewPager、LoaderManager 等功能,支持最早的 Android 1.6。
      • v7(Android 2.1+):提供 AppCompat 组件,比如 AppCompatActivityAppCompatButton,让开发者能在旧版本 Android 设备上使用 Toolbar、Material Design 主题等。
      • v13(Android 3.2+):主要用于增强 Fragment 相关功能,较少使用。
      • v17、v19(API 级别更高的支持库):提供 UI 适配、TV 设备支持等功能。
  • AppCompat 组件的出现(2014 年)

    • Android 5.0(Lollipop,2014)引入了 Material Design,但老版本(Android 4.x)无法直接使用这些新特性。
    • Google 在 Support Library v7 中引入了 AppCompat 组件(如 AppCompatButtonAppCompatTextView),这样就能让 Android 4.x 设备也能使用 Material 主题和组件。

3. Material Design 组件库(Android 5.0 ~ 现今)

  • 时间:2014 年(Android 5.0 发布)~ 现在

  • Material Design 1.0(2014 年)

    • Android 5.0(Lollipop)推出了 Material Design 设计语言,系统 UI 组件也进行了大幅升级,比如 Button 变成了 MaterialButton,并且提供了 CardViewCoordinatorLayout 等新组件。
    • 这些 Material 组件最早是在 android.support.design 包下,作为 Support Library v7 的一部分。
  • Material Components for Android(2018 年)

    • 2018 年,Google 推出了独立的 Material Components for AndroidMDC-Android),并放入 com.google.android.material 命名空间。
    • 这个库是对原生 Material Design 组件的增强版,提供 MaterialButtonMaterialCardViewTextInputLayout 等更丰富的 UI 控件,同时支持动态主题、暗色模式等功能。

4. AndroidX 时代(2018 年至今)

  • 时间:2018 年至今

  • 为什么出现 AndroidX?

    • Support Library(v4、v7 等)名称混乱,不容易管理。
    • 许多 API 过时,Google 需要重新整理,提供更稳定的支持。
    • Android 9(API 28)之后,Google 推出了 AndroidX,并彻底废弃了 Support Library
  • AndroidX 变化

    • android.support.v7.widget.AppCompatButtonandroidx.appcompat.widget.AppCompatButton
    • android.support.design.widget.TextInputLayoutcom.google.android.material.textfield.TextInputLayout
    • android.support.v4.app.Fragmentandroidx.fragment.app.Fragment
    • android.support.v7.app.AppCompatActivityandroidx.appcompat.app.AppCompatActivity

    AndroidX 之后,所有的新特性都会在 AndroidX 维护,旧的 Support Library 不再更新。


总结:如何选择 UI 组件

控件类型适用场景示例
原生控件ButtonTextView不关心 UI 统一性,也不需要 Material Designandroid.widget.Button
AppCompat 控件AppCompatButtonAppCompatTextView需要兼容旧设备,确保 UI 在不同版本 Android 中一致androidx.appcompat.widget.AppCompatButton
Material Design 控件MaterialButtonTextInputLayout使用 Material Design 主题,追求现代 UI 体验com.google.android.material.button.MaterialButton

当然,下面是一张更完整的对照表,列出了 原生控件(Android 1.0) → Support Library 组件(AppCompat v7) → Material Design 组件(MDC-Android) 的演进过程,并附带控件的主要功能。


Android UI 组件演进对照表

原生控件(Android 1.0+)AppCompat 控件(Support Library v7)Material 组件(Material Design 1.0+)主要功能
TextViewAppCompatTextViewMaterialTextView文字显示,支持样式、行间距等
ButtonAppCompatButtonMaterialButton按钮,支持波纹效果、图标等
ImageButtonAppCompatImageButtonMaterialButton(带图标)图片按钮,支持点击效果
EditTextAppCompatEditTextTextInputEditText输入框,支持输入文本、密码等
TextInputLayout输入框容器,支持浮动标签、错误提示等
CheckBoxAppCompatCheckBoxMaterialCheckBox复选框,支持多选
RadioButtonAppCompatRadioButtonMaterialRadioButton单选按钮
SwitchAppCompatSwitchMaterialSwitch开关按钮
ToggleButtonAppCompatToggleButton(推荐使用 MaterialSwitch早期的开关按钮,已逐步被 Switch 取代
SeekBarAppCompatSeekBarSlider进度条
ProgressBarAppCompatProgressBarCircularProgressIndicatorLinearProgressIndicator进度指示器,支持线性或圆形
SpinnerAppCompatSpinnerExposedDropdownMenu下拉选择框(Material 版更现代)
ListViewAppCompatListViewRecyclerView列表控件(RecyclerView 性能更强)
ScrollViewAppCompatScrollViewNestedScrollView滚动视图
ViewPagerViewPager2ViewPager2多页面滑动视图
ToolbarAppCompatToolbarMaterialToolbar顶部导航栏
FrameLayoutFrameLayoutMaterialCardView用于自定义布局,可增加阴影
CardView(Support Library v7)CardViewMaterialCardView卡片视图,支持阴影、圆角
TabHostTabLayoutTabLayout选项卡布局
NavigationView(Support Library v7)NavigationViewNavigationView侧边导航栏
DrawerLayoutDrawerLayoutDrawerLayout抽屉式侧滑菜单
FloatingActionButton(Support Library v7)FloatingActionButtonFloatingActionButton悬浮按钮
CoordinatorLayoutCoordinatorLayoutCoordinatorLayout高级布局容器,支持滚动行为
Snackbar(Support Library v7)SnackbarSnackbar替代 Toast 的提示条
BottomAppBar底部工具栏
BottomNavigationView底部导航栏
PopupMenuPopupMenuMaterialPopupMenu弹出菜单
AlertDialogAppCompatDialogMaterialAlertDialog弹框,Material 版更美观
DatePickerDialogTimePickerDialogAppCompatDatePickerDialogMaterialDatePickerMaterialTimePicker日期和时间选择器
Chip(Support Library v7)ChipChip轻量级标签,类似于按钮
RecyclerView(Support Library v7)RecyclerViewRecyclerView替代 ListView,更高效的列表控件

选择指南

  1. 如果你是 AndroidX 时代(2018+)的项目

    • 优先选择 Material 组件(如 MaterialButtonMaterialCardView),可以获得更现代的设计和更强的定制能力。
    • RecyclerView 替代 ListView,推荐 ViewPager2 而不是 ViewPager
  2. 如果你需要兼容 Android 4.x ~ 9 设备

    • 使用 AppCompat 组件(如 AppCompatButtonAppCompatEditText)以保证外观和功能一致性。
  3. 如果你是 Android 10+(API 29 以上)

    • 直接使用 Material 组件,因为 AppCompat 组件的作用已经逐渐被 Material 组件取代。
  4. 什么时候使用原生组件?

    • 只在不关心 UI 兼容性、不需要 Material Design 时(比如一些性能要求极高的场景)。

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

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

相关文章

python学习笔记--实现简单的爬虫(一)

任务:爬取豆瓣最受欢迎的250个电影的资料 链接:豆瓣电影 Top 250 用浏览器打开后,使用F12或鼠标右键--检查,查看网页的源代码,分析网页结构,如下图所示: 分析后得知: 1.电影名位于…

Cursor+Claude-3.5生成Android app

一、Android Studio下载 https://developer.android.com/studio?hlzh-tw#get-android-studio 等待安装完成 二、新建工程 点击new project 选择Empty Activity 起一个工程名 当弹出这个框时 可以在settings里面选择No proxy 新建好后如下 点击右边模拟器&#xff0c…

Java EE(15)——网络原理——TCP协议解析一

一.确认应答/(确认)序列号 接收方接收到数据后,向发送方返回一个确认信号(ack),告诉发送方数据被成功接收。ACK报文段只是作为确认使用的,一般来说不携带应用层数据(载荷),也就是说只有报头部分。但有可能…

C#单例模式

单例模式 (Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化对个对象,一个最好的办法就是,让类自身负责保护它的唯一实例。这个类可以保证没…

NO.55十六届蓝桥杯备战|排序|插入|选择|冒泡|堆|快速|归并(C++)

插⼊排序 插⼊排序(Insertion Sort)类似于玩扑克牌插牌过程&#xff0c;每次将⼀个待排序的元素按照其关键字⼤⼩插⼊到前⾯已排好序的序列中&#xff0c;按照该种⽅式将所有元素全部插⼊完成即可 #include <iostream> using namespace std; const int N 1e5 10; …

【Oracle资源损坏类故障】:详细了解坏块

目录 1、物理坏块与逻辑坏块 1.1、物理坏块 1.2、逻辑坏块 2、两个坏块相关的参数 2.1、db_block_checksum 2.2、db_block_checking 3、检测坏块 3.1、告警日志 3.2、RMAN 3.3、ANALYZE 3.4、数据字典 3.5、DBVERIFY 4、修复坏块 4.1、RMAN修复 4.2、DBMS_REPA…

计算机网络高频(二)TCP/IP基础

计算机网络高频(二)TCP/IP基础 1.什么是TCP/IP⭐⭐ TCP/IP是一种网络通信协议,它是互联网中最常用的协议之一。TCP/IP有两个基本的协议:TCP(传输控制协议)和IP(互联网协议)。 TCP(Transmission Control Protocol,传输控制协议)是一种可靠的、面向连接的协议。它负…

【蓝桥杯】12111暖气冰场(多源BFS 或者 二分)

思路 这题可以用BFS做&#xff0c;也可以用二分来做。 用二分这里只提供一个思路&#xff1a;对时间来二分查找&#xff0c;check函数就是检查在特定的时间 t 0 t_0 t0​内每一个暖气炉的传播距离能否覆盖所有格子。 用BFS做&#xff1a; 由几个点开始向外扩散&#xff0c;知道…

DeepSeek自学手册:《从理论(模型训练)到实践(模型应用)》|73页|附PPT下载方法

导 读INTRODUCTION 今天分享是由ai呀蔡蔡团队带来的DeepSeek自学手册&#xff1a;《从理论&#xff08;模型训练&#xff09;到实践&#xff08;模型应用&#xff09;》&#xff0c;这是一篇关于DeepSeek模型训练、应用场景及替代方案的综合指南文章&#xff0c;主要介绍了Deep…

QT软件匠心开发,塑造卓越设计服务

在当今这个数字化飞速发展的时代&#xff0c;软件已经成为我们生活中不可或缺的一部分。而QT&#xff0c;作为一款跨平台的C图形用户界面应用程序开发框架&#xff0c;凭借其强大的功能和灵活性&#xff0c;在众多软件开发工具中脱颖而出。我们深知&#xff0c;在软件开发领域&…

标贝科技入选2025年市级数据要素市场化配置改革“揭榜挂帅”名单

近日&#xff0c;山东省大数据局、青岛市大数据局公布2025年数据要素市场化配置改革“揭榜挂帅”名单。标贝科技联合崂山区电子政务和大数据中心申报的“政务热线通话录音数据价值挖掘与权益保护”项目成功入选。这一成果不仅彰显了标贝科技在数据领域的创新实力&#xff0c;更…

Flutter TextField 从入门到精通:掌握输入框的完整指南

目录 1. 引言 2. TextField 的基本用法 3. 主要属性 4. 自定义 TextField 样式 4.1 自定义边框与提示文本 4.2 增加前缀/后缀图标 4.3 只允许输入数字 4.4 表单验证系统 4.5 动态样式修改 4.6 防抖搜索&#xff08;Debounce&#xff09; 5. 结论 相关推荐 1. 引言…

MyBatis-Plus 自动填充:优雅实现创建/更新时间自动更新!

目录 一、什么是 MyBatis-Plus 自动填充&#xff1f; &#x1f914;二、自动填充的原理 ⚙️三、实际例子&#xff1a;创建时间和更新时间字段自动填充 ⏰四、注意事项 ⚠️五、总结 &#x1f389; &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜欢…

arduino R4 SD卡读写测试

使用买来的 st7789LCD 显示器背面就带着一个 tf 卡槽&#xff0c;可以直接连接 tf 卡。使用 Sdfat 库就可以实现对 sd 卡的读写操作。这里尝试测试 sd 卡的读写功能。 LCD 显示器的初始化 //定义LCD的对象 Adafruit_ST7789 tft Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);tf…

【武汉·4月11日】Parasoft联合光庭信息研讨会|邀您共探AI赋能新机遇

Parasoft联合光庭信息Workshop邀您共探AI赋能新机遇 AI浪潮已至&#xff0c;你准备好了吗&#xff1f; 在智能网联汽车飞速发展的今天&#xff0c;AI技术正以前所未有的速度重塑行业生态。如何把握AI机遇&#xff0c;赋能企业创新&#xff1f; 4月11日&#xff0c;自动化软件…

防火墙带宽管理

拓扑 配置 [fw]interface GigabitEthernet 0/0/0 [fw-GigabitEthernet0/0/0]service-manage all permit [fw]interface GigabitEthernet 1/0/0 [fw-GigabitEthernet1/0/0]ip address 12.0.0.1 24 [fw]interface GigabitEthernet 1/0/1 [fw-GigabitEthernet1/0/1]ip ad…

一人系统 之 为什么要做一人系统?

一人系统 之 赚钱认知篇&#xff08;下&#xff09; 本文 2119个字&#xff0c;大概阅读时间 16分钟。 在上一篇文章中&#xff0c;主要讲了以下三个内容&#xff1a; 什么是好的工作&#xff1f;时薪高&#xff0c;并且有能力提升&#xff0c;而且最终可以独立创业的工作&…

基于springboot的电影院管理系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 互联网技术的成熟和普及&#xff0c;势必会给人们的生活方式带来不同程度的改变。越来越多的经营模式中都少不了线上运营&#xff0c;互联网正强力推动着社会和经济发展。国人对民族文化的自信和不同文化的包容&#xff0c;再加上电影行业的发展&#xff0c;如此繁荣吸引…

Java安全-类的动态加载

类的加载过程 先在方法区找class信息&#xff0c;有的话直接调用&#xff0c;没有的话则使用类加载器加载到方法区(静态成员放在静态区&#xff0c;非静态成功放在非静态区)&#xff0c;静态代码块在类加载时自动执行代码&#xff0c;非静态的不执行;先父类后子类&#xff0c;…

ROS多机通信功能包——Multibotnet

引言 这是之前看到一位大佬做的集群通信中间件&#xff0c;突发奇想&#xff0c;自己也来做一个&#xff0c;实现更多的功能、更清楚的架构和性能更加高效的ROS多机通信的功能包 链接&#xff1a;https://blog.csdn.net/benchuspx/article/details/128576723 Multibotnet Mu…