android抽屉风格,Android开发实战之拥有Material Design风格的抽屉式布局
在实现开发要求中,有需要会使用抽屉式布局,类似于QQ5.0的侧滑菜单,实现的方式有很多种,可以自定义控件,也可以使用第三方开源库。
同样的谷歌也推出了自己的侧滑组件——DrawLayout,使用方式也很简单,配合着toolbar有着不一样的滑动效果,所以推荐大家使用。
如下是效果图,是不是更具交互性,更加酷炫?
**首先是XML**
drawlayout分为两部分:侧滑界面和内容界面,所以drawlayout中应该有两个布局,在侧滑的布局中设置属性:android:layout_gravity="start",就可以实现侧滑了。
下面是XML文件,仅作参考:
android:layout_width="match_parent"android:layout_height="match_parent"xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/dl_content">
android:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/cl_content">
android:layout_width="match_parent"android:layout_height="wrap_content"app:layout_scrollFlags="scroll|enterAlways"android:id="@+id/ft_host">
android:id="@+id/nv_left_content"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_gravity="start"app:itemIconTint="#333"app:itemTextColor="#333"app:headerLayout="@layout/left_home_top"app:menu="@menu/left_home_botton"
/>
**代码部分**
接下来就是让toolbar和drawlayout关联起来。这部分也很简单。让toolbar代替actionbar。这里有个注意点,不能让Activity继承Activity,而是继承于它的子类AppCompatActivity,否则是找不到setSupportActionBar(toolbar)这个方法的,当我们关联起来之后,就可以使用ActionBarDrawerToggle了,它实现了
drawlayout的滑动监听,谷歌也将它和Material Design风格的动画特效关联起来了。
当我们实现了这一步时,让我们看看效果:
可以发现,按钮被挡住了,如果你用过印象笔记的客户端,你会发现,它的侧滑按钮也被挡住了,所以一点都不酷炫了!!!!!
但是作为一个追求完美无bug的安卓开发人员是绝对不允许这样的事的。
**重写onDrawerSlide**
通过重写onDrawerSlide方法重新获取滑动范围,让他贴着内容界面划出。代码也很简单这里贴出主要代码:
private voidinitView() {
setSupportActionBar(toolbar);
drawerToggle=new ActionBarDrawerToggle(this,drawerLayout,toolbar,
R.string.open,R.string.close){
@Overridepublic void onDrawerSlide(View drawerView, floatslideOffset) {
WindowManager windowManager=(WindowManager) getSystemService(
getApplicationContext().WINDOW_SERVICE);
Display display=windowManager.getDefaultDisplay();
linearLayout.layout(navigationView.getRight(),0,
display.getWidth()+navigationView.getRight(),
display.getHeight());super.onDrawerSlide(drawerView, slideOffset);
}
};
drawerLayout.setDrawerListener(drawerToggle);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@Overridepublic voidonPostCreate(Bundle savedInstanceState) {super.onPostCreate(savedInstanceState);
drawerToggle.syncState();
}
@Overridepublic voidonConfigurationChanged(Configuration newConfig) {super.onConfigurationChanged(newConfig);
drawerToggle.onConfigurationChanged(newConfig);
}
最终的效果图就是开篇的效果,是不是很酷炫,用户体验也比传统的侧滑好的多了。最后多谢浏览,我会继续加油哒!
原文:http://www.cnblogs.com/lovelyYakir/p/5793251.html
android抽屉风格,Android开发实战之拥有Material Design风格的抽屉式布局相关推荐
- GitHub上受欢迎的Android UI Library-项目开发实战篇:带各类框架链接地址详细解说及使用方法
这是我列举的下列所有框架github地址:https : //github.com/opendigg/awesome-github-android-ui 抽屉菜单类的框架 MaterialDrawer ...
- Android 2.3应用开发实战
Android 2.3应用开发实战全面介绍Android OS操作环境,包括SDK 2.3版最新内容 丰富的范例程序详解Android应用开发,便于读者快速掌握 每一章的主题都安排进阶学习,满足不同读 ...
- Android经典项目案例开发实战宝典
Android经典项目案例开发实战宝典 Android 系统并不自带文件管理器,但是很多情况下,我们有诸如从SD中打开文件的需要,怎么办呢?相信大家都比较习惯Windows 下操作文件和文件夹的方式, ...
- 开发Google Material Design风格的WPF程序
原文:开发Google Material Design风格的WPF程序 今天在网上看到了一个Material Design风格的WPF皮肤,看上去还是挺不错的 这个项目是开源的,感兴趣的朋友可以下载试 ...
- 开启Fluter基础之旅二-------Future再论、常用组件、Material Design风格组件学习
Future再论: 这里在继续往下学习之前,先来看一下Dart语言关于Event-Queue和Microtask Queue需要注意的一个小点,这个在之前https://www.cnblogs.com ...
- Material Design风格登录注册
本文实现了以下功能 完整的代码和样例托管在Github 当接口锁定时,防止后退按钮显示在登录Activity 上. 自定义 ProgressDialog来显示加载的状态. 符合材料设计规范. 悬浮标签 ...
- 开启Fluter基础之旅三-------Material Design风格组件、Cupertino风格组件、Flutter页面布局篇...
Material Design风格组件: 继续接着上一次https://www.cnblogs.com/webor2006/p/12545701.html的Material Design进行学习. A ...
- 12个Material Design风格控件的使用
项目在GitHub上的地址: https://github.com/Hebin320/MaterialDesignUse CSDN上的下载地址 http://download.csdn.net/det ...
- Flutter 入门学习(五)— Material Design风格组件
文章目录 1. 概述 2. App结构和导航组件 2.1 MaterialApp(应用组件) 2.1.1 设置主页 2.1.2 路由处理 2.1.3 自定义主题 2.2 Scaffold(脚手架组件) ...
最新文章
- 一起学习android图片四舍五入图片集资源 (28)
- python的装饰器迭代器与生成器_python3 装饰器、列表生成器、迭代器、内置方法详解等(第四周)...
- 我的小型网站搜索分词中遇到的问题
- RocketMq案例,生产者,消费者,消息订阅
- vue3中ref、reactive、shallowRef、 shallowReactive、toRaw、unref、toRef、toRefs、customRef使用与区别
- 滴滴是如何搭建起PB级数据中台的?
- Android官方开发文档Training系列课程中文版:手势处理之滚动动画及Scroller
- hdoj 1013 Digital Roots
- 【今日CS 视觉论文速览】Wed, 12 Dec 2018
- s3c2440第一个裸奔程序——跑马灯(转)
- django pdf转html5,python – 在Django站点中将HTML转换为PDF
- idea创建Maven项目后启动报404
- 安卓psp模拟器哪个好_更完美!安卓PSP模拟器PPSSPP 0.9.9发布
- 徒步50公里,35岁的联想可以,你也可以
- 没考驾照的恭喜了!上海打响第一枪!
- JAVA验证 手机、邮箱、电话、QQ 格式是否正确
- 【无标题】【全开源】bat编辑器4.5
- (C语言)用‘*’打印平行四边形
- 【汽车总线技术】CAN和CAN FD总线故障诊断
- H3C交换机路由器的策略路由配置
热门文章
- 读书笔记——数据库系统概论
- 公共方法之运算符,len,del,max,min,range,enumerate
- dbhelp mysql c_C++写的一个MYSQL控制台(3)
- 为什么input中的maxlength属性失效了
- Linux下Git免输密码解决方式
- Visual studio 2012 创建web service
- 读取XML文件报 - Content is not allowed in prolog
- python 速成学堂_Python 与数据科学入门
- 学微电子要学计算机哪种语言,微电子学与计算机,模板.doc
- Python中报错Invalid return character or leading space in header: Cookie