StupidBeauty
Read times:3463Posted at:Sat Mar 18 08:03:16 2017 - no title specified

安卓开发者勃客翻译:安卓支持库23.2,Android Support Library 23.2

说到所谓 的安卓支持库,有一点狠重要,必须明白,那就是,它并不是一个单一的软件库, 而是一个 软件 库集合 ,为以下目的而生: 为各个应用编程接口提供后向兼容版本 以及, 在并非是最新平台版本的平台上提供 与最新平台一致的特性。版本 23.2 ,加入了一些新的支持库,并且 为其中狠多已有的库加入了新的特性。

支持向量绘图对象(Support Vector Drawables)和动画向量绘图对象(Animated Vector Drawables)

向量绘图对象 ,使得妳能够将多个png 图片替换成单个以XML 定义的向量图形。之前 ,这个特性只能用于 棒棒糖(Lollipop)及更高版本的设备,而如今,因为两个 新的支持库 support-vector-drawable animated-vector-drawable 加入, VectorDrawable AnimatedVectorDrawable 都能够用于较低版本的系统中了。
Android Studio 1.4 加入 了对于向量绘图对象的有限支持, 其具体做法就是 在编译期间生成 png 要禁用这个功能 (进而通过 这个支持库的能力达到真正节省空间 的目的 ) 需要 build.gradle 文件中加上 vectorDrawables.useSupportLibrary = true

// Gradle Plugin 2.0+  

android {  

defaultConfig {  

vectorDrawables.useSupportLibrary = true  

}  

}  

注意,这个新的属性,只在Gradle 插件的2.0 以上版本中存在。如果妳使用的是Gradle 1.5,那么,应该按照如下方式修改

// Gradle Plugin 1.5  

android {  

defaultConfig {  

generatedDensities = []  

}  

// Gradle 插件2.0+版本 会处理以下内容

aaptOptions {  

additionalParameters "--no-version-vectors"  

}  

}  

如果 妳使用的是AppCompat 23.2.0,那么 ,必须设置这些标志位。 AppCompat 23.2.1 中,这个要求已经放宽, 仅当妳需要使用支持向量绘图对象时,才需要设置这些标志位。
VectorDrawableCompat 可在API 7 及更高版本使用, AnimatedVectorDrawableCompat 可在API 11 及更高版本使用。由于安卓载入绘图对象方面 的某些限制,并非所有 的接受绘图对象编号的地方 (例如XML布局文件 ) 都会支持载入向量绘图对象。幸运 的是, AppCompat 中加入了一些新特性,可以帮助妳 更轻松地使用新的向量绘图对象。
首先
,在AppCompat 中使用 ImageView 或它的子类,例如 ImageButton FloatingActionButton )的时候, 可以使用新的 app:srcCompat 属性来引用向量绘图对象(包括其它 可使用 android:src 来引用的绘图对象类型 ):

<ImageView  

android:layout_width="wrap_content"  

android:layout_height="wrap_content"  

app:srcCompat="@drawable/ic_add" />  

并且 ,如果妳想要在运行时改变绘图对象的话, 可照常使用 setImageResource() 方法 - 这个方面没有变化。 使用 AppCompat app:srcCompat ,是在妳的应用中整合向量绘图对象的最简单方法。
妳会发现,在棒棒糖(Lollipop)之前的版本中, 未通过 app:srcCompat 来引用向量绘图对象的话,会失败。
安卓支持 23.3.0 开始,支持向量绘图对象 只可通过 app:srcCompat setImageResource() 来载入……

兼容应用(AppCompat)日夜(DayNight)主题

在应用中加入对向量图形的支持,已经是AppCompat 中的一个巨大改变。而另一个巨大的改变是,这个版本中,向AppCompat 中加入了一个新的主题: Theme.AppCompat.DayNight

