AppCompat 22.1,Goole暴走,MD全面兼容低版本

分类: Android2015-04-24 09:48 1354人阅读 评论(0) 收藏 举报
android

目录(?)[+]

武侠相关的文学作品中常用“四十岁后不滞于物,草木竹石均可为剑。自此精进,渐入无剑胜有剑之境。”形容一个人的武功技艺高超,已臻化境。而我们IT工程师自身的技艺水平到达一定程度后,也会处于这种“无码胜有码”的境界。但这是什么意思呢?是说我们从此不再写代码,每天躺在床上和白花花的天花板无言对望了吗?

不是的。我想对你说的是:你写下的每一行代码应该能为应用增加独特的价值,而不是为应用添加一行又一行繁复、无趣的模板代码。Android 提供支持库的初衷正是如此:让 Android 开发工程师把精力更多地放在逻辑实现上,而不是写业务代码。

最新发布的 Android 支持库一如既往地添加了许多实用的组件,并对 Support V4、AppCompat、Leanback、RecyclerView、Palette 和 Renderscript 库的内部实现逻辑作出改变。从新的 AppCompatActivity 和 AppCompatDialog 到 Android TV 全新的引导流程我们可以发现,新的库确实带来许多让我们耳目一新的惊喜。

Support V4

Support V4 库作为众多 Android 支持库的基础,包含许多向下兼容的类,大大简化了向下兼容的具体实现。

DrawableCompat 现在使drawable着色绘制向下兼容到了API 4:现在只需要通过 DrawableCompat.wrap(Drawable) 方法简单封装你的 Drawable ,就可以用 setTint()、setTintList()、setTintMode() 完成着色绘制,完全不需要为了支持多种颜色而去创建和维护几个不同的 Drawable 文件!

此外,我们正在通过 ColorUtils 类做一些适用于所有使用场景的 Palette 内部构件,为开发者提供预先构建的工具简化处理各种颜色的操作。ColorUtils 可以很容易地计算出颜色之间的对比度,确定维持最小对比度的最小透明度值(完美地保证文字的阅读体验),或者将颜色转换为对应的 HSL 值。

插值器是所有动画系统的重要组成部分,它负责控制一个动画中某项数值改变的比率(例如加速、减速等)。Lollipop 中的 android.R.interpolator 包内置了许多插值器,例如用于创建真实动作的 fast_out_linear_in、fast_out_slow_in、and linear_out_slow_in。但现在我们可以用代码调用 FastOutLinearInInterpolator、FastOutSlowInInterpolator、LinearOutSlowInInterpolator 类为动画添加这些插值器。除了那些预建的插值器,我们还创建了允许你创建二次方或三次方贝塞尔曲线的 PathInterpolatorCompat 类

这个版本的支持库还把Space控件从GridLayout库移动到了Support V4,使其不需要在项目中添加单独的依赖。Space控件是一种轻量的、无形的控件,可用于创建控件间的间隙效果。

AppCompat

AppCompat支持库开始地很低调,却是一个很重要的开端:为API 7及以上的设备提供了一个一致的Action Bar。 在版本21的修订中,它承担了新的职责:带来了material color palette、控件着色、Toolbar支持,还有更多支持所有API 7+的设备。单从ActionBarActivity名字上看是体现不出它全部功能的。

在此版本中,ActionBarActivity已经过时了,新的替代者是AppCompatActivity。然而,这不只是一个重命名。事实上,AppCompat的内在逻辑现在可以通过AppCompatDelegate实现-这是一个可以在所有Activity中包含的类,与合适的生命周期方法挂钩,并得到一致的主题、着色等,而不需要使用AppCompatActivity (尽管这仍然是最简单的开始方式)。

在全新的 AppCompatDelegate 类的帮助下,我们通过 AppCompatDialog 类提供了符合 Material Design 规范的对话框。如果你以前用过 AlertDialog ,那你就爽翻了,因为我们还在库里添加了全新的 support.v7.app.AlertDialog 类,让你用相同的API享受 AppCompatDialog 带来的便利。

在使用 AppCompat 时,自动为控件着色的能力是在应用中保持品牌烙印和一致性体验的重要保证。因为在填充布局时 AppCompat 会自动地为你将诸如 Button、TextView 这些传统控件替换为 AppCompatButton、AppCompatTextView 等新控件,以确保布局内的每一个控件都能支持着色。而在新的支持库中,色彩感知控件现在已经被公开,让控件类对自动着色的支持能延续到子类中。

