现在的位置: 首页 > 综合 > 正文

Android隐藏式抽屉SlidingDrawer

2013年04月16日 ⁄ 综合 ⁄ 共 3586字 ⁄ 字号 评论关闭

SlidingDrawer是SDK1.5才引入的新成员,也许你已经在Android手机上看过,按下一个按钮,就能展开一个“程序集”菜单,里面包含了格式个样的程序,而SlidingDrawer Weight正是为了这样的效果所准备。

下面是一个简单的例子:

主Activity:

public class MainActivity extends Activity {
    private GridView gridView;
    private SlidingDrawer slidingDrawer;
    private ImageView imageView;
    //GridView图标
    private int[] icons = {R.drawable.a1,R.drawable.a2,R.drawable.a3,R.drawable.a4,R.drawable.a5};
    //GridView文本
    private String[] items = {"Alarm","Camera","Clock","Music","TV"};
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        gridView = (GridView)findViewById(R.id.gridview);
        slidingDrawer = (SlidingDrawer)findViewById(R.id.drawer);
        imageView = (ImageView)findViewById(R.id.image);
        
        //构造adapter并赋给gridview
        MyAdapter adapter = new MyAdapter(this, items, icons);
        gridView.setAdapter(adapter);
        
        //抽屉打开事件
        slidingDrawer.setOnDrawerOpenListener(new OnDrawerOpenListener() {
            @Override
            public void onDrawerOpened() {
                // TODO Auto-generated method stub
                imageView.setImageResource(android.R.drawable.btn_star_big_on);
            }
        });
        //抽屉关闭事件
        slidingDrawer.setOnDrawerCloseListener(new OnDrawerCloseListener() {
            @Override
            public void onDrawerClosed() {
                // TODO Auto-generated method stub
                imageView.setImageResource(android.R.drawable.btn_star_big_off);
            }
        });
    }
}

自定义适配器:

//自定义适配器
public class MyAdapter extends BaseAdapter{
	private Context con;
	private String[] items;
	private int[] icons;
	public MyAdapter(Context con,String[] items,int[] icons){
		this.con = con;
		this.icons = icons;
		this.items = items;
	}
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return items.length;
	}

	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return items[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(con);
		View v = (View)inflater.inflate(R.layout.grid, null);
		ImageView image =(ImageView) v.findViewById(R.id.imageView);
		TextView text = (TextView)v.findViewById(R.id.textView);
		image.setImageResource(icons[position]);
		text.setText(items[position]);
		return v;
	}
	
}

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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="@string/hello"
    android:textSize="16sp"
    />
    <SlidingDrawer
    	android:id="@+id/drawer"
    	android:layout_width="fill_parent" 
    	android:layout_height="fill_parent" 
    	android:orientation="horizontal"
    	android:handle="@+id/layout"
    	android:content="@+id/gridview"
    >
    	<LinearLayout 
	    	android:id="@+id/layout"
	    	android:layout_width="35px" 
	    	android:layout_height="fill_parent" 
	    	android:gravity="center"
	    	>
    		<ImageView
    			android:id="@+id/image"
    			android:layout_width="wrap_content"
    			android:layout_height="wrap_content"
    			android:src="@drawable/icon"
    		/>
    	</LinearLayout>
    	<GridView
    		android:id="@+id/gridview"
    		android:layout_width="wrap_content" 
	    	android:layout_height="wrap_content" 
	    	android:numColumns="2"
	    	android:gravity="center"
	    	>
    	></GridView>
    </SlidingDrawer>
</RelativeLayout>

GridView的布局:grid.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
  <ImageView
  	android:id="@+id/imageView"
  	android:layout_width="wrap_content"
  	android:layout_height="wrap_content"
  />
  <TextView
  	android:id="@+id/textView"
  	android:layout_width="wrap_content"
  	android:layout_height="wrap_content"
  />
</LinearLayout>

运行程序,结果如下:

点击按钮,打开抽屉:

抱歉!评论已关闭.