Android SlidingDrawer

分享到:

SlidingDrawer控件可以实现抽屉滑动效果,通常是在屏幕边缘漏出一个小按钮,通过滑动或点击展开里面的内容。比如你想在屏幕上显示很多菜单又不想占用过多的布局空间就可以利用SlidingDrawer来实现效果。

SlidingDrawer实例:SlidingDrawer关闭时按钮贴在屏幕底部,效果如下:

SlidingDrawer滑动展开后的效果:

XML布局代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          android:layout_width="match_parent"
          android:layout_height="match_parent" >

         <SlidingDrawer
          android:id="@+id/slidingDrawer1"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:layout_centerHorizontal="true"
          android:layout_centerVertical="true"
          android:content="@+id/content"
          android:handle="@+id/handle"
          android:orientation="vertical" >

         <Button
          android:id="@+id/handle"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="打开" />

         <RelativeLayout
          android:id="@+id/content"
          android:layout_width="fill_parent"
          android:layout_height="match_parent"
          android:background="#0CF"
          android:orientation="vertical" >

         <TextView
          android:id="@+id/textView1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_centerHorizontal="true"
          android:layout_centerVertical="true"
          android:text="SlidingDrawer已经打开了"
          android:textColor="#ffffff"
          android:textSize="25sp" />

         </RelativeLayout>
  </SlidingDrawer>

</RelativeLayout>        

XML布局中有一个属性android:orientation="vertical",表示SlidingDrawer在垂直方向展开或关闭,如果想在水平方向滑动需要改为android:orientation="horizontal"

JAVA代码:

package com.my.androidtest;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.SlidingDrawer;
import android.widget.SlidingDrawer.OnDrawerCloseListener;
import android.widget.SlidingDrawer.OnDrawerOpenListener;

public class SlidingDrawerActivity extends Activity {
          
          SlidingDrawer sd=null;
          Button handle=null;
          @Override
          protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_sliding_drawer);
  
          sd=(SlidingDrawer)this.findViewById(R.id.slidingDrawer1);
          handle=(Button)this.findViewById(R.id.handle);
  
          //打开
          sd.setOnDrawerOpenListener(new OnDrawerOpenListener(){
          @Override
          public void onDrawerOpened() {
          handle.setText("关闭");
          }
  
          });
  
          //关闭
          sd.setOnDrawerCloseListener(new OnDrawerCloseListener(){
          @Override
          public void onDrawerClosed() {
          handle.setText("打开");
          }
          });
  
          }
  
}

这是一个最简单的SlidingDrawer实例,系统默认用于触发操作的是一个ID为“handle”的Button看起来并不美观,我们完全可以把它换成一个ImageView。“展开”,“关闭”这两个状态分别需要一张图片,然后在SlidingDrawer控件对应的setOnDrawerOpenListener事件和setOnDrawerCloseListener事件中对ImageView设置不同的图片即可达到效果。总结起来SlidingDrawer就是一个半隐藏式的交互容器,内部可以包含任意控件,以达到简化UI布局的同时又不减少应用功能的目的。

昵    称:
验证码:

相关文档:

Android控件
Android基础知识
Android组件
Android实例