【安卓笔记】抽屉式布局----DrawerLayout

效果如下:

DrawerLayout来自support.v4包,所以不用考虑兼容性问题。其次,这种布局类似风靡一时的侧滑菜单,但是比侧滑菜单轻巧许多。

下面介绍这种布局的使用方式。

1.在你的项目中导入support.v4包。

2.编辑一个布局,根节点为android.support.v4.widget.DrawerLayout,此节点下只允许有两个子节点,第一个为将来主页面的内容,第二个节点即为"抽屉"内容,通常是一个ListView。比如:

<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" >
    <LinearLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈"
            android:textColor="#000"
            android:textSize="20sp" />
        <Button
            android:id="@+id/but_open"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="开启抽屉" />
    </LinearLayout>
    <!-- 一定要加 layout_gravity="start" -->
    <ListView
        android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#111"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp" />
</android.support.v4.widget.DrawerLayout>

3.编写代码,监听相关事件:

package com.example.drawerlayoutdemo1;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
public class MainActivity extends Activity
{
	protected static final String TAG = "MainActivity";
	private DrawerLayout mDrawerLayout = null;
	private ListView lv = null;
	private Button but_open = null;
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
		lv = (ListView) findViewById(R.id.left_drawer);
		but_open = (Button) findViewById(R.id.but_open);
		but_open.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View v)
			{
				mDrawerLayout.openDrawer(Gravity.LEFT);
			}
		});
		lv.setAdapter(new ArrayAdapter<String>(this,R.layout.test,R.id.tv_item,new String[]{"条目1","条目2","条目3"}));
		mDrawerLayout.setDrawerListener(new DrawerLayout.SimpleDrawerListener()
		{
			@Override
			public void onDrawerClosed(View drawerView)
			{
				Log.i(TAG,"抽屉关闭了...");
			}
			@Override
			public void onDrawerOpened(View drawerView)
			{
				Log.i(TAG,"抽屉打开了...");
			}
			@Override
			public void onDrawerSlide(View drawerView, float slideOffset)
			{
				Log.i(TAG,"抽屉在滑动...");
			}
			@Override
			public void onDrawerStateChanged(int newState)
			{
				switch (newState)
				{
				case DrawerLayout.STATE_DRAGGING:
					Log.i(TAG,"拖动状态");
					break;
				case DrawerLayout.STATE_IDLE:
					Log.i(TAG,"静止状态");
					break;
				case DrawerLayout.STATE_SETTLING:
					Log.i(TAG,"设置状态");
					break;
				default:
					break;
				}
			}
		});
		lv.setOnItemClickListener(new OnItemClickListener()
		{
			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id)
			{
				switch (position)
				{
				case 0:
					Log.i(TAG,"条目1被点击");
					break;
				case 1:
					Log.i(TAG,"条目2被点击");
					break;
				case 2:
					Log.i(TAG,"条目3被点击");
					break;
				}
			}

		});
	}
}

【安卓笔记】抽屉式布局----DrawerLayout,布布扣,bubuko.com

时间: 2024-10-08 20:50:39

【安卓笔记】抽屉式布局----DrawerLayout的相关文章

Android开发实战之拥有Material Design风格的抽屉式布局

在实现开发要求中,有需要会使用抽屉式布局,类似于QQ5.0的侧滑菜单,实现的方式有很多种,可以自定义控件,也可以使用第三方开源库. 同样的谷歌也推出了自己的侧滑组件——DrawLayout,使用方式也很简单,配合着toolbar有着不一样的滑动效果,所以推荐大家使用. 如下是效果图,是不是更具交互性,更加酷炫? **首先是XML** drawlayout分为两部分:侧滑界面和内容界面,所以drawlayout中应该有两个布局,在侧滑的布局中设置属性:android:layout_gravity=

【安卓笔记】仿猎豹清理大师波浪效果

