Android DrawerLayout 抽屉

DrawerLayout 在supportV4 Lib在。类似的开源slidemenu如,DrawerLayout父类ViewGroup,自定义组件基本上都是扩展类。

android.support.v4.widget.DrawerLayout

以下是个简单的使用方法演示。点左上角的button 打开抽屉菜单。

点击相应的ITEM 切换相应的内容,内容显示使用Fragment。这里没用到ActionBar来做切换

<?

xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" > <!-- 这里是内容区域 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="55dp"
android:background="#9370DB"
android:orientation="horizontal" > <ImageView
android:id="@+id/slide"
android:layout_width="48dp"
android:layout_height="48dp"
android:scaleType="fitCenter"
android:layout_gravity="center_vertical"
android:src = "@drawable/slide"
/> </LinearLayout> <FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</FrameLayout> <!-- 抽屉内容 -->
<ListView
android:id="@+id/drawer_content"
android:layout_width="280dp"
android:layout_height="match_parent"
android:listSelector="#336699"
android:divider="#B0C4DE"
android:dividerHeight="1px"
android:layout_gravity="start"
android:background="#8470FF" /> </android.support.v4.widget.DrawerLayout>
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.widget.DrawerLayout;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView; public class DrawerLayoutActivity extends FragmentActivity { private DrawerLayout mDrawerLayout;
private ListView drawerContent;//抽屉内容 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.drawer_layout); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
drawerContent = (ListView) findViewById(R.id.drawer_content);
mDrawerLayout.setDrawerListener(new DemoDrawerListener());
addHeader(drawerContent);//ListView Header头
drawerContent.setAdapter(new MyAdapter());
drawerContent.setOnItemClickListener(new DrawerItemClickListener());
findViewById(R.id.slide).setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
mDrawerLayout.openDrawer(drawerContent);//打开抽屉内容
}
}); //显示默认的HOME
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new HomeFragment()).commit(); } private void addHeader(ListView mDrawer2) {
View view = LayoutInflater.from(this).inflate(R.layout.list_header,null);
mDrawer2.addHeaderView(view);
} static String titles[] = { "主页", "公司", "附近", "设置" }; class MyAdapter extends BaseAdapter { @Override
public int getCount() {
return titles.length;
} @Override
public Object getItem(int p) {
return titles[p];
} @Override
public long getItemId(int arg0) {
return 0;
} @Override
public View getView(int p, View contentView, ViewGroup arg2) {
String title = titles[p];
View v = LayoutInflater.from(getApplicationContext()).inflate(R.layout.item_list, null);
TextView textView = (TextView) v.findViewById(R.id.text);
textView.setText(title);
return v;
} } @Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
} private class DrawerItemClickListener implements
ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<? > parent, View view, int position,long id) {
showFragmentById(position);
mDrawerLayout.closeDrawer(drawerContent);
}
} //切换到相应的Fragment
public void showFragmentById(int position) {
Fragment f = null;
switch (position) {
case 1:
f = new HomeFragment();
break;
case 2:
f = new CompanyFragment();
break;
case 3:
f = new NearFragment();
break;
case 4:
f = new SettingFragment();
break;
default:
break;
}
if (f == null) {
return;
}
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, f).commit();
} //回调函数,打开或关闭时能够做一些事情
private class DemoDrawerListener implements DrawerLayout.DrawerListener {
@Override
public void onDrawerOpened(View drawerView) { //打开时调用
} @Override
public void onDrawerClosed(View drawerView) { //关闭时调用
} @Override
public void onDrawerSlide(View drawerView, float slideOffset) {//滑动过程中
} @Override
public void onDrawerStateChanged(int newState) {
}
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
return super.onCreateOptionsMenu(menu);
} }

这里仅仅写HomeFragment代码,其他几个内容都是一样的。

public class HomeFragment extends Fragment {

    public HomeFragment() {
} @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.home_fg, container,false);
} @Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
TextView textView = (TextView) view.findViewById(R.id.text);
textView.setText("Home");
} }

home_fg.xml

<?xml version="1.0" encoding="utf-8"?

>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:textSize="20sp"
android:textColor="#9370DB"
android:textStyle="bold"
android:layout_centerInParent="true"
/> </RelativeLayout>