这个列表囊括了目前所有的色彩感知控件:

AppCompatAutoCompleteTextView 
AppCompatButton 
AppCompatCheckBox 
AppCompatCheckedTextView 
AppCompatEditText 
AppCompatMultiAutoCompleteTextView 
AppCompatRadioButton 
AppCompatRatingBar 
AppCompatSpinner 
AppCompatTextView

Lollipop 能够在 View 层通过使用XML中的 android:theme 属性在 View 中重写应用的主题,这对实现许多酷炫的应用 UI 非常有帮助,例如:我们需要在明亮主题的 Activity 中使用暗黑风格的 ActionBar。但现在 AppCompat 允许你在所有 API 11 以上的设备上通过 android:theme 定制 Toolbar。

如果你不太熟悉 AppCompat 库的话,不妨看看这个视频,你会发现在 Android 中为用户提供一致性体验是多么简单:

Leanback

即使 Leanback 库已经是 Android TV 应用中的最佳模板,但如果你看过最新的22.1支持库,你会发现通过最新的 Leanback 库创建的引导流程,会带来比过去好上10倍的体验。

在最新的 Leanback 库中,这些类和主题可以在 Android TV 中建立酷炫的引导流程:左边是引导视图,右边是引导步骤。引导流程的每一个步骤都可以通过继承自 Theme.Leanback.GuidedStep 的 theme 来自定义,如果你想要更高的定制自由度,你可以通过 GuidanceStylist 和 GuidedActionsStylist 实现你的需求。

除此以外,Android Support Library 22.1 修复了 Leanback 中的许多 Bug,优化性能,还对外声称:让用户和开发者通过 Leanback 库获得极致的体验是 Google 开发、优化 Leanback 库的目标!

RecyclerView

除了修复了一系列的 Bug,此版本还增加了新的 SortedList 数据结构。这个集合让持有有序自定义对象比过去简单,使 RecyclerView.Adapter 在数据发生改变时能够正确地分发改变的事件,维持子 Item 在增加/删除/移动/改变 时的动画。

此外,SortedList还支持成批地改变对象,事件分发只是适配器上一个单一的集合操作,确保大量items改变时能维持最佳的用户体验。

Palette

如果你有在应用开发时使用 Palette 提取图片中的颜色,那你肯定会很高兴,因为最新的 Palette 在保证了取色准确度的情况下,取色效率是以前的6-8倍!

Palette 现在通过构造者模式获得实例,而不像从前那样通过调用类似 Palette.generate(Bitmap) 的方法来获得,你现在需要用 Palette.from(Bitmap) 获得 Palette.Builder 对象,然后才能在顶用 generate() 或 generateAsync() 取得颜色表前改变运行 Palette 时能产生的最大颜色数和最大图片尺寸

Renderscript

Renderscript 能提供强大的计算能力,此外 Android Support Library 22.1 使一些预定义的脚本和调用脚本的内部函数在 API 8 以上的设备上也可以使用。通过一种改进的图像边缘检测算法确保本地的 Renderscript 函数总是选择了最快和最可靠的实现,这个版本极大地提升了所有设备的可靠性和性能表现。两个额外的内部函数也被添加在此版本中:ScriptIntrinsicHistogram 和 ScriptIntrinsicResize,完成采集到10。

结语

没有比这更好的时间来开始使用Android支持库。今天你就可以使用这个库开始开发了,从Android SDK Manager下载Android支持库和Android支持资源吧。

要了解更多关于Android的支持库和它提供给你的API,请访问Android开发者官网上的支持库章节的网页。

转载于:https://www.cnblogs.com/DarkMaster/p/4699243.html

