SlidingDrawer是一种抽屉型的组件。当用户选择打开此抽屉之后,会得到一些能够使用的“程序集”。这样当一个界面要摆放多个组件的时候,使用此组件就能够非常好的解决布局空间紧张的问题,SlidingDrawer类的定义例如以下所看到的:
ava.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.widget.SlidingDrawer

经常使用的方法
1
public void open()
普通
打开隐藏的抽屉
2
public void close()
普通
关闭隐藏的抽屉
3
public void lock()
普通
锁定“程序集”视图
4
public void unlock()
普通
解除锁定
5
public View getContent()
普通
得到所设置的“程序集”视图
6
public View getHandle()
普通
得到所设置的操作钮视图
7
public boolean isMoving()
普通
是否正在滑动
8
public boolean isOpened()
普通
是否打开
9
public void setOnDrawerOpenListener(
SlidingDrawer.OnDrawerOpenListener onDrawerOpenListener)
普通
打开抽屉组件时触发事件
10
public void setOnDrawerCloseListener(
SlidingDrawer.OnDrawerCloseListener onDrawerCloseListener)
普通
关闭抽屉组件时触发事件
11
public void setOnDrawerScrollListener(
SlidingDrawer.OnDrawerScrollListener onDrawerScrollListener)
普通
移抽屉组件时触发事件


XML文件

<span style="font-size:18px;"><?

xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/MyLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >     <SlidingDrawer
        android:id="@+id/slidingdrawer"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:content="@+id/content"
        android:handle="@+id/handle"
        android:orientation="vertical" >
    <ImageView
            android:id="@+id/handle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/close" />         <LinearLayout
            android:id="@+id/content"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >
            
        </LinearLayout>
    
    </SlidingDrawer> </LinearLayout></span>

JAVA文件

<span style="font-size:18px;">package com.example.slidingdrawer;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SlidingDrawer;
import android.widget.SlidingDrawer.OnDrawerCloseListener;
import android.widget.SlidingDrawer.OnDrawerOpenListener;
import android.widget.SlidingDrawer.OnDrawerScrollListener;
import android.widget.Toast; public class MainActivity extends Activity {
private SlidingDrawer slidingDrawer;
private ImageView handle;
private String data[]={"保存数据","更新状态","个人心情","个人等级","很多其它信息","","more……"};//listview数据
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout layout = (LinearLayout) super.findViewById(R.id.content);
ListView listView=new ListView(this);
listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,data));//设置adapter
layout.addView(listView);
this.handle=(ImageView)this.findViewById(R.id.handle);
this.slidingDrawer=(SlidingDrawer)this.findViewById(R.id.slidingdrawer);
this.slidingDrawer.setOnDrawerCloseListener(new OnDrawerCloseListener() { @Override
public void onDrawerClosed() {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "菜单关闭", 2).show();
handle.setImageResource(R.drawable.close);
}
});
this.slidingDrawer.setOnDrawerOpenListener(new OnDrawerOpenListener() { @Override
public void onDrawerOpened() {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "菜单打开", 2).show();
handle.setImageResource(R.drawable.open);
}
});
this.slidingDrawer.setOnDrawerScrollListener(new OnDrawerScrollListener() { @Override
public void onScrollStarted() {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "正在拖动", 2).show();
} @Override
public void onScrollEnded() {
// TODO Auto-generated method stub }
});
} }
</span>





我们使用SlidingDrawer和GridView结合来做一个隐式菜单的效果

将用到的图片导入

XML文件

<span style="font-size:18px;"><?

xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/MyLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <SlidingDrawer
android:id="@+id/slidingdrawer"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:content="@+id/content"
android:handle="@+id/handle"
android:orientation="vertical" > <ImageView
android:id="@+id/handle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/close" /> <LinearLayout
android:id="@+id/content"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" > <GridView
android:id="@+id/gridView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="4"//每行数据数
android:stretchMode="columnWidth"
android:verticalSpacing="70dp" >//行间距
</GridView>
</LinearLayout>
</SlidingDrawer> </LinearLayout></span>


JAVA文件




打开后





隐式抽屉组件在开发中较经常使用到。也将为简单。希望大家好好学习掌握

下节预报
PopupWindow弹出窗体

