一 SlidingDrawer 这个类,也就是所谓的"抽屉"类。它的用法很简单,要包括handle ,和content .handle 就是当你点击它的时候,content 要么抽抽屉要么关抽屉。这是上下拉抽屉的效果,将 SlidingDrawer属性设置为android:orientation="vertical"即可这是左右拉抽屉的效果,将 SlidingDrawer属性设置为android:orientation="horizontal"即可。

二、重要属性
android:allowSingleTap:指示是否可以通过handle打开或关闭
android:animateOnClick:指示是否当使用者按下手柄打开/关闭时是否该有一个动画。
android:content:隐藏的内容
android:handle:handle(手柄)

三、重要方法

  animateClose():关闭时实现动画。
close():即时关闭
getContent():获取内容

  isMoving():指示SlidingDrawer是否在移动。
  isOpened():指示SlidingDrawer是否已全部打开
  lock():屏蔽触摸事件。
  setOnDrawerCloseListener(SlidingDrawer.OnDrawerCloseListener onDrawerCloseListener):SlidingDrawer关闭时调用
  unlock():解除屏蔽触摸事件。

  toggle():切换打开和关闭的抽屉SlidingDrawer。


上面例子的布局文件:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="效果显示:" />
<SlidingDrawer
android:id="@+id/drawer1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:handle="@+id/layout1"
android:content="@+id/mycontent1">
<LinearLayout
android:id="@id/layout1"
android:orientation="vertical"
android:layout_width="35sp"
android:layout_height="wrap_content"
android:gravity="center">
<ImageView
android:id="@+id/myImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/open" />
</LinearLayout>
<GridView
android:id="@id/mycontent1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="2"
android:gravity="center" />
</SlidingDrawer>
</LinearLayout>
</FrameLayout>


import android.app.Activity;

import android.os.Bundle;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.SlidingDrawer;
import android.widget.SlidingDrawer.OnDrawerCloseListener;
import android.widget.SlidingDrawer.OnDrawerOpenListener;
import android.widget.SlidingDrawer.OnDrawerScrollListener;

public class SlidingDrawerActivity extends Activity {
/** Called when the activity is first created. */

private SlidingDrawer sd;
private GridView gv;
private ImageView iv;
private int [] itemIcons = new int [] {
R.drawable.alarm, R.drawable.calendar,
R.drawable.camera, R.drawable.clock,
R.drawable.music, R.drawable.tv };
private String[] itemString = new String[]{"Alarm","Calendar","camera","clock","music","tv"}; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.slidrawer);
init();
GridAdapter adapter = new GridAdapter(SlidingDrawerActivity.this,itemString,itemIcons); gv.setAdapter(adapter);
/* 设定SlidingDrawer被打开的事件处理 */
sd.setOnDrawerOpenListener(new OnDrawerOpenListener() {
@Override
public void onDrawerOpened() {
// TODO Auto-generated method stub
iv.setImageResource(R.drawable.close);
}
});
/* 设定SlidingDrawer被关闭的事件处理 */
sd.setOnDrawerCloseListener(new OnDrawerCloseListener() {
public void onDrawerClosed() {
iv.setImageResource(R.drawable.open);
}
});
sd.setOnDrawerScrollListener(new OnDrawerScrollListener() {
@Override
public void onScrollStarted() {
// TODO Auto-generated method stub
System.out.println("start");
}
@Override
public void onScrollEnded() {
// TODO Auto-generated method stub
System.out.println("end");
}
});
}
private void init(){
sd = (SlidingDrawer) findViewById(R.id.drawer1);
gv = (GridView) findViewById(R.id.mycontent1);
iv = (ImageView) findViewById(R.id.myImage);
}

}

package com.shao.slider;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class GridAdapter extends BaseAdapter {
private Context context;
private String[] itemString;
private int[] itemIcons;
public GridAdapter(Context con,String[] itemString,int[] itemIcons){
context = con;
this.itemString = itemString;
this.itemIcons = itemIcons;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return itemIcons.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return itemString[position];
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater inflater = LayoutInflater.from(context);
/* 使用item.xml为每几个item的Layout */
View v = inflater.inflate(R.layout.item, null);
/* 取得View */
ImageView iv = (ImageView) v.findViewById(R.id.item_grid);
TextView tv = (TextView) v.findViewById(R.id.item_text);
/* 设定显示的Image与文? */
iv.setImageResource(itemIcons[position]);
tv.setText(itemString[position]);
return v;
}

}

还有注意的是:
SlidingDrawer should be used as an overlay inside layouts. This means SlidingDrawer should only be used inside of a FrameLayout or a RelativeLayout for instance,如果显示的时候不正常,考虑上面的原因。

更多相关文章

  1. Android之事件处理全面剖析
  2. Android 模拟滑动 MotionEvent touch事件
  3. Android 事件拦截/分发机制 (图解+代码)
  4. android设置软键盘搜索键以及监听搜索键点击事件
  5. Android 事件处理基于Handler 消息处理
  6. android事件拦截处理机制详解

随机推荐

  1. android 开发书籍打包下载(包含十几本Andr
  2. Android(安卓)kernel log 加上android lo
  3. Android Studio(九):引用jar及so文件
  4. android 实现日期选择器
  5. Android ueventd解析
  6. Android笔记---四大组件之Content Provid
  7. android 简单例子
  8. Android安全机制之反编译
  9. 《Android多功能日历教程》
  10. Android 第六天重置版_Activity