本文同步自wing的地方酒馆

布吉岛大家有木有看这一篇文章,再见,汉堡菜单,我们有了新的 Android 交互设计方案

本库下载地址:https://github.com/githubwing/ByeBurgerNavigationView

里面介绍的新得交互是这样的:

总之总结一下就是:

  • 滚动时隐藏: 我们希望在用户的屏幕上显示尽可能多的内容。因此,我们决定在向下滚动的时候隐藏导航栏,从而给内容区域提供更多的空间。而向上滚动可以使导航栏重新显现。
  • 变换式导航栏: Material Design 底部栏有一个非常平滑的动画,它参考了变换式导航栏——在不同目标间切换的时候,被选中的部分会被放大,同时未被选中的元素会被向后移动,从而在导航栏上浏览不同的目标就有点像在浏览一个旋转木马。我们决定要使用这种效果因为它使得切换导航目标变得更加有趣了。我们希望这可以推动我们的用户更多地在应用的不同功能组间切换。同时,该动画在我们的下一个观点中非常重要。

恩~ 看起来效果还不错,所以我就封装了一下系统的BottomNavigationView并且添加了滑动隐藏效果~ 实现如上图效果,只需要2步!

先来看看使用我的库的效果:

第一步:写一个xml,以CoordinatorLayout为跟布局。把ByeBurgerNavigationView加入到布局中

<android.support.design.widget.CoordinatorLayout>
<Viewpager />
<com.wingsofts.byeburgernavigationview.ByeBurgerNavigationView
<--! important -->
app:menu="@menu/bottom"
app:layout_behavior="@string/bye_burger_behavior"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:itemIconTint="@color/colorPrimary"
app:itemTextColor="@color/colorPrimary"
/>
</android.support.design.widget.CoordinatorLayout>

注意app:menu是给菜单的布局关联的,app:layout_behavior是库自留behavior的包名。。照写就对了。。

第二部,创建一个menu xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:icon="@drawable/ic_home_black_24dp"
android:enabled="true"
app:showAsAction="ifRoom"
android:title="home"/> <item
android:icon="@drawable/ic_search_black_24dp"
android:enabled="true"
app:showAsAction="ifRoom"
android:title="search"/>
<item
android:icon="@drawable/ic_account_circle_black_24dp"
android:enabled="true"
app:showAsAction="ifRoom"
android:title="me"
/>
<item
android:icon="@drawable/ic_settings_black_24dp"
android:enabled="true"
app:showAsAction="ifRoom"
android:title="setting"
/>
</menu>

之后在代码里将viewpager和byeburger关联即可

    mByeBurger.setOnNavigationItemSelectedListener(
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override public boolean onNavigationItemSelected(@NonNull MenuItem item) {
if(item.getTitle().equals("home")){
mViewPager.setCurrentItem(0);
}else if(item.getTitle().equals("search")){
mViewPager.setCurrentItem(1);
}else if(item.getTitle().equals("me")){
mViewPager.setCurrentItem(2);
}else if(item.getTitle().equals("setting")){
mViewPager.setCurrentItem(3);
}
return false;
}
});

以上就完成了使用~

如果你觉得还不错 欢迎star

本库下载地址:https://github.com/githubwing/ByeBurgerNavigationView

欢迎加入我的android群:425983695