[转]AppCompat 22.1,Goole暴走,MD全面兼容低版本相关推荐

  1. AppCompat 22.1,Google暴走,MD全面兼容低版本

    武侠相关的文学作品中常用"四十岁后不滞于物,草木竹石均可为剑.自此精进,渐入无剑胜有剑之境."形容一个人的武功技艺高超,已臻化境.而我们IT工程师自身的技艺水平到达一定程度后,也会 ...

  2. AppCompat 22 1 Google暴走,MD全面兼容低版本

    武侠相关的文学作品中常用"四十岁后不滞于物,草木竹石均可为剑.自此精进,渐入无剑胜有剑之境."形容一个人的武功技艺高超,已臻化境.而我们IT工程师自身的技艺水平到达一定程度后,也会 ...

  3. 高版本Ubuntu(如22.02)修改apt源,快速安装低版本gcc/g++

    Ubuntu不同版本默认apt install gcc安装的gcc和g++版本不同,如Ubuntu22.04默认安装gcc/g++为11版本,高版本Ubuntu无法直接通过apt install gc ...

  4. typora 低版本免费 .md 下载地址

    目前 在公司 实习 需要一个记录 md文档的软件 首先想到的软件就是typora 因为公司的电脑是内外网隔离 typora 可以离线使用 但是最新版的 需要付费了 我听见鱼皮在网站上说 可以降低版本 ...

  5. QGIS编译---QGIS3.22.4 + Qt5.15.3 + VS2019 ---64位版本

    0 编译结果 先放上编译结果: 图1 QGIS3.22 启动界面 图2 QGIS3.22 操作界面 1 前言 因一些主观.客观原因,一年多没更新博客了,提笔继续. 这是笔者编译的第三个版本QGIS,本 ...

  6. 【22/03】为什么要学git分布式版本控制软件及基本操作

    碎碎念: 虽然说每次创建github仓库再push就几句命令,但是总是忘,于是整理了一下,理解记忆每条命令的含义,和清晰化流程很重要!!!!但最重要的就是我们为什么要学, 为什么要用, 这样在我们自己 ...

  7. lh服服务器位置,LH服11月22日开发更新 A区1.9版本介绍和L区1.8版本介绍

    补丁内容 这周介绍一下达隆郡服务器的补丁1.9安其拉之门和光明使者服务器的补丁1.8梦魇龙. 1.9带来安其拉的战备活动,整个服务器的联盟和部落需要联合起来完成一系列任务.同时需要一个强力的小队完成一 ...

  8. Android Jetpack之AppCompat - Actionbar篇

    今天我们来聊一聊有关AppCompat,作为Android Jetpack系列文章的开篇.说到Android Jetpack,我们先看一下这张图: 从图中我们可以看到,整个Android Jetpac ...

  9. Material Design控件使用(一)

    最近学习了一下md设计风格和相对应的控件觉得挺棒的,真希望以后能做安卓设计风格的app,只是心有鱼而力不足,虽身为安卓程序员但由于公司设计成本却每天做着iOS风格的app,这感觉真是(此处省略一万字) ...

最新文章

  1. [Android] 通过GridView仿微信动态添加本地图片
  2. Unity中有两种Animation Clip
  3. Java知多少(68)面向字符的输出流
  4. 快速向服务器传文件格式,客户端如何向服务器传文件格式
  5. LAMP或LNMP一键安装包
  6. matlab调用手机摄像头,MATLAB下使用摄像头
  7. 单链表的合并算法_图解算法:单链表两两反转 | 眼睛会了手就会系列
  8. Tom邮箱注册机|注册辅助工具!!!
  9. php注册表单处理,PHP登录和注册表单错误处理
  10. [LeetCode] NO. 242 Valid Anagram
  11. $.ajax的回调function中的this与 element-ui的this.$alert冲突问题解决
  12. 运用SQL Server安全模型来保护数据
  13. 小甲鱼Python课后练习题及答案01
  14. 整人c语言代码大全,(C语言整人代码大全.doc
  15. Samba共享文件夹Windows中拷贝文件拒绝访问
  16. for linux pdf转mobi_pdftotext —— Linux/Unix中将PDF文件转化为Text文本格式的利器
  17. java时间计算器_java后台时间计算
  18. 什么是非同质化代币(NFT)\ NFT有哪些应用?
  19. GD32F303课程【3】中断控制器和外部中断
  20. pycharm 中引用airtest中的air 文件

热门文章

  1. 利用opencv获取网络摄像头数据并显示报错 select() timeout
  2. R语言入门——R对象
  3. 4.12leetcode468. 验证IP地址
  4. 统计学习方法 | 第7章 支持向量机
  5. 点云编码是计算机视觉吗,全视角点云数据定长有序化编码方法、设备及存储介质与流程...
  6. HDU2036 改革春风吹满地
  7. Kibana discover 功能
  8. 学会VBA,菜鸟也高飞!
  9. 使用Clover 3
  10. 51单片机学习笔记-3模块化编程