Android DrawerLayout 抽屉的更多相关文章

  1. Android笔记:DrawerLayout抽屉布局的使用

    DrawerLayout(抽屉布局),在各种app中经常出现,比如csdn.. 如下示,只要从屏幕侧边滑一下,或者点击左上角的图标,抽屉就会出来. DrawerLayout要点: 1.使用Drawer ...

  2. 浅谈DrawerLayout(抽屉效果)

    DrawerLayout是V4包下提供的一种左滑右滑抽屉布局效果. 实现效果如下: 因为是官方提供的,所以使用起来也相对的比较简单. DrawerLayout 提供 1.当界面弹出的时候,主要内容区会 ...

  3. Android - DrawerLayout

    Android DrawerLayout 的使用 Android L Android Studio 1.4 从主视图左侧能抽出一个导航栏,效果图:  点击后弹出新界面:  新界面也可以抽出左侧导航栏 ...

  4. android DrawerLayout 侧边栏实现

    现在实现侧边栏比较简单了,官方提供的DrawerLayout可以很方便实现. 主要实现方法是:用DrawerLayout 作为界面根控件.在DrawerLayout里面第一个View为当前界面主内容: ...

  5. android中抽屉布局DrawerLayout的使用

    这个抽屉布局类似于手机QQ的主界面,点击左上角头像,会从界面左侧弹出一个抽屉,展示一些内容. 首先是布局界面activity_main.xml: <?xml version="1.0& ...

  6. Android DrawerLayout Plus 增强版抽屉菜单

    DrawerLayout是官方提供的侧滑菜单,相比SliddingMenu,它更加轻量级.默认情况下,DrawerLayout可以设置左侧或者右侧滑出菜单.如下,   xml布局: <!-- & ...

  7. Android导航抽屉-Navigation Drawer

    Google今年七月份的时候更新了他们的Google+应用,采用了新的导航方式并抛弃了navigationdrawer.一时之间,又引发了一系列关于NavigationDrawer利弊的讨论,不过对于 ...

  8. DrawerLayout(抽屉效果)

    DrawerLayout是V4包下提供的一种左滑右滑抽屉布局效果. 实现效果如下: 因为是官方提供的,所以使用起来也相对的比较简单. DrawerLayout 提供 1.当界面弹出的时候,主要内容区会 ...

  9. Android DrawerLayout 高仿QQ5.2双向侧滑菜单

    1.概述 之前写了一个Android 高仿 QQ5.0 侧滑菜单效果 自定义控件来袭 ,恰逢QQ5.2又加了一个右侧菜单,刚好看了下DrawerLayout,一方面官方的东西,我都比较感兴趣:另一方面 ...

随机推荐

  1. cape town

    开普敦_百度百科 开普敦

  2. hdu 2842 Chinese Rings

    点击打开hdu2842 思路: 矩阵快速幂 分析: 1 题目的意思是给定n个环,和一些规则要把所有的环全部拆下最少需要的步数 2 题目规定如果要拆第n个环,那么第n-1个要挂着,n-2环要被拆下.那么 ...

  3. phing用户手册第四章Getting Started译文

    本章是phing的入门篇,查看 原文请猛击这里. XML And Phing 一个合法的Phing构建文件有以下几部分构成: 1.文档序言 2.唯一的根元素<project> 3.一些Ph ...

  4. hadoop集群空间使用情况报告脚本

    近期集群空间有点紧张,总是操心空间不足而崩溃,近期扩容又不太现实,经与集群用户沟通发现:集群上存储了非常多没用的历史数据,能够删除,这样就能够通过一个crontab脚本每天生成集群空间使用报告,当使用 ...

  5. 如果在线显示php源代码

    原文:如果在线显示php源代码 通过php提供的函数highlight_file和highlight_string实现

  6. 应用层open(read、write、close)怎样调用驱动open(read、write、close)函数的?

    应用层open(read.write.close)怎样调用驱动open(read.write.close)函数的? 华清远见2014-09-29   北京海淀区 张俊浩 三大数据结构关系图

  7. kobox : key_wq.c -v1 如何使用工作队列 workqueue

    kobox: key_wq.c - v1 说明: TQ2440主要驱动因素,四个按键驱动的处理 key_wq.c和key.c类别似,与key.c之间的差异的主要驱动力: key.c使用计时器,在中断发 ...

  8. acdream 1222 Quantization Problem [dp]

    称号:acdream 1222 Quantization Problem 题意:给出一个序列 a ,然后给出一个 n * m 的矩阵,让你从这个矩阵中选出一个序列k,使得sum(abs(ki - ai ...

  9. 联系我们_鲲鹏Web数据抓取 - 专业Web数据采集服务提供者

    联系我们_鲲鹏Web数据抓取 - 专业Web数据采集服务提供者 首页 > 联系我们 我们的联系方式如下: 029 - 82542052(陕西 西安) 13389148466 或 13571845 ...

  10. 向GridView的模板列绑定OnClientClick的函数时出现了奇怪的问题

    原文:向GridView的模板列绑定OnClientClick的函数时出现了奇怪的问题 GridView的一个模板列中的内容是按钮,需要实现以下的效果: GridView分页显示数据,点击编辑按钮(模 ...