先来看效果: 实现方式----->自定义控件 核心代码: package com.example.wavedemo1; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.os.Handler; import

【安卓笔记】快速开发设置界面-----PreferenceActivity

通常app都会有一个设置界面,如下: 通常做法是自己定义布局,然后在代码里面添加响应函数,并将结果保存到Sharedpreferences中. android给我们提供了PreferenceActivity来简化开发设置界面. 你只需这样做: 1.创建一个类继承PreferenceActivity,并导入设置界面布局: package com.example.preferenceactivitydemo1; import android.os.Bundle; import android.pre

【安卓笔记】切换图片(底部带有小点效果)

下面我们要实现这样的效果: 我们将采用两种方式实现这种效果: 1.使用ViewPager: 思路:ViewPager提供左右滑动图片操作的支持,下方小点在代码中动态创建,整个布局采用FrameLayout. 先看布局: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" and

Xamrin开发安卓笔记(二)

安装篇 Xamrin开发安卓笔记(一) 昨天调理一天AAPT.EXE 被推出的问题(错误代码 error MSB6006: "aapt.exe" exited with code -1073741819),纠结一天到底是什么原因,寝食难安,后来想通了可能是安卓模拟器的原因.今早换了一个安卓SDK,到现在没出现AAPT的错误. 并且可以可视化布局(之前可视化布局很丑陋).然后接着写,暂时抛弃vs2015,因为2015的BUG直接影响我编写的感觉,所以先用vs2013 update4继续写

【安卓笔记】带自定义属性的view控件

开发中经常需要自定义view控件或者组合控件,某些控件可能需要一些额外的配置.比如自定义一个标题栏,你可能需要根据不同尺寸的手机定制不同长度的标题栏,或者更常见的你需要配置标题栏的背景,这时候,你就会考虑到你写的view的扩展性问题,通常情况下,我们可以为这个自定义的标题栏加上一些setXXX方法,供外界调用,设置其颜色.长度等属性.但是我们都知道,在使用系统控件时,我们大多数情况下并不需要在代码中配置控件,而仅仅只需在布局文件中对控件宽.高.颜色等进行配置,这样做的好处就将UI与业务逻辑解耦,

Xamrin开发安卓笔记(三)

安装片 Xamrin开发安卓笔记(一) Xamrin开发安卓笔记(二) 这次记录的是滚动条跟sqlite创建.存储和读取. 先说滚动条相关,这个是比较简单的知识点. 当有一屏的东西需要填写的时候例如下图 我们都知道如果点击第一个文本框则会出现输入法.但是如果没有滚动条的话,只能依靠输入法中的回车一个一个的向下移动(虽然现在输入法都带自我关闭功能),很不友好,那么就需要滚动条,看了一下布局属性有滚动条,但是使用起来不好使.隐约想起来,安卓有滚动条控件,就在左边找了一下,果真找到这个玩意了.如下图

安卓学习-界面-布局-RelativeLayout

RelativeLayout相对布局,所有内部的组件都是相对的 XML属性 XML属性 函数 说明 android:gravity setGravity 内部组件的对其方式 android:ignoreGravity setIgnoreGravity 设置哪个组件不受Gravity影响 RelativeLayout.LayoutParams用来设置内部组件的对齐方式 XML属性 说明 android:layout_centerHorizontal 水平居中 android:layout_cent

【安卓笔记】通过发送特定的短信远程控制手机

实现效果: 1.发送指令#*location*#,可以远程获取到手机的地理位置(经纬度),并以短信的形式返回. 2.发送指令#*locknow*#,可以远程锁屏并设置锁屏密码. 实现原理: 1.注册广播接受者,监听手机收到的短信,并对符合要求的特定短信进行拦截和处理. 2.通过LocationManager获取地理位置. 3.使用DevicePolicyManager实现锁屏.设置锁屏密码等操作. 步骤: 1.创建一个可以获取地理位置的工具类: package cn.edu.chd.mobile