SlideringDrawer的使用(抽屉效果)

一  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。



上面例子的布局文件:

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.         android:orientation="vertical" android:layout_width="fill_parent"  
  4.         android:layout_height="fill_parent">  
  5. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  6.     android:orientation="vertical" android:layout_width="fill_parent"  
  7.     android:layout_height="fill_parent">  
  8.     <TextView android:layout_width="fill_parent"  
  9.         android:layout_height="wrap_content"   
  10.         android:text="效果显示:" />  
  11.           
  12.     <SlidingDrawer android:id="@+id/drawer1"  
  13.         android:layout_width="fill_parent"   
  14.         android:layout_height="fill_parent"  
  15.         android:orientation="horizontal"  
  16.         android:handle="@+id/layout1"  
  17.         android:content="@+id/mycontent1">  
  18.         <LinearLayout android:id="@id/layout1"  
  19.             android:orientation="vertical"  
  20.             android:layout_width="35sp"   
  21.             android:layout_height="wrap_content"  
  22.             android:gravity="center">  
  23.        <ImageView android:id="@+id/myImage"   
  24.                 android:layout_width="wrap_content"  
  25.                 android:layout_height="wrap_content"  
  26.                  android:src="@drawable/open" />  
  27.         </LinearLayout>  
  28.         <GridView android:id="@id/mycontent1" android:layout_width="fill_parent"  
  29.             android:layout_height="fill_parent" android:numColumns="2"  
  30.             android:gravity="center" />  
  31.     </SlidingDrawer>  
  32. </LinearLayout>  
  33. </FrameLayout>  


java文件:

[java]  view plain copy
  1. import android.app.Activity;  
  2. import android.os.Bundle;  
  3. import android.widget.GridView;  
  4. import android.widget.ImageView;  
  5. import android.widget.SlidingDrawer;  
  6. import android.widget.SlidingDrawer.OnDrawerCloseListener;  
  7. import android.widget.SlidingDrawer.OnDrawerOpenListener;  
  8. import android.widget.SlidingDrawer.OnDrawerScrollListener;  
  9.   
  10. public class SlidingDrawerActivity extends Activity {  
  11.     /** Called when the activity is first created. */  
  12.    private SlidingDrawer sd;  
  13.    private GridView gv;  
  14.    private ImageView iv;  
  15.    private int [] itemIcons = new int []  
  16.                                        { R.drawable.alarm, R.drawable.calendar, R.drawable.camera, R.drawable.clock, R.drawable.music, R.drawable.tv };  
  17.     private String[] itemString =  new String[]{"Alarm","Calendar","camera","clock","music","tv"};                           
  18.     @Override  
  19.     public void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.         setContentView(R.layout.slidrawer);  
  22.         init();  
  23.         GridAdapter adapter  = new GridAdapter(SlidingDrawerActivity.this,itemString,itemIcons);  
  24.         gv.setAdapter(adapter);  
  25.         /* 设定SlidingDrawer被打开的事件处理 */  
  26.         sd.setOnDrawerOpenListener(new OnDrawerOpenListener() {  
  27.               
  28.             @Override  
  29.             public void onDrawerOpened() {  
  30.                 // TODO Auto-generated method stub  
  31.                 iv.setImageResource(R.drawable.close);  
  32.             }  
  33.         });  
  34.         /* 设定SlidingDrawer被关闭的事件处理 */  
  35.         sd.setOnDrawerCloseListener(new OnDrawerCloseListener()  
  36.         {  
  37.   
  38.             public void onDrawerClosed()  
  39.             {  
  40.                 iv.setImageResource(R.drawable.open);  
  41.             }  
  42.         });   
  43.         sd.setOnDrawerScrollListener(new OnDrawerScrollListener() {  
  44.               
  45.             @Override  
  46.             public void onScrollStarted() {  
  47.                 // TODO Auto-generated method stub  
  48.                 System.out.println("start");  
  49.             }  
  50.               
  51.             @Override  
  52.             public void onScrollEnded() {  
  53.                 // TODO Auto-generated method stub  
  54.                 System.out.println("end");  
  55.             }  
  56.         });  
  57.     }  
  58.     private void init(){  
  59.         sd = (SlidingDrawer) findViewById(R.id.drawer1);  
  60.         gv =  (GridView) findViewById(R.id.mycontent1);  
  61.         iv = (ImageView) findViewById(R.id.myImage);  
  62.           
  63.           
  64.     }  
  65. }  



[java]  view plain copy
  1. package com.shao.slider;  
  2.   
  3. import android.content.Context;  
  4. import android.view.LayoutInflater;  
  5. import android.view.View;  
  6. import android.view.ViewGroup;  
  7. import android.widget.BaseAdapter;  
  8. import android.widget.ImageView;  
  9. import android.widget.TextView;  
  10.   
  11. public class GridAdapter extends BaseAdapter {  
  12.       
  13.     private Context context;  
  14.     private String[] itemString;  
  15.     private int[] itemIcons;  
  16.       
  17.     public GridAdapter(Context con,String[] itemString,int[] itemIcons){  
  18.         context = con;  
  19.         this.itemString = itemString;  
  20.         this.itemIcons = itemIcons;  
  21.     }  
  22.     @Override  
  23.     public int getCount() {  
  24.         // TODO Auto-generated method stub  
  25.         return itemIcons.length;  
  26.     }  
  27.   
  28.     @Override  
  29.     public Object getItem(int position) {  
  30.         // TODO Auto-generated method stub  
  31.         return itemString[position];  
  32.     }  
  33.   
  34.     @Override  
  35.     public long getItemId(int position) {  
  36.         // TODO Auto-generated method stub  
  37.         return position;  
  38.     }  
  39.   
  40.     @Override  
  41.     public View getView(int position, View convertView, ViewGroup parent) {  
  42.         // TODO Auto-generated method stub  
  43.         LayoutInflater inflater = LayoutInflater.from(context);  
  44.         /* 使用item.xml为每几个item的Layout */  
  45.         View v = inflater.inflate(R.layout.item, null);  
  46.          /* 取得View */  
  47.         ImageView iv = (ImageView) v.findViewById(R.id.item_grid);  
  48.         TextView tv = (TextView) v.findViewById(R.id.item_text);  
  49.         /* 设定显示的Image与文? */  
  50.         iv.setImageResource(itemIcons[position]);  
  51.         tv.setText(itemString[position]);  
  52.         return v;  
  53.     }  
  54.   
  55. }  

还有注意的是:

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,如果显示的时候不正常,考虑上面的原因。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值