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

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开发者官网上的支持库章节的网页。

时间: 2024-10-20 22:17:23

[转]AppCompat 22.1,Goole暴走,MD全面兼容低版本的相关文章

AppCompat学习(1)-AppCompatSpinner

andriod中的spinner控件一共有两个,一个是本身的Spinner,一个是android.support.v7.widget.AppCompatSpinner. 两者的区别在于v7内的Spinner是兼容低版本的,Spinner再高版本中才能使用的方法换了v7下的Spinner后可以一直兼容到2.1 (v7兼容到api7),初次之外两者的使用没有其他差别,推荐使用v7,保证效果在不同版本上都能显示. spinner的使用步骤如下: 1.设置数据源 在values文件夹下新建如下文件: v

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

转载本专栏文章,请注明出处,尊重原创 .文章博客地址:道龙的博客 本文参考博客:http://blog.csdn.net/h_zhang/article/details/51232773 http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1118/2006.html Android5.x以后谷歌大力推崇Material Design设计,有意统一之前Android style风格乱象的情况.上一篇博客我们学习了ActionBar

Android的开发学习

一. 项目模块 1.  新手引导使用控件 ViewPager的使用步骤 1) 在布局中添加ViewPager控件 技巧:在代码中输入ViewPager,联想,从import中拷贝完整包名类名 2) 设置适配器 2. 最后一个页面显示立即体验按钮 1) 在适配器的getItem方法中判断如果是最后一个页面,设置按钮显示 2) 在Fragment中新增方法setVisible(),保存是否显示,并在onCreate()方法中设置按钮是否显示 3. ViewPager的缓存机制 除当前页面外左右各缓存

关于appcompat_v7的说明

http://blog.csdn.net/crazykbc/article/details/21553699 问题描述: 使用eclipse创建一个Android项目时,发现project列表中会多创建出一个appcompat_v7项目,再创建一个 Android项目时,又会再多出一个appcompat_v7_2,如果再次创建,会以此类推地创建出appcompat_v7_x格式的“多余项目” 出来(此情况在ADT升级为22.6.x版本后出现,22.3.x前的版本不会有) 查明原因: ADT在22

Android Support Library介绍

v4 Support Library 这个库是为Android 1.6(API版本为4)及以上的版本设计的,它包含大部分高版本中有而低版本中没有的API,包括application components.user interface features.accessibility.data handling.network connectivity.and programming utilities,下面是对V4中的一些关键API的介绍: App Components Fragment:通过它可以

关于Eclipse创建Android项目时,会多出一个appcompat_v7的问题【转】

转自:http://blog.csdn.net/crazykbc/article/details/21553699 问题描述: 使用eclipse创建一个Android项目时,发现project列表中会多创建出一个appcompat_v7项目,再创建一个Android项目时,又会再多出一个appcompat_v7_2,如果再次创建,会以此类推地创建出appcompat_v7_x格式的“多余项目”出来(此情况在ADT升级为22.6.x版本后出现,22.3.x前的版本不会有) 查明原因: ADT在2

02HTML和CSS知识总结(二)

[目录] 目录 [目录] 1.如何理解HTML结构的语义化? 2.以前端角度出发做好SEO需要考虑什么? 3.有哪些方式可以对一个DOM设置它的CSS样式? 4.CSS都有哪些选择器? 5.CSS选择器的优先级是怎么样的? 6.CSS中可以通过哪些属性定义,使得一个DOM元素不显示在浏览器可视范围内? 7.超链接访问过后hover样式就不出现的问题是什么?怎么解决? 8.什么是CSS Hack? 9.什么是文档的预解析?(浏览器的解析过程) 10.CSS如何阻挡文档解析?(浏览器解析过程) 11

05HTML和CSS知识点总结(五)

[目录] 目录 [目录] 1.CSS选择符有哪些?哪些属性可以继承?优先级算法如何计算?CSS3新增伪类有哪些? 2.如何居中div,如何居中一个浮动元素? 3.display的值和它们的作用 4.position的值和它们的作用 5.CSS的基本语句构成是什么? 6.什么是Css Hack?ie6,7,8的hack是什么? 7.CSS 里的 visibility 属性有个 collapse属性值是干嘛用的?在不同浏览器下以后什么区别? 8.绝对定位元素与非绝对定位元素的百分比计算的区别 9.图

HTML5之标签(一)

HTML标签分为块级元素和行内元素. 行内元素和块级元素区别 1.块级元素会独占一行,其宽度自动填满其父元素宽度:行内元素不会独占一行,相邻的行内元素会排列在同一行里,直到一行排不下,才会换行,其宽度随元素的内容变化而变化 2. 块级元素可以设置 width, height属性:行内元素设置width,  height无效 3. 块级元素可以设置margin 和 padding:行内元素的margin 和 padding在水平方向有效,竖直方向无效 4.行内元素和块级元素转换,通过设置CSS的d