【Android】侧滑菜单栏功能的实现(类似于QQ)
来源:互联网 发布:设置淘宝客推广条件 编辑:程序博客网 时间:2024/06/05 18:07
通过NavigationView+DrawerLayout来实现侧滑菜单的功能(效果图如上),可通过点击左上角图标以及向右滑动实现侧滑菜单
首先在主页布局xml中使用DreawerLayout作为外包装,将侧滑菜单包装起来即可,而功能则使用navigation实现
MainActivity.xml文件如下:
<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" /> <include layout="@layout/activity_main"/> <android.support.design.widget.NavigationView android:id="@+id/nav" android:layout_gravity="left" android:layout_width="wrap_content" android:layout_height="match_parent" android:fitsSystemWindows="true" xmlns:app="http://schemas.android.com/apk/res-auto" app:headerLayout="@layout/head" app:menu="@menu/new_menu"> </android.support.design.widget.NavigationView></android.support.v4.widget.DrawerLayout>侧滑菜单栏 头像处布局xml文件如下所示:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:background="#2196F3"> <ImageView android:id="@+id/person" android:layout_width="72dp" android:layout_height="72dp" android:layout_marginTop="42dp" android:src="@mipmap/icon_camera"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:layout_marginTop="24dp" android:textColor="#ffffff" android:text="户外植物识别系统v1版"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="16sp" android:layout_marginTop="12dp" android:textColor="#ffffff" android:layout_marginBottom="18dp" android:text="让你快速知道植物信息"/></LinearLayout>接下来便是侧滑菜单menu的布局文件 ,此处包含了各个菜单项可以设置icon和文字的状态,可百度menu关键词查询具体用法。此处直接在res文件夹下面直接创建一个名为menu的文件然后把这个xml文件放到menu文件夹下即可
<?xml version="1.0" encoding="UTF-8" ?><menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menu_History" android:title=" 识别历史"/> <item android:id="@+id/menu_Setting" android:title=" 相关设置"/> <item android:id="@+id/menu_Feedback" android:title=" 反馈建议"/> <item android:id="@+id/menu_AboutUs" android:actionLayout="@layout/head" android:title=" 关于我们"/></menu>其实布局完毕后,功能代码还是相对来说很简单了,接下看看相关代码
public class MainActivity extends AppCompatActivity { // 图片轮播--数据源 private List<BannerviewModel> mData; /** DrawerLayout */ private DrawerLayout drawerLayout; //侧滑菜单栏 private NavigationView navigationView; //沉浸式状态栏 private SystemBarTintManager tintManager; //标题栏-侧滑-按钮 ImageView menu; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.drawer_main); //自定义顶部导航栏方法 initView(); drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); navigationView = (NavigationView) findViewById(R.id.nav); View headerView = navigationView.getHeaderView(0); //开启手势滑动打开侧滑菜单栏,如果要关闭手势滑动,将后面的UNLOCKED替换成LOCKED_CLOSED 即可 drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED); /** * 侧滑菜单item点击事件 */ navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected( MenuItem item) { switch (item.getItemId()){ case R.id.menu_History: Intent intent1 = new Intent(); intent1.setClass(MainActivity.this, activity_AboutUs.class); startActivity(intent1); //此处不能加Finsh杀死界面否则点击返回会退出程序而不是回到主界面 break; case R.id.menu_Setting: Intent intent2 = new Intent(); intent2.setClass(MainActivity.this, activity_AboutUs.class); startActivity(intent2); break; case R.id.menu_Feedback: Toast.makeText(MainActivity.this,item.getTitle().toString(),Toast.LENGTH_SHORT).show(); break; case R.id.menu_AboutUs: Toast.makeText(MainActivity.this,item.getTitle().toString(),Toast.LENGTH_SHORT).show(); break; } drawerLayout.closeDrawer(navigationView); return true; } });
这样就完成了侧滑菜单了~~;
大家看效果图时有没有发现,我的状态栏和我的titlebar颜色是一样的,这就是沉浸式状态栏的效果~~~沉浸式效果非常容易设置,详情见这篇,链接在下面
沉浸式状态栏设置http://blog.csdn.net/yuxunye85/article/details/78204459
阅读全文
0 0
- 【Android】侧滑菜单栏功能的实现(类似于QQ)
- 类似于QQ的聊天记录的侧滑删除功能
- Android 打开手机QQ,实现类似于客服功能
- 【Android】实现类似于QQ将好友的头像用作快捷方式。
- Android DrawerLayout和Navigationview实现类似于QQ的侧面导航
- Android学习之仿QQ侧滑功能的实现
- Android类似于QQ账号登陆下拉框效果的实现(附源码)
- 类似于手机qq空间的下拉tableView上面的图片放大的功能的实现
- toast(uiview) 类似于android的iostoast功能实现
- SwipeMenuListView实现类似于QQ侧滑删除效果
- Android 底部菜单栏Tab功能的几种实现方式
- Android 底部菜单栏Tab功能的几种实现方式
- Java实现窗体隐藏,功能类似于QQ窗口自动隐藏
- Android群英传——类QQ侧滑菜单栏效果
- Android侧滑显示菜单栏效果的实现
- Android侧滑菜单栏是怎么实现的?
- Android 文件的浏览(类似于FileDialog的功能)
- Android 文件的浏览(类似于FileDialog的功能)
- JavaScript Array map()方法
- css设置多余显示省略号
- 未能加载文件或程序集“SuperMap.Mapping, Version=7.0.0....的解决方法
- poj 1308 is it a tree?(图的性质||基础并查集) (同hdu 1272 小希的迷宫 )
- DFS-lintcode恢复ip地址(Restore IP Addresses)
- 【Android】侧滑菜单栏功能的实现(类似于QQ)
- Java 枚举(enum) 详解7种常见的用法
- 系统还原软件原理
- 基于Token的WEB后台认证机制
- 拓扑排序解210. Course Schedule II
- linux 中 error 处理函数详解
- 带你入门javascript数组
- Java 工程师技能树(有下载的xmind源文件)
- java写的spark程序的本地运行和集群运行