在API 14 之前 的系统版本中 DayNight 主题 ,以及它的后代 主题, DayNight.NoActionBar DayNight.DarkActionBar DayNight.Dialog 等等, 会变成Light 族中的等价主题。 而在 API 14 及更高版本系统的设备上, 就厉害了, 这个主题能够轻松 实现同时支持明亮 Light )主题和暗淡( Dark )主题,产生 的效果就是,基于当前时间 是否是在“夜晚”而在明亮主题和暗淡主题之间切换。
默认情况 下,对于“夜晚”的判断,是基于一个系统值的 (来自
UiModeManager.getNightMode() ) ,但是 妳也可以覆盖那个值,具体的覆盖方法在 AppCompatDelegate 中。 有两种手段可以达到这个目的:使用静态 AppCompatDelegate.setDefaultNightMode() 方法来设置整个应用( 在进程重启之前保持有效 )的默认值;或者 ,通过 getDelegate() 获取到一个AppCompatDelegate, 再使用 setLocalNightMode() 来改变当前 Activity Dialog 的对应值。
如果使用
的是 AppCompatDelegate.MODE_NIGHT_AUTO, ,则, 会使用当前时间及妳的最后一次已知位置 (如果 妳的应用拥有获取位置权限的话 ) 来自动进行白天和黑夜之间的切换 。而 MODE_NIGHT_NO MODE_NIGHT_YES 则分别会强制禁止和启用暗淡主题。
当使用 DayNight 主题时,必须彻底地测试妳的应用,因为 ,硬编码的颜色 值狠容易导致出现无法辨认的文本内容和图标。如果 妳使用的是标准的 TextAppearance.AppCompat 风格,或者使用的是从主题中获取到的颜色值,例如 android:textColorPrimary ,那么,妳会发现,这些值都会自动为妳更新了。
然而
,如果妳确实需要针对暗淡模式 自定义某些资源的话,那么,仍然是有办法的。 AppCompat 也利用了 night 资源标识目录 这样,就能够 对妳认为有必要的任何资源进行自定义了。 请考虑利用标签颜色 ,或者利用AppCompat 中的色调(tinting)支持功能, 以使得自己能够更轻松地支持这种模式。

设计支持库:底部表单

设计支持 ,实现 材料设计 中的狠多模式。 本个版本中,加入 了特性,使得开发者能够轻松地向她/他们的应用中加入 底部表单

在给某个 CoordinatorLayout 的某个子代视图( View )关联上了 BottomSheetBehavior 之后 也就是说,加上属性 app:layout_behavior="android.support.design.widget.BottomSheetBehavior" 就会自动获得适当 的触摸动作检测能力, 以支持在 五种状态之间迁移:

  • •. STATE_COLLAPSED: 这个折叠状态是默认状态,只会 在底部显示 出该布局的一小砣。 其高度可通过 app:behavior_peekHeight 属性来控制 (默认 值是 0)

  • •. STATE_DRAGGING: 中间状态,此时用户正在直接将底部表单拉出或收起

  • •. STATE_SETTLING: 短暂 的状态,此时, 该个视图 (View) 已经完全出现,即将进入最终位置

  • •. STATE_EXPANDED: 底部表单 的完全展开状态,此时 ,会是两种情况之一:整个底部表单可见 (前提 是其高度小于其容器 CoordinatorLayout ) ;或者,整个 CoordinatorLayout 被填满

  • •. STATE_HIDDEN: 此状态默认被禁用 ( 可通过 app:behavior_hideable 属性来启用 ) ,启用 这个状态的话, 就使得用户可以在底部表单上向下滑动,以完全隐藏整个底部表单

注意 ,底部表单 中的滚动区域容器必须支持嵌套滚动 (例如 ,使用 NestedScrollView RecyclerView 或在API 21+中使用 ListView/ScrollView )
如果
妳想要收到对于这些状态变更的回调,那么,可以添加一个 BottomSheetCallback

// 带有BottomSheetBehavior View

View bottomSheet = coordinatorLayout.findViewById(R.id.bottom_sheet);  

BottomSheetBehavior behavior = BottomSheetBehavior.from(bottomSheet);  

behavior.setBottomSheetCallback(new BottomSheetCallback() {  

@Override  

public void onStateChanged(@NonNull View bottomSheet, int newState) {  

// 对状态变更进行响应

}  

@Override  

public void onSlide(@NonNull View bottomSheet, float slideOffset) {  

// 对拖动事件进行响应

}  

});  

