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>
运行程序,结果如下:
点击按钮,打开抽屉: