目前部分APP使用一种类似抽屉式的布局,像QQ那种,感觉很炫,自己也一直想做一个像那样的布局,(ps网上很多这样的例子,我下面做的就是参考网上的改变的)

  废话不就不说了,直接上代码

  1、首先建立一个布局文件activity_drawer.xml

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:paddingBottom="@dimen/activity_vertical_margin"
 6     android:paddingLeft="@dimen/activity_horizontal_margin"
 7     android:paddingRight="@dimen/activity_horizontal_margin"
 8     android:paddingTop="@dimen/activity_vertical_margin"
 9     tools:context=".DrawerActivity">
10     <android.support.v4.widget.DrawerLayout<!--重点在这里-->
11         android:id="@+id/drawer_layout"
12         android:layout_width="match_parent"
13         android:layout_height="match_parent">
14             <FrameLayout
15                 android:id="@+id/content_frame"
16                 android:layout_width="match_parent"
17                 android:layout_height="match_parent">
18                 <Button
19                     android:id="@+id/btn"
20                     android:layout_width="wrap_content"
21                     android:layout_height="wrap_content"
22                     android:text="打开"
23                     android:layout_alignParentTop="true"
24                     android:layout_alignParentLeft="true"
25                     android:layout_alignParentStart="true"
26                     android:layout_alignParentRight="true"
27                     android:layout_alignParentEnd="true" />
28             </FrameLayout>
29             <ListView
30                 android:id="@+id/left_drawer"
31                 android:layout_width="200dp"
32                 android:layout_height="match_parent"
33                 android:layout_gravity="start"
34                 android:background="#ff349710"
35                 android:choiceMode="singleChoice"
36                 android:dividerHeight="0dp"
37                 android:layout_marginTop="30dp"
38                />
39     </android.support.v4.widget.DrawerLayout>
40 </RelativeLayout>

  2.对应的Activity文件DrawerActivity.java

 1 public class DrawerActivity extends Activity {
 2     public static final String[] str = new String[]{"东部", "西部", "南部", "北部", "中部",
 3             "东南部", "西北部", "西南部", "东北部", "中西部", "中南部", "中北部"};
 4     private DrawerLayout mDrawerLayout = null;
 5     private ListView mlistView;
 6     @Override
 7     protected void onCreate(Bundle savedInstanceState) {
 8         super.onCreate(savedInstanceState);
 9         setContentView(R.layout.activity_drawer);
10
11         mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
12         mlistView = (ListView) findViewById(R.id.left_drawer);
13
14
15         //下面两种方式都可以,后者要多建立一个value的array文件
16         mlistView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,str));
17         //mlistView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,getResources().getStringArray(R.array.planets_array)));
18         Button button = (Button) findViewById(R.id.btn);
19         button.setOnClickListener(new View.OnClickListener() {
20
21             @Override
22             public void onClick(View v) {
23                 // 按钮按下,将抽屉打开
24                 mDrawerLayout.openDrawer(Gravity.LEFT);
25                 //mDrawerLayout.closeDrawers();//可以不监听,默认点击其他地方即可关闭
26                 //adapter.notifyDataSetChanged();
27             }
28         });
29         //列表控件监听
30         mlistView.setOnItemClickListener(new DrawerItemClickListener());
31     }
32
33     private class DrawerItemClickListener implements ListView.OnItemClickListener {
34         @Override
35         public void onItemClick(AdapterView parent, View view, int position, long id) {
36             selectItem(position);
37         }
38     }
39     //简单输出一些信息
40     private void selectItem(int position) {
41         new AlertDialog.Builder(this)
42                 .setTitle("打开")
43                 .setMessage("打开的位置是:"+position+"\n位置的值是:"+str[position])
44                 .setPositiveButton("确定", new DialogInterface.OnClickListener() {
45                     @Override
46                     public void onClick(DialogInterface dialogInterface, int i) {
47                     //监听事件
48                     }
49                 }).show();
50     }
51 }

  3.简单效果如下:

  这仅仅是实现了效果,关于为什么待我研究透彻了再分享。

转载于:https://www.cnblogs.com/hais/p/4710212.html

