android之抽屉布局应用
3068 点击·0 回帖
![]() | ![]() | |
![]() | 我们有时后希望在一个界面中显示另外一个布局,但是又要不需要占用太多布局空间,这个时候我们可以考虑用到抽屉布局,这个名词大家可以充分发挥能动想象,相信通过下面的介绍大家一定可以对这种方式有所了解. 好了,直接上一个简单的小项目. 1、首先我们建一个主activity [java] package com.jindegege.activity; import com.jindegege.service.MyAdapter; import Android.app.Activity; import Android.os.Bundle; import Android.widget.GridView; import Android.widget.ImageView; import Android.widget.SlidingDrawer; public class SlidingdrawerActivity extends Activity { private GridView gridview; private SlidingDrawer slidingdrawer; private ImageView imageview; private int[] icons={R.drawable.main1,R.drawable.main2, R.drawable.main3,R.drawable.main4, R.drawable.main5,R.drawable.main6, R.drawable.main7,R.drawable.main8,R.drawable.main9}; private String[] items={"华仔","发哥","雅芝","柏芝","周星星","jindegege","老毛","老毕","涵涵"}; /** 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.sd); imageview=(ImageView)findViewById(R.id.imageview); MyAdapter adapter=new MyAdapter(this,items,icons);//通过构造函数实例化一个MyAdapter对象,这个MyAdapter对象必须继承BaseAdapter类 gridview.setAdapter(adapter); slidingdrawer.setOnDrawerOpenListener(new SlidingDrawer.OnDrawerOpenListener()//打开抽屉 { @Override public void onDrawerOpened() { imageview.setImageResource(R.drawable.photo);//打开抽屉事件 } }); slidingdrawer.setOnDrawerCloseListener(new SlidingDrawer.OnDrawerCloseListener() { @Override public void onDrawerClosed() { imageview.setImageResource(R.drawable.ic_launcher);//关闭抽屉事件 } }); } } package com.jindegege.activity; import com.jindegege.service.MyAdapter; import Android.app.Activity; import Android.os.Bundle; import Android.widget.GridView; import Android.widget.ImageView; import Android.widget.SlidingDrawer; public class SlidingdrawerActivity extends Activity { private GridView gridview; private SlidingDrawer slidingdrawer; private ImageView imageview; private int[] icons={R.drawable.main1,R.drawable.main2, R.drawable.main3,R.drawable.main4, R.drawable.main5,R.drawable.main6, R.drawable.main7,R.drawable.main8,R.drawable.main9}; private String[] items={"华仔","发哥","雅芝","柏芝","周星星","jindegege","老毛","老毕","涵涵"}; /** 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.sd); imageview=(ImageView)findViewById(R.id.imageview); MyAdapter adapter=new MyAdapter(this,items,icons);//通过构造函数实例化一个MyAdapter对象,这个MyAdapter对象必须继承BaseAdapter类 gridview.setAdapter(adapter); slidingdrawer.setOnDrawerOpenListener(new SlidingDrawer.OnDrawerOpenListener()//打开抽屉 { @Override public void onDrawerOpened() { imageview.setImageResource(R.drawable.photo);//打开抽屉事件 } }); slidingdrawer.setOnDrawerCloseListener(new SlidingDrawer.OnDrawerCloseListener() { @Override public void onDrawerClosed() { imageview.setImageResource(R.drawable.ic_launcher);//关闭抽屉事件 } }); } } 2、新建这个主activity要加载的布局文件 [html] <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android" 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="20sp" /> <SlidingDrawer Android:id="@+id/sd" Android:layout_width="fill_parent" Android:layout_height="fill_parent" Android:handle="@+id/imageview" Android:content="@+id/gridview" Android:orientation="vertical" > <ImageView Android:id="@id/imageview" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Androidrc="@drawable/ic_launcher" /> <GridView Android:id="@id/gridview" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:numColumns="3" Android:background="#EE82EE" Android:gravity="center" /> </SlidingDrawer> </RelativeLayout> <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android" 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="20sp" /> <SlidingDrawer Android:id="@+id/sd" Android:layout_width="fill_parent" Android:layout_height="fill_parent" Android:handle="@+id/imageview" Android:content="@+id/gridview" Android:orientation="vertical" > <ImageView Android:id="@id/imageview" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Androidrc="@drawable/ic_launcher" /> <GridView Android:id="@id/gridview" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:numColumns="3" Android:background="#EE82EE" Android:gravity="center" /> </SlidingDrawer> </RelativeLayout> 第三步:在主activity中,我们要通过构造函数实例化一个MyAdapter对象,这个MyAdapter对象必须继承BaseAdapter类, 以用来自定义一个适配器,先新建一个xml文件item.xml,这只是一个简单的样式。 [html] <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:orientation="vertical" Android:layout_width="fill_parent" Android:layout_height="fill_parent" > <ImageView Android:id="@+id/icon" Android:layout_width="wrap_content" Android:layout_height="40px" Android:layout_gravity="center" /> <TextView Android:id="@+id/text" Android:layout_width="fill_parent" Android:layout_height="wrap_content" Android:gravity="center" Android:textColor="#000000" /> </LinearLayout> <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:orientation="vertical" Android:layout_width="fill_parent" Android:layout_height="fill_parent" > <ImageView Android:id="@+id/icon" Android:layout_width="wrap_content" Android:layout_height="40px" Android:layout_gravity="center" /> <TextView Android:id="@+id/text" Android:layout_width="fill_parent" Android:layout_height="wrap_content" Android:gravity="center" Android:textColor="#000000" /> </LinearLayout> 第四步:这个时候就是设计我们自定义的类了。 [java] package com.jindegege.service; import com.jindegege.activity.R; import Android.content.Context; import Android.view.LayoutInflater; import Android.view.View; import Android.view.ViewGroup; import Android.widget.BaseAdapter; import Android.widget.ImageView; import Android.widget.TextView; public class MyAdapter extends BaseAdapter { private Context context; private String[] items; private int[] icons; public MyAdapter(Context context,String[] items,int[] icons) //构造器 { this.context=context; this.items=items; this.icons=icons; } @Override public int getCount() { return items.length; } @Override public Object getItem(int arg0) { return items[arg0]; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater factory = LayoutInflater.from(context); View v = (View) factory.inflate(R.layout.item, null);//绑定自定义的layout ImageView iv = (ImageView) v.findViewById(R.id.icon); TextView tv = (TextView) v.findViewById(R.id.text); iv.setImageResource(icons[position]); tv.setText(items[position]); return v; } } package com.jindegege.service; import com.jindegege.activity.R; import Android.content.Context; import Android.view.LayoutInflater; import Android.view.View; import Android.view.ViewGroup; import Android.widget.BaseAdapter; import Android.widget.ImageView; import Android.widget.TextView; public class MyAdapter extends BaseAdapter { private Context context; private String[] items; private int[] icons; public MyAdapter(Context context,String[] items,int[] icons) //构造器 { this.context=context; this.items=items; this.icons=icons; } @Override public int getCount() { return items.length; } @Override public Object getItem(int arg0) { return items[arg0]; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater factory = LayoutInflater.from(context); View v = (View) factory.inflate(R.layout.item, null);//绑定自定义的layout ImageView iv = (ImageView) v.findViewById(R.id.icon); TextView tv = (TextView) v.findViewById(R.id.text); iv.setImageResource(icons[position]); tv.setText(items[position]); return v; } } 好的,效果图就不给大家贴出了,大家可以自己下载该小项目,看看效果,自己也可以修改实现更好的效果。 | |
![]() | ![]() |