• 欢迎访问风的记忆博客网站,如有疑问请加作者QQ或者微信联系。作者QQ:524100248,微信号:sendtion。

Support Library 25.0.0 更新讲解

安卓教程 sendtion 8年前 (2016-10-21) 7823次浏览 已收录 11个评论 扫描二维码

来源:简书

伴随着 Android 7.1(API 25)的的发布,一系列相关的开发工具与套件也一起更新了,包括 Android Studio 2.2.2 与 Support Library 25.0.0。其中 AS 的更新包括日常的 bug 修复与性能提升,还有对 7.1 的支持。而 Support 包的更新如下:

Important changes

ContextCompat 的构造方法变为 protected

ActivityCompat 的构造方法变为 protected

ActivityCompat 的 getReferer(Activity)方法变为 static

删除方法 android.support.design.widget.CoordinatorLayout.Behavior.isDirty(CoordinatorLayout, V)

删除方法 android.support.v4.media.session.MediaSessionCompat.obtain(Context, Object)

删除方法 android.support.v4.media.session.MediaSessionCompat.QueueItem.obtain(Object)

删除方法 android.support.v7.widget.Space,应当使用 android.support.v4.widget.Space.(作者注:在布局需要空白 View 时很高效)

New APIs

新增 android.support.design.widget.BottomNavigationView 类(更新的主角),实现了 Material Design 中的 bottom navigation 设计样式,就是我们常见的底部 tab 栏
Support Library 25.0.0 更新讲解
设计标准
新增 android.support.v13.view.inputmethod 包,其中的相关类实现了在 API 13 时引入的 android.view.inputmethod.InputConnection 特性

新增 android.v7.widget.RecyclerView.DividerItemDecoration 类,提供 RecyclerView 分割线的一种基础实现,目前只支持 LinearLayoutManager 的横向和纵向布局

将 API 24 中引入的自定义 Notification 布局的相关类加入到兼容包中,即 DecoratedCustomViewStyle 和 DecoratedMediaCustomViewStyle

功能预览

Support Library 25.0.0 更新讲解
Screenshot
作者第一时间尝试了其中的部分新 API,交互效果真的很棒,建议运行 demo 查看细节!下面大概说下使用方式:
首先在布局中引入 BottomNavigationView,


1
2
3
4
5
6
7
8
9
<android.support.design.widget.BottomNavigationView
        android:id="@+id/navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@color/colorPrimary"
        design:itemIconTint="@color/item_text_color"
        design:itemTextColor="@color/item_text_color"
        design:menu="@menu/menu_navigation"/>

可以看到使用了 design 的三个自定义 attr,menu 是用来指定 tab 栏中的各个 tab 的,官方说 tab 数量应该介于 3 个到 5 个之间,所以这里以 3 个 item 为例,测试 menu 如下


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/item1"
        android:checked="true"
        android:icon="@drawable/ic_mail_outline_black_24dp"
        android:title="Message"/>

    <item
        android:id="@+id/item2"
        android:icon="@drawable/ic_call_black_24dp"
        android:title="Call"/>

    <item
        android:id="@+id/item3"
        android:icon="@drawable/ic_person_black_24dp"
        android:title="Contact"/>
</menu>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="#fff" android:state_checked="true"/>
    <item android:color="#fff" android:state_pressed="true"/>
    <item android:color="#ccc"/>
</selector>

itemIconTint 是为 tab 里的 icon 着色,这里使用了跟文字相同的颜色效果。代码中就比较简单了:


1
2
3
4
5
6
7
8
navigationView = (BottomNavigationView) findViewById(R.id.navigation);
navigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
     @Override
     public boolean onNavigationItemSelected(@NonNull MenuItem item) {
           Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show();
           return false;
     }
});

而上方的应用列表则使用 RecyclerView,并搭配了新的 divider 类:


1
2
3
4
5
6
7
mRecyclerView = (RecyclerView) findViewById(R.id.recyclerview);
mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
mAdapter = new AppInfoAdapter(this, getAppInfo(), R.layout.item_app_info);
mRecyclerView.setAdapter(mAdapter);
// New in recyclerview-25.0.0
mRecyclerView.addItemDecoration(new DividerItemDecoration(this, mLayoutManager.getOrientation()));

调用 DividerItemDecoration 中的 setDrawable(@NonNull Drawable drawable)方法是可以替换 divider 样式的。

文/FullStack(简书作者)

原文链接:http://www.jianshu.com/p/f3b489b2fac8

著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。


风的记忆 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Support Library 25.0.0 更新讲解
喜欢 (1)
[sendtion@126.com]
分享 (0)
sendtion
关于作者:
一个不断奋斗追逐梦想的少年~
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(11)个小伙伴在吐槽
  1. 科技不如别人,也只能抗议抗议了。
    amina2018-10-11 02:41 回复 Windows 10 | Chrome 69.0.3497.100
  2. 谢谢博主分享,很实用! 欢迎回访:www.qhdown.cn
    www.qhdown.cn2016-12-16 13:00 回复 未知操作系统 | 未知浏览器
  3. 感谢分享 祝您开心快乐每一天! 欢迎回访:www.tmcore.com
    www.tmcore.com2016-12-09 13:53 回复 未知操作系统 | 未知浏览器
  4. 文章很好~!赞 诚交友链 站务申请:www.xevip.cn
    www.xevip.cn2016-11-15 11:20 回复 未知操作系统 | 未知浏览器
    • sendtion
      请按照规则,在友情链接页面申请
      sendtion2016-11-17 10:02 回复 未知操作系统 | 未知浏览器
  5. 文章写得不错,支持下哦!!
    m.suofeiya.com2016-11-01 15:24 回复 未知操作系统 | 未知浏览器
  6. 我表示:慢慢看吧 ,总是会有值得学习的地方
    她们说2016-11-01 10:06 回复 未知操作系统 | 未知浏览器
  7. 谢谢分享
    律通律师事务所管理软件2016-10-28 16:23 回复 未知操作系统 | 未知浏览器
  8. 技术员一名,好利害呢
    靠谱学生兼职网2016-10-28 08:58 回复 未知操作系统 | 未知浏览器
  9. 感谢分享 祝您开心快乐每一天! 欢迎回访:http://www.3gwb.com
    小易分享网2016-10-27 07:40 回复 未知操作系统 | 未知浏览器
  10. 代码,看天书
    柒号淘金2016-10-26 20:52 回复 未知操作系统 | 未知浏览器