我们有时后希望在一个界面中显示另外一个布局,但是又要不需要占用太多布局空间,这个时候我们可以考虑用到抽屉布局,这个名词
大家可以充分发挥能动想象,相信通过下面的介绍大家一定可以对这种方式有所了解.
好了,直接上一个简单的小项目.
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;
}
}
好的,效果图就不给大家贴出了,大家可以自己下载该小项目,看看效果,自己也可以修改实现更好的效果。