Android 抽屉布局相关推荐

  1. android drawLayout抽屉布局

    Android drawLayout布局 Android 抽屉布局写法 <android.support.v4.widget.DrawerLayoutxmlns:android="ht ...

  2. Android 抽屉效果的导航菜单实现

    抽屉效果的导航菜单 看了很多应用,觉得这种侧滑的抽屉效果的菜单很好. 不用切换到另一个页面,也不用去按菜单的硬件按钮,直接在界面上一个按钮点击,菜单就滑出来,而且感觉能放很多东西. 关于实现,搜索了一 ...

  3. android抽屉实现不同之处

    相关链接: Android 抽屉效果Demo http://www.eoeandroid.com/thread-203886-1-1.html Android效果之 抽屉效果 http://www.e ...

  4. Android抽屉(SlidingDrawer --类似android通知栏下拉效果)

    Android抽屉(SlidingDrawer)的实现发 - 红黑联盟 http://www.2cto.com/kf/201301/182507.html 可动态布局的Android抽屉之基础 htt ...

  5. Android抽屉页面效果

    2019独角兽企业重金招聘Python工程师标准>>> DrawerLayout抽屉布局,现在主流App是越来越多使用DrawerLayout,因为这样出来的效果是比较炫酷的吧!其实 ...

  6. android 抽屉组件,Android组件之DrawerLayout实现抽屉菜单

    DrawerLayout组件同样是V4包中的组件,也是直接继承于ViewGroup类,所以这个类也是一个容器类. 抽屉菜单的摆放和布局通过android:layout_gravity属性来控制,可选值 ...

  7. Android 抽屉菜单滑动时模糊背景 | 毛玻璃效果

    先来看看要实现的效果图 录制的有点模糊在补一张静态图 简单的分析一下: 1⃣️一开始我一直以为抽屉菜单的背景是一张半透明的高斯模糊图片,一直尝试着用ps做一张然后发现并没有什么卵用(纯色背景或者图片是 ...

  8. Android主布局框架整理

    Android主布局框架整理 本篇内容小生主要介绍的是几种常见的主框架的布局实现方式,仅供各位客官茶饭之余略微点评.闲话不说,切入正题. -No1.TabActivity+TabHost实现普通tab ...

  9. android如何看百分比版本,【JAVA】Android百分比布局

    开发我人生第一个app的时候,我在想有没有这么一种布局能适应任何手机的分辨率,今天让我们一起来看看Android 百分比布局PercentRelativeLayout. 使用这种布局首先我们要在gra ...

最新文章

  1. 第四范式程晓澄:机器学习如何优化推荐系统
  2. tomcat与iis公用80端口(已经发布.net项目现在开发Java项目时tomcat在eclipse中localhost:8080打不开问题)...
  3. 不用IIS运行ASP.Net网站
  4. android 无限旋转动画,android ——不停旋转动画
  5. 国嵌c语言深度,国嵌C语言3部全
  6. java order()_java.util.Collections.reverseOrder()
  7. MySQL命令窗口出现中文乱码的解决方法
  8. python画好看的图-Python竟能画这么漂亮的花,帅呆了(代码分享)
  9. linux系统下 java 环境的安装
  10. 俄勒冈州立大学计算机科学专业,美国俄勒冈州立大学专业介绍
  11. SQL每日学习——delete语句
  12. java dump可视化在线内存分析工具
  13. 闲暇时间做的一个亲属关系计算器
  14. Designing Network Design Spaces论文导读
  15. 读取文本文件内容并写到excel
  16. 解决 ERROR oslo_service.periodic_task AttributeError: ‘ComputeNode‘ object has no attribute ‘nodename‘
  17. RxJava个人笔记,具象化理解
  18. hibernate学习(4)——实体配置详解
  19. eclipse gdb gdbserver 远程调试
  20. C4996 ‘scanf‘: This function or variable may be unsafe. Consider using scanf_s instead.错误提示

热门文章

  1. python对数据进行分类_在Python中对一系列数据进行分类的最佳方法
  2. socket 收不到netty客户端消息_Netty开发 —— 首个demo学习
  3. CSDN排名及积分规则
  4. 图论--欧拉回路(模板)
  5. 支持向量机SVM(Support Vector Machines)介绍
  6. CSDN开播工具-嘉宾端使用说明
  7. C语言const 关键字
  8. 未成年人可以申请贷款吗?
  9. 2013电赛总结【西电专用】
  10. ARM和NEON指令 very gooooooood.............