武侠相关的文学作品中常用“四十岁后不滞于物,草木竹石均可为剑。自此精进,渐入无剑胜有剑之境。”形容一个人的武功技艺高超,已臻化境。而我们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开发者官网上的支持库章节的网页。

AppCompat 22 1 Google暴走,MD全面兼容低版本相关推荐

  1. [转]AppCompat 22.1,Goole暴走,MD全面兼容低版本

    AppCompat 22.1,Goole暴走,MD全面兼容低版本 分类: Android2015-04-24 09:48 1354人阅读 评论(0) 收藏 举报 android 目录(?)[+] 武侠 ...

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

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

  3. android 在使用ViewAnimationUtils.createCircularReveal()无法兼容低版本的情况下,另行实现圆形scale动画...

    ViewAnimationUtils.createCircularReveal()的简介: ViewAnimationUtils.createCircularReveal()是安卓5.0才引入的,快速 ...

  4. 3dmax高版本转低版本插件_Fundebug前端JavaScript插件更新至1.8.0,兼容低版本的Android浏览器...

    兼容低版本Android浏览器,请大家及时更新. Fundebug前端BUG监控服务 Fundebug是专业的程序BUG监控平台,我们JavaScript插件可以提供全方位的BUG监控,可以帮助开发者 ...

  5. vue3+vite +element-plus+tailwindcss兼容低版本浏览器(uc)

    部分问题 uc浏览器 rgb支持不全 如rgb(0 0 0 /30%) 这种写法不支持 tailwindcss v3 部分样式在低版本下也不支持 uc浏览器 对于 tailwindcss boxSha ...

  6. jsencrypt.js 兼容低版本IE浏览器(IE9以下)

    jsencrypt.js 兼容低版本IE浏览器(IE9以下) IE5.IE6.IE7.IE8使用jsencrypt.js IE5.IE6.IE7.IE8使用RSA加密 JS使用非对称加密 SCRIPT ...

  7. 解决 Visual Studio 2017 RC 不兼容低版本 Visual Studio 创建的 MVC 4 项目的问题

    解决 Visual Studio 2017 RC 不兼容低版本 Visual Studio 创建的 MVC 4 项目的问题 参考文章: (1)解决 Visual Studio 2017 RC 不兼容低 ...

  8. Android开发之解决NestedScrollView滑动监听兼容低版本的方法

    NestedScrollView的滑动监听目前仅限api23及以上,为了兼容低版本如下自定义方法 可以自定义NestedScrollView即可如下: package cn.net.gfan.worl ...

  9. [css] 你对响应式设计的理解是什么?知道它基本的原理是吗?要想兼容低版本的IE怎么做呢?

    [css] 你对响应式设计的理解是什么?知道它基本的原理是吗?要想兼容低版本的IE怎么做呢? 理解:在不同系统,不同设备,不同尺寸的界面,有良好的用户体验,舒适的阅读体验,交互体验. 原理:根据不同设 ...

最新文章

  1. 获取某一目录之下所有文件的大小
  2. Exception: com.mchange.v2.c3p0.impl.NewProxyConnection cannot be cast to com.mysql.jdbc.Connection
  3. 2018年香港私楼落成量达2.1万个 创14年新高
  4. 算法优化:最大字段和,双指针遍历(n^2),分治法(nlogn),动态规划(n)
  5. Oracle RMAN 学习
  6. Chrome在302重定向的时候对原请求产生2次请求的问题说明
  7. VMware 虚拟化平台规划设计方案
  8. debian vbox设置_在Debian 9 Stretch系统上安装VirtualBox的两种方法
  9. 关于javaweb中sql语句中使用变量的情况
  10. DSP SRIO接口认识
  11. SSH框架搭建和整合(struts2、spring4、hibernate5)
  12. 基于AT89C51单片机的超声波传感器测距
  13. springboot 优雅关闭_SpringBoot 2.3.0 优雅关闭 shutdown graceful
  14. rk3288 安卓7.1显示正确的ICCID值
  15. 财富自由的声音:蚂蚁上市前,取消了周报
  16. Tensorflow中的各种梯度处理gradient
  17. 网红电商剧烈洗牌,机会将属于拥有“头部网红矩阵”的MCN机构?
  18. 经典战役—2004Nollelva之狭路相逢勇者胜
  19. python零基础入门教程免费版_毫无基础的人如何入门 Python ?Python入门教程拿走不谢啦!...
  20. C语言 字符串1234转换成数字1234

热门文章

  1. 1971旗舰cpu intel_最强CPU诞生:Intel正式发布Xeon E7 v4系列处理器 - IT之家
  2. 使用ArcGIS为tif影像生成tfw文件
  3. Python抓狐狸游戏
  4. 工信部“网站备案”域名调整为“beian.miit.gov.cn”
  5. C# 实现真正的WebCamera【原创】
  6. 没有激光雷达设备,只有无人机也可以生成真地形(DEM)和等高线(CAD)
  7. 细说联想企业网盘背后的安全那些事儿
  8. 携程网呼叫中心落户永川
  9. 程序员:外包公司好不好?
  10. 常用的重试技术—如何优雅的重试(Spring-Retry)等