Android仅2步实现 滚粗 汉堡导航栏效果~ 全新底部导航交互(滑动隐藏)的更多相关文章

  1. Android商城开发系列(三)——使用Fragment+RadioButton实现商城底部导航栏

    在商城第一篇的开篇当中,我们看到商城的效果图里面有一个底部导航栏效果,如下图所示: 今天我们就来实现商城底部导航栏,最终效果图如下所示:   那么这种效果是如何实现,实现的方式有很多种,最常见的就是使 ...

  2. Android之仿今日头条顶部导航栏效果

    随着时间的推移现在的软件要求显示的内容越来越多,所以要在小的屏幕上能够更好的显示更多的内容,首先我们会想到底部菜单栏,但是有时候像今日头条新闻客户端要显示的内容太多,而且又想在主界面全部显示出来,所以 ...

  3. Android UI体验之全屏沉浸式透明状态栏效果

    前言: Android 4.4之后谷歌提供了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏. 虚拟按键动态隐藏, 应用可以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种 身临其境 的体 ...

  4. android开发(49) android 使用 CollapsingToolbarLayout ,可折叠的顶部导航栏

    概述 在很app上都见过 可折叠的顶部导航栏效果.google support v7  提供了 CollapsingToolbarLayout 可以实现这个效果.效果图如下:    实现步骤 1. 写 ...

  5. Android开发关闭虚拟按钮、底部导航条

    在Android开发中,遇到了一系列大大小小的问题,其中一个就是屏蔽底部实体键,我找了很多的博客也尝试了许许多多的方法,但始终不能屏蔽 HOME键,后来看见一篇博客说在Android 4.0以后,屏蔽 ...

  6. THUWC2018滚粗记

    THUWC2018滚粗记 前言 又是一篇滚粗记, 不过可能还要写过很多很多篇滚粗记, 才会有一篇不是滚粗记的东西啦 总而言之,我现在还是太菜了 还要过一大段时间我才会变强啦 Day -inf 联赛考完 ...

  7. NOIp2017 滚粗记

    NOIp2017 滚粗记 Day0 早上 早自习的时候,班主任忽然告诉我们, 我们要参加期中考试... 这对于我们真是一个沉重的打击... 但是,管不着了 明天就死去考试了 上午 \(8:10\)到了 ...

  8. THUWC2019滚粗记

    Day-1 今年年初,留坑,以后补,多多关注. Day0 上午吃了碗粉,就坐地铁到了高铁站. 做高铁从长沙到了广州,最大的感受就是热热热热热热热热. 所以太热了不说了.(雾 汉堡王真香 Day1 上午 ...

  9. THUSC2018滚粗记

    THUSC2018滚粗记 前言 大家好,我是\(yyb\),我的博客里又多了一篇滚粗记, 我记得我原来在某篇滚粗记中曾经写过 \(yyb\)还会写很多很多次滚粗记才会有一篇不是滚粗记的东西. 看起来这 ...

随机推荐

  1. python json.dumps 中的ensure_ascii 参数引起的中文编码问题

    在使用json.dumps时要注意一个问题   >>> import json >>> print json.dumps('中国') "\u4e2d\u5 ...

  2. innerHTML与innerText的区别

    innerHTML获取元素的HTML内容,和设计元素的HTML内容(HTML标签会被解析)例如:ele.innerHTML="<strong>我会被解释加粗</strong ...

  3. 【原创】公司各个阶段 CTO 需要做什么?(下篇)

    假设一个公司发展有以下几个阶段: 0 :创始阶段: 0.5 :有产品但无管理阶段: 1 :经过 1年的发展初步稳定的阶段: 1+ :稳步发展阶段. 上一篇文章中,我们聊了公司在初创阶段,CTO 需要做 ...

  4. [LeetCode] Find K Closest Elements 寻找K个最近元素

    Given a sorted array, two integers k and x, find the k closest elements to x in the array. The resul ...

  5. [LeetCode] Replace Words 替换单词

    In English, we have a concept called root, which can be followed by some other words to form another ...

  6. ios、移动端 input type=date无法点击的问题解决方法

    正常用input type = "text",获取焦点的时候,将type 改成 date即可. <div class="form-item"> &l ...

  7. webstorm git团队开发技巧总结(一)

    ---恢复内容开始--- 1.git查看和修改用户名,邮箱 用户名和邮箱地址是本地git客户端的一个变量,不随git库而改变.每次commit都会用用户名和邮箱记录. (1)查看用户名和地址 git ...

  8. 用js来实现那些数据结构07(链表01-链表的实现)

    前面讲解了数组,栈和队列.其实大家回想一下.它们有很多相似的地方.甚至栈和队列这两种数据结构在js中的实现方式也都是基于数组.无论增删的方式.遵循的原则如何,它们都是有序集合的列表.在js中,我们新建 ...

  9. 机器学习技法:03 Kernel Support Vector Machine

    Roadmap Kernel Trick Polynomial Kernel Gaussian Kernel Comparison of Kernels Summary

  10. [Codeforces 864E]Fire

    Description Polycarp is in really serious trouble — his house is on fire! It's time to save the most ...