基于Goolgle最新NavigationDrawer实现全屏水平平移 - 西谷开源 - 开源中国社区

   2016-10-31 0
核心提示:常见实现App 上面侧边栏菜单之前使用SlidingMenu,现在发现Goolgle原生NavigationDrawer也挺好用。但是细心的开发者们发现NavigationDrawer没有类似SlidingMenu全屏平移的效果,其实不用着急,简单修改即可实现此效果。 话不多说上代码://.....省略部分代码p

常见实现App 上面侧边栏菜单之前使用SlidingMenu,现在发现Goolgle原生NavigationDrawer也挺好用。但是细心的开发者们发现NavigationDrawer没有类似SlidingMenu全屏平移的效果,其实不用着急,简单修改即可实现此效果。

基于Goolgle最新NavigationDrawer实现全屏水平平移 - 西谷开源 - 开源中国社区 基于Goolgle最新NavigationDrawer实现全屏水平平移 - 西谷开源 - 开源中国社区 基于Goolgle最新NavigationDrawer实现全屏水平平移 - 西谷开源 - 开源中国社区 基于Goolgle最新NavigationDrawer实现全屏水平平移 - 西谷开源 - 开源中国社区

话不多说上代码:

//.....省略部分代码

    private DrawerLayout.SimpleDrawerListener simpleDrawerListener;//侧边栏基础布局DrawerLayout
    private NavigationView navigationView;//侧边栏控件
    private View contentView;//主体内容布局
    
    //.....省略部分代码

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_navigation_drawer);

        //.....省略部分代码

        drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        contentView = findViewById(R.id.content);

        //.....省略部分代码

        simpleDrawerListener  = new DrawerLayout.SimpleDrawerListener() {
            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {
                super.onDrawerSlide(drawerView, slideOffset);

                System.out.println(navigationView.getWidth()+navigationView.getX());
                //根据侧边栏控件宽度和其移动像素计算内容布局位移,使内容布局左边紧贴侧边栏控件右边
                contentView.setX(navigationView.getWidth()+navigationView.getX());

            }

            @Override
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);

                System.out.println("+++++++++++onDrawerOpened++++++++++++");
            }

            @Override
            public void onDrawerClosed(View drawerView) {
                super.onDrawerClosed(drawerView);

                System.out.println("+++++++++onDrawerClosed++++++++++++++");
            }

            @Override
            public void onDrawerStateChanged(int newState) {
                super.onDrawerStateChanged(newState);

                System.out.println("+++++++++onDrawerStateChanged++++++++++++++"+newState);
            }
        };
        drawerLayout.addDrawerListener(simpleDrawerListener);

        //.....省略部分代码

    }

代码就不发了,本实例在AndroidStudio新建Navigation Drawer Activity自动生成Demo上修改,不太懂需要demo的可以留言。看,实际上Google工程师已经把路铺好,剩下的就是广大的程序员去发挥想象力了。

 
标签: 开源 安卓开发
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • ASimpleCache
    ASimpleCache 是一个为android制定的 轻量级的 开源缓存框架。轻量到只有一个java文件(由十几个类精简而来)。1、它可以缓存什么东西?普通的字符串、JsonObject、JsonArray、Bitmap、Drawable、序列化的java对象,和 byte数据。2、它有什么特色?特色主要是
    02-05 Java开源
  • 史上最牛逼的音乐播放器—仿网易云音乐(已开源)
    史上最牛逼的音乐播放器—仿网易云音乐(已开源
    前言:音乐播放器倒见过不少,做到几乎和官方网易云音乐安卓版差不多的,还是头第一回见。aa112901的这款仿网易云音乐安卓版客户端,很多地方值得我们学习。无论是下载模块,还是换肤模块,还是炫丽的UI界面。等。用心在每一个细节。 aa11290 1 本项目的githu
  • Android常用的开源项目及其比较系列-Retrofit进
    上一篇我们谈了谈Androiod开源项目的网络框架, 比较了它们之间的优缺点,原文在这里。今天我们着重谈谈Retrofit框架如何更友好的使用,本着提出问题解决问题的原则,也为大家以后解决问题提供基本思路。目前都有哪些问题?根据官方Demo, 简单使用是这么样的
  • Git 项目推荐 | 轻量级 IM 开源项目 FamilyChat
    Git 项目推荐 | 轻量级 IM 开源项目 FamilyChat
    家聊 轻量级IM开源项目,基于环信Sdk 初衷 很久之前想教家里老人学习使用智能机,让他们能用App和家人交流沟通,但是发现市面上流行的社交软件对于他们来说学习成本太高,毕竟他们从来没使用过智能手机,这些社交软件中很多功能都是不需要的,所以就产生了自
    11-13 开源Git
  • Mark!Android最佳的开源库集锦
    Mark!Android最佳的开源库集锦
    原文: Best Android Libraries for Developers作者:Felix 翻译 :Daisy 责编 :仲培艺 工欲善其事,必先利其器。一个好的开发库可以快速提高开发者的工作效率,甚至让开发工作变得简单。本文收集了大量的Android开发库,快来切磋一下,到底哪一个最适合你。
  • Android开源工具库
    一、依赖注入DI通过依赖注入减少View、服务、资源简化初始化,事件绑定等重复繁琐工作1. AndroidAnnotations(Code Diet) android快速开发框架项目地址:https://github.com/excilys/androidannotations文档介绍:https://github.com/excilys/androidannotatio
  • Android网络开源库-Retrofit(五)简易封装
    1.前言Rrtrofit的扩展性很强,如果对retrofit不熟悉的话,是很难应对各种各样的需求的。因此,在这里,做一下简单的封装。主要为了下面三点需求:使用简单加密处理错误处理2.怎样才能简单使用为了简单粗暴,我做了以下工作。使用单例Retrofit引入RxJava在这里
  • Android网络开源库-Retrofit(四)文件相关
    以前写过一些retrofit的相关文章,当时只是自己学习研究的,最近项目,加入了retrofit,因此遇到了一些问题,需要记录一下。1.前言在以前,写过retrofit上传文件相关,但是,需求总是变化的。前面的,介绍了上传进度的监听,但是,那时候是监听单文件进度。虽
  • 十款 Material Design 风格的 Android 开源项目
    十款 Material Design 风格的 Android 开源项目
    自Android推出Material Design以来,原生的Android系统颜值越来越高,现在可以客观的说和苹果的iOS不分伯仲。这篇文章整理了一些优秀的遵循Material Design的Android开源项目,以供分享、交流和学习。0 Materialistic——Hacker News 客户端Materialistic 是
  • 2016年最值得学习的五大开源项目
    2016年最值得学习的五大开源项目
    1,Material Animations演示View的平移、缩放动画,activity进入和退出动画,界面间元素共享,并且开发者在README中,对动画原理进行了精讲,是学习动画很好的项目,项目代码量比较少,也很适合新手学习。 项目地址 GitHub: https://github.com/lgvalle/Mater
点击排行