灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2120回复:0

android之抽屉布局应用

楼主#
更多 发布于:2012-09-06 13:42


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

}

好的,效果图就不给大家贴出了,大家可以自己下载该小项目,看看效果,自己也可以修改实现更好的效果。


喜欢0 评分0
游客

返回顶部