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>
運行程序,結果如下:
點擊按鈕,打開抽屜: