转载出处:
http://blog.csdn.net/wdaming1986/article/details/6898374
安卓中1.5后加入了SlidingDrawer【隐藏式抽屉】,设计原理在你的UI布局有限的情况下,放不下太多的控件的时候,可以考虑用这个隐藏式抽屉。用SlidingDrawer注意两点,一个是android:handle(委托要展开的图片加载Layout配置) 和android:content(要展开的Layout Content)。
下面看程序截图:
程序开始界面:
点击右边的箭头后出现的界面:
在SlidingDrawerActivity工程下:
一、在com.cn.daming包下的SlidingDrawerMainActivity.java类中的代码:
1 public class SlidingDrawerMainActivity extends Activity {
2
3 private GridView gridView;
4 private SlidingDrawer slidingDrawer;
5 private ImageView imageView;
6 private TextView textview;
7 private int[] icons={
8 R.drawable.title1, R.drawable.title2,
9 R.drawable.title3, R.drawable.title4,
10 R.drawable.title5, R.drawable.title6
11 };
12
13 private String[] items={
14 "Phone", "Message", "AddImage", "Music", "Telephone", "SMS"
15 };
16
17 @Override
18 public void onCreate(Bundle savedInstanceState) {
19 super.onCreate(savedInstanceState);
20 setContentView(R.layout.main);
21 gridView = (GridView)findViewById(R.id.mycontent);
22 slidingDrawer = (SlidingDrawer)findViewById(R.id.sliding_drawer);
23 imageView = (ImageView)findViewById(R.id.my_image);
24 textview = (TextView)findViewById(R.id.text_view);
25 MyGridViewAdapter adapter = new MyGridViewAdapter(this, items, icons);
26 gridView.setAdapter(adapter);
27 gridView.setOnItemClickListener(new OnItemClickListener() {
28
29 @Override
30 public void onItemClick(AdapterView> parent, View view,
31 int position, long id) {
32 Log.e("yxc", "position = " + position);
33 }
34
35 });
36 slidingDrawer.setOnDrawerOpenListener(new SlidingDrawer.OnDrawerOpenListener() {
37
38 public void onDrawerOpened() {
39 textview.setVisibility(View.GONE);
40 imageView.setImageResource(R.drawable.down1);
41 }
42 });
43 slidingDrawer.setOnDrawerCloseListener(new SlidingDrawer.OnDrawerCloseListener() {
44
45 public void onDrawerClosed() {
46 textview.setVisibility(View.VISIBLE);
47 imageView.setImageResource(R.drawable.up1);
48 }
49 });
50 }
51
52 @Override
53 public void onConfigurationChanged(Configuration newConfig) {
54 super.onConfigurationChanged(newConfig);
55 }
56 }
二、在com.cn.daming包下的MyGridViewAdapter.java类中的代码:
public class MyGridViewAdapter extends BaseAdapter{private Context context;private String[] items;private int[] icons;public MyGridViewAdapter(Context context, String[] items, int[] icons){this.context = context;this.items = items;this.icons = icons;}public int getCount() {return items.length;}public Object getItem(int arg0) {return items[arg0];}public long getItemId(int position) {return position;}public View getView(int position, View convertView, ViewGroup parent) {LayoutInflater layoutInflater = LayoutInflater.from(context);View view = (View)layoutInflater .inflate(R.layout.grid, null);ImageView imageView = (ImageView)view.findViewById(R.id.image_view);TextView textview = (TextView)view.findViewById(R.id.text_view);imageView.setImageResource(icons[position]);textview.setText(items[position]);return view;}}
三、在res包下的layout下的main.xml中的代码:
1 xml version="1.0" encoding="utf-8"?>
2 <RelativeLayout xmlns:android&#61;"http://schemas.android.com/apk/res/android"
3 android:layout_width&#61;"fill_parent"
4 android:layout_height&#61;"fill_parent"
5 >
6 <TextView
7 android:id&#61;"&#64;&#43;id/text_view"
8 android:layout_width&#61;"fill_parent"
9 android:layout_height&#61;"wrap_content"
10 android:layout_marginTop&#61;"10dip"
11 android:text&#61;"&#64;string/hello"
12 android:textSize&#61;"10pt"
13 android:gravity&#61;"center"
14 />
15 <SlidingDrawer
16 android:id&#61;"&#64;&#43;id/sliding_drawer"
17 android:layout_width&#61;"fill_parent"
18 android:layout_height&#61;"fill_parent"
19 android:handle&#61;"&#64;&#43;id/layout1"
20 android:content&#61;"&#64;&#43;id/mycontent"
21 android:orientation&#61;"vertical"
22 >
23 <LinearLayout
24 android:id&#61;"&#64;id/layout1"
25 android:layout_width&#61;"fill_parent"
26 android:layout_height&#61;"35px"
27 android:gravity&#61;"center"
28 android:background&#61;"#00000000"
29 >
30 <ImageView
31 android:id&#61;"&#64;&#43;id/my_image"
32 android:layout_width&#61;"wrap_content"
33 android:layout_height&#61;"wrap_content"
34 android:src&#61;"&#64;drawable/up1"
35 />
36 LinearLayout>
37 <GridView
38 android:id&#61;"&#64;id/mycontent"
39 android:layout_width&#61;"wrap_content"
40 android:layout_height&#61;"wrap_content"
41 android:paddingTop&#61;"20dip"
42 android:numColumns&#61;"3"
43 android:gravity&#61;"center"
44 android:background&#61;"#ff000000"
45 />
46 SlidingDrawer>
47 RelativeLayout>
四、在res包下的layout下的grid.xml中的代码&#xff1a;
1 xml version&#61;"1.0" encoding&#61;"utf-8"?>
2 <LinearLayout xmlns:android&#61;"http://schemas.android.com/apk/res/android"
3 android:layout_width&#61;"fill_parent"
4 android:layout_height&#61;"fill_parent"
5 android:orientation&#61;"vertical"
6 >
7 <ImageView
8 android:id&#61;"&#64;&#43;id/image_view"
9 android:layout_width&#61;"wrap_content"
10 android:layout_height&#61;"wrap_content"
11 android:layout_marginBottom&#61;"5dip"
12 android:layout_marginLeft&#61;"27dip"
13 />
14 <TextView
15 android:id&#61;"&#64;&#43;id/text_view"
16 android:layout_width&#61;"wrap_content"
17 android:layout_height&#61;"wrap_content"
18 android:layout_marginBottom&#61;"15dip"
19 android:layout_marginLeft&#61;"27dip"
20 />
21 LinearLayout>
补充说明&#xff1a;
也可以设置垂直的隐藏拉抽屉方式&#xff0c;设置SlidingDrawer中的android:orientation&#61;"vertical"。
看下截图效果&#xff1a;
点击下拉图标后界面&#xff1a; 点击上拉图标后的界面&#xff1a;
完整代码下载链接地址&#xff1a;http://download.csdn.net/detail/wdaming1986/3731750