本文同步自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. 1.5 WEB API 上传文件

    1.前提,设置跨域 2.在控制器头添加允许跨域 /// <summary> /// 文件管理口控制器 /// </summary> [EnableCors("*&qu ...

  2. Set<E> 接口简明

    java. util. Set 接口 Set 接口中的方法和 Collection 中方法一致的.Set 接口取出方式只有一种, 迭代器 . HashSet : 底层数据结构是哈希表,线程 是不同步的 ...

  3. [LeetCode] Convert BST to Greater Tree 将二叉搜索树BST转为较大树

    Given a Binary Search Tree (BST), convert it to a Greater Tree such that every key of the original B ...

  4. JavaScript之Promise对象

    含义 Promise 是异步编程的一种解决方案,比传统的解决方案--回调函数和事件--更合理和更强大.它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了 Promise 对象. ...

  5. github的简单使用

    查了好多入门教程(图文并茂可以了解一些基本步骤),感觉逻辑欠缺,(很多东西跟着教程了解会用了,不了解逻辑,只是会了这一个,其他的还是很蒙),来一起理一理把 1.第一步下载并注册(这个自己解决) 2.用 ...

  6. [NOI 2014]动物园

    Description 题库链接 \(t\) 组询问.每组询问给出一个字符串 \(S\) .要求求出一个 \(num\) 数组一一对于字符串 \(S\) 的前 \(i\) 个字符构成的子串,既是它的后 ...

  7. [LOJ 6270]数据结构板子题

    Description 有n个区间,第i个区间是[li,ri],它的长度是ri−li. 有q个询问,每个询问给定L,R,K,询问被[L,R]包含的且长度不小于K的区间数量. 你想,像这种板子题,你随手 ...

  8. HDU 2082 找单词

    Problem Description 假 设有x1个字母A, x2个字母B,..... x26个字母Z,同时假设字母A的价值为1,字母B的价值为2,..... 字母Z的价值为26.那么,对于给定的字 ...

  9. VS2012中C++,#include无法打开自己所写的头文件(.h)

    最近刚开始学cocos2d-x,创建项目之后,自己按照<cocos2d-x 3.x 游戏开发>的教程写代码 先写了一个头文件  MyHelloWorldScene.h 然后在  AppDe ...

  10. C语言第三次程序设计作业

    (一)改错题 计算f(x)的值:输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数. 1)源程序(有错误的程序) #include <stdio.h> int main(v ...