从零開始学android&lt;SlidingDrawer 隐式抽屉.三十三.&gt;的更多相关文章

  1. 从零開始学android&lt;数据存储(1)SharedPreferences属性文件.三十五.&gt;

    在android中有五种保存数据的方法.各自是: Shared Preferences Store private primitive data in key-value pairs. 相应属性的键值 ...

  2. 第13章、布局Layouts之RelativeLayout相对布局(从零開始学Android)

    RelativeLayout相对布局 RelativeLayout是一种相对布局,控件的位置是依照相对位置来计算的,后一个控件在什么位置依赖于前一个控件的基本位置,是布局最经常使用,也是最灵活的一种布 ...

  3. 从零開始学android&lt;SeekBar滑动组件.二十二.&gt;

    拖动条能够由用户自己进行手工的调节,比如:当用户须要调整播放器音量或者是电影的播放进度时都会使用到拖动条,SeekBar类的定义结构例如以下所看到的: java.lang.Object    ↳ an ...

  4. 从零開始学android&lt;mediaplayer自带播放器(视频播放).四十九.&gt;

    MediaPlayer除了能够对音频播放之外,也能够对视频进行播放,可是假设要播放视频仅仅依靠MediaPlayer还是不够的.还须要编写一个能够用于视频显示的空间,而这块显示空间要求能够高速的进行G ...

  5. 从零開始学android&lt;TabHost标签组件.二十九.&gt;

    TabHost主要特点是能够在一个窗体中显示多组标签栏的内容,在Android系统之中每一个标签栏就称为一个Tab.而包括这多个标签栏的容器就将其称为TabHost.TabHost类的继承结构例如以下 ...

  6. 从零開始学android&lt;Menu菜单组件.三十.&gt;

    在Android系统之中.菜单一共同拥有三类:选项菜单(OptionsMenu).上下文菜单(ContextMenu)和子菜单(SubMenu). 今天我们就用几个样例来分别介绍下菜单的使用 acti ...

  7. 从零開始学android&lt;ImageSwitcher图片切换组件.二十六.&gt;

    ImageSwitcher组件的主要功能是完毕图片的切换显示,比如用户在进行图片浏览的时候.能够通过button点击一张张的切换显示的图片,并且使用ImageSwitcher组件在每次切换的时候也能够 ...

  8. 从零開始学android&lt;RelativeLayout相对布局.十六.&gt;

    相对布局管理器指的是參考某一其它控件进行摆放,能够通过控制,将组件摆放在一个指定參考组件的上.下.左.右等位置,这些能够直接通过各个组件提供的属性完毕. 以下介绍一下各个方法的基本使用 No. 属性名 ...

  9. 从零開始学android&lt;使用嵌套布局实现计算器界面.十七.&gt;

    所谓的嵌套布局就是在一个文件里嵌套多个布局文件 <span style="font-size:18px;"> <LinearLayout android:layo ...

随机推荐

  1. Matlab从入门到精通 Chapter5 数据可视化--

    5-1 图形绘制示例 >> x2=-17:0.02:3; >> y2=1./((x2+3).^2+1)+1./((x2+9).^2+4)+5; >> subplot ...

  2. How Javascript works (Javascript工作原理) (七) WebAssembly 对比 JavaScript 及其使用场景

    个人总结: 1.webworkers实现了用多线程浏览器来进行多线程操作js的能力. 2.web workers不能操作dom,window,document等对象,一般用于cpu计算型的任务.   ...

  3. [NOIP2011提高组]Mayan游戏

    题目:洛谷P1312.Vijos P1738.codevs1136. 题目大意:在一个7行5列的棋盘(左下角坐标0,0)上,有一些不同颜色的棋子. 规定某一时刻,连续三个横排或竖列的棋子颜色相同,则它 ...

  4. javaweb集成swagger

    一.添加依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-sw ...

  5. execlp(3) - Linux手册

    名称: execl, execlp, execle, execv, execvp, execvpe:执行文件 总览: #include <unistd.h> extern char **e ...

  6. spring boot ---web应用开发-错误处理

    一.错误的处理 方法一:Spring Boot 将所有的错误默认映射到/error, 实现ErrorController @Controller @RequestMapping(value = &qu ...

  7. Centos6.6 yum源更新

    1备份: cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d//CentOS-Base.repo.ori 2下载: wget -O /etc/y ...

  8. 【codeforces 46C】Hamsters and Tigers

    [题目链接]:http://codeforces.com/problemset/problem/46/C [题意] 给你一个长度为n的01串; 让你把所有的0放在一起,把所有的1放在一起; (即0都是 ...

  9. Ubuntu系统中中文的设置

    这几天心血来潮,在实习公司真的没什么事情做,在学长的推荐下就学习了一下Ubuntu系统,感觉还是挺不错的,这个系统,所以我也推荐刚开始学习liunx系统的妹子们也可以先学一下这个. 1>你可以在 ...

  10. oracle 11g RAC手动卸载grid,no deinstall

    1.通过root用户进入到grid的ORACLE_HOME [root@db01]# source /home/grid/.bash_profile [root@db01]# cd $ORACLE_H ...