本已 有了 BottomSheetBehavior 来支持 持久底部表单 使用场景 。除此之外,这个版本中,还提供了 BottomSheetDialog BottomSheetDialogFragment 以支持 模态底部表单 使用场景。 只需要将 AppCompatDialog AppCompatDialogFragment 替换成对应的底部表单类,即可让妳的对话框表现成底部表单。

Support v4: MediaBrowserServiceCompat

支持 v4版本 是狠多支持库的基础,其中包含 了狠多对于平台较新版本中的框架功能的后向移植 ( 同时有 若干独特特性 )
在之前发布的版本中所包含的 MediaSessionCompat 类的基础上, 为了提供一个 更一致的媒体回放基础框 架, 在本版本中,加入 MediaBrowserServiceCompat MediaBrowserCompat 。它们组成 了一个兼容性解决方案,将最新的 () 应用编程接口带入到 (甚至包括那些 在棉花 糖( Marshmallow 中加入的接口 )所有 API 4 及更高版本的设备上。 从此之后, 可以更容易地支持 安卓汽车 中的音频回放 更容易地 在安卓穿带中浏览媒体文件,并且 ,还提供 了一个标准接口,使得妳的媒体回放服务可以更容易地与界面连接起来。

RecyclerView

RecyclerView 部件 ,提供了一个先进且灵活的基础,用于 创建列表 及网格 ,以及支持 动画 。本 个版本中向 LayoutManager 应用编程接口加入了一个令人激动的新特性:自动计算几何尺寸 这样, RecyclerView 就能够根本其中内容的尺寸来改变自身的尺寸了。 这就意味着,某些在之前无法实现的事情,如今可以实现了,例如, RecyclerView 的尺寸设置为 WRAP_CONTENT 妳会发现,所有内置的布局管理器(LayoutManager)如今都支持自动计算几何尺寸了。
正是因为
有这个改变,所以,请检查 一下妳的条目视图中所使用的布局参数:之前 被忽略的布局参数 (例如 在滚动方向上设置的 MATCH_PARENT)如今 会被完全遵守。
如果
妳实现了某个 并不 继承任何一个内置 LayoutManager 的自定义 LayoutManager ,那么, 以下是一个解决方案 - 妳需要调用 setAutoMeasureEnabled(true) ,并且根据 该方法的Javadoc 中的细节说明来做一些微小的改动。
注意
,尽管 RecyclerView 会对它的子代部件实施动画,但是 ,它 并不会 对它自己的尺寸变更实施动画。如果 妳想要 RecyclerView 的几何尺寸变更实施动画的话,那么,可以使用 变换应用编程接口

自定义标签页

自定义标签页 可用于无缝地变换到网页内容,同时保持妳的应用的整体观感。 在这个版本中, 可以在显示网页内容的同时向底部内容栏中加入动作。

利用 新的 addToolbarItem() 方法,可以在底部内容 栏中加入最多5 (MAX_TOOLBAR_ITEMS) 个动作,并在会话开始后使用 setToolbarItem() 来更新它们。 与之前的 setToolbarColor() 方法类似,新加入的 setSecondaryToolbarColor() 方法用于对底部内容栏的背景颜色进行自定义。

针对安卓电视的后仰库(Leanback)

后仰 ,提供了若干工具,帮助妳轻松地 将自己的应用移植到安卓电视 。其中 有狠多针对电视的体验进行了优化的标准组件。 在这个版本中, GuidedStepFragment ,发生了狠大的改进。

最明显的变动,应该是, 我们加入了第二个内容列,用于添加动作按钮 (具体 是通过覆盖 onCreateButtonActions() 或调用 setButtonActions() 来添加 ) 这样,就可以更轻松地接触到完整的动作列表,而不用在可用的 GuidedActions 列表中滚动。
说到
GuidedActions ,它也有若干新特性 ,以支持更丰富的输入功能,包括: 可编辑的描述 (通过 descriptionEditable() 来使用 ) ;下拉列表形式实现 的子动作 subActions() 以及一个 GuidedDatePickerAction

利用这些组件,妳就可以在绝对必要的情况下更轻松地获取到用户输入的信息。

金巧巧

景甜

清纯的美女模特Hedy

杨幂

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands