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

目录(?)[+]

 

武侠相关的文学作品中常用“四十岁后不滞于物,草木竹石均可为剑。自此精进,渐入无剑胜有剑之境。”形容一个人的武功技艺高超,已臻化境。而我们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,Goole暴走,MD全面兼容低版本的更多相关文章

  1. 22.struts2-拦截器.md

    目录 1.执行的流程时序图 1.执行的流程时序图 回顾: Struts配置: * 通配符.动态方法调用 * 全局跳转配置.配置的默认值.常量配置 * Struts核心业务 * 请求数据的自动封装 (p ...

  2. centos 6.7 perl 5.22 安装DBD 需要使用老的perl版本

    zjzc01:/usr/bin# mv perl.bak perlold zjzc01:/usr/bin# cd zjzc01:/root# cd DBD-Oracle-1.36 zjzc01:/ro ...

  3. Android教程 -08 ToolBar的使用和主题的介绍

    ActionBar 简介 视频为本篇播客知识点讲解,建议采用超清模式观看, 欢迎点击订阅我的优酷 讲解ToolBar之前首先需要了解 ActionBar, 两者使用起来基本上一致. Android 3 ...

  4. AppCompat学习(1)-AppCompatSpinner

    andriod中的spinner控件一共有两个,一个是本身的Spinner,一个是android.support.v7.widget.AppCompatSpinner. 两者的区别在于v7内的Spin ...

  5. Android Jetpack之AppCompat(一)

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

  6. Android Support Library介绍

    v4 Support Library 这个库是为Android 1.6(API版本为4)及以上的版本设计的,它包含大部分高版本中有而低版本中没有的API,包括application component ...

  7. 关于appcompat_v7兼容包的详细说明

    1.appcompat_v7包的由来? appcompat_v7是Google提供的向下兼容包,是针对API level 7(Android2.1)及以上版本所开发的,其作用是为了让兼容低版本API( ...

  8. Android Studio精彩案例(七)《ToolBar使用详解<一>》

    转载本专栏文章,请注明出处,尊重原创 .文章博客地址:道龙的博客 本文参考博客:http://blog.csdn.net/h_zhang/article/details/51232773 http:/ ...

  9. 关于Eclipse创建Android项目时,会多出一个appcompat_v7的问题

     问题描述: 使用eclipse创建一个Android项目时,发现project列表中会多创建出一个appcompat_v7项目,再创建一个Android项目时,又会再多出一个appcompat_ ...

随机推荐

  1. 【BZOJ】1269: [AHOI2006]文本编辑器editor(Splay)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1269 这题RE2次啊,好不爽啊,我一直以为是splay的问题,其实是数组开小了......(我老犯这 ...

  2. get和post方法的区别

    在form表单提交数据的过程中,method属性提供了两个值:get,post,默认为get方式[参1] 即一种为get提交,一种是post提交.那么这两种提交方式有什么不同呢? 查询了一些资料后,总 ...

  3. Ruby Hash与ActiveSupport’s HashWithIndifferentAccess对于key的区别

    Ruby Hash的key定义的时候是支持symbol或者string的,所以访问的时候只能是symbol或者string其中一种方式. 建议使用symbol定义Hash的key,因为symbol在R ...

  4. Js获取当前日期时间及其它格式化操作

    Js获取当前日期时间及其它操作 var myDate = new Date();myDate.getYear();        //获取当前年份(2位)myDate.getFullYear();   ...

  5. JavaScript验证正则表达式大全

    JavaScript验证正则表达式大全,搜集最全的JavaScript验证正则表达式,开始查看吧,这里的都是正则表达式的例子,具体和函数结合的使用方法,还请查看下篇文章<JavaScript使用 ...

  6. 打包bat等文件成exe,双击运行不显示dos窗口,exe不报毒

    准备材料如下bat和vbs直接新建文本,然后改后缀就可以建出来了(后面发现exe运行vbs来启动bat不报毒)下面内容就是要把这些文件打包成exe,双击exe后打开图片test.jpg,不显示dos窗 ...

  7. Lamda表达式

    Lamda表达式 函数式编程的产生(匿名内部类) interface Mes{ public void speak(); } public class Lam { public static void ...

  8. gitlab & gerrit & git & repo & jenkins

    Omnibus GitLab documentation(中文安装说明) 在自己的服务器上部署 GitLab 社区版->较为全面 GIT & REPO & GERRIT (三) ...

  9. redis缓存怎么存储对象

    2.把对象Object存储到redis中,怎么存?memcache存取对象是序列化和反序列化 使用通用的序列化.反序列化(频繁的会很消耗cpu,使用Google Protocol Buffer,将对象 ...

  10. ThinkPHP的cookide保存二维数组的方法

    ThinkPHP中的cookie是不支持二维数组的. 如果要保存二维数组.只能特殊处理 $data[263] = array('gid'=>263,'num'=>1); $data[266 ...