读书人

Android入门户十五篇之ActivityGroup

发布时间: 2012-09-21 15:47:26 作者: rapoo

Android入门第十五篇之ActivityGroup + GridView 实现Tab分页标签[转]

? ? ??很多客户端软件和浏览器软件都喜欢用Tab分页标签来搭建界面框架。读者也许会马上想到使用TabHost?与?TabActivity的组合,其实最常用的不是它们,而是由GridView与ActivityGroup的组合。每当用户在GridView选中一项,ActivityGroup就把该项对应的Activity的Window作为View添加到ActivityGroup所指定的容器(LinearLayout)中。

接下来贴出本例运行的效果图:

?

Android入门户十五篇之ActivityGroup + GridView 实现Tab分页标签[转]

ImageAdapter是本实例的关键之一,它继承于BaseAdapter,并加入一些自定义的方法。ImageAdapter的源码如下:

?

package com.ActivityGroupDemo;    import android.content.Context;  import android.graphics.drawable.ColorDrawable;  import android.view.View;  import android.view.ViewGroup;  import android.widget.BaseAdapter;  import android.widget.GridView;  import android.widget.ImageView;  /**  *   * @author GV  *  */  public class ImageAdapter extends BaseAdapter {      private Context mContext;       private ImageView[] imgItems;      private int selResId;      public ImageAdapter(Context c,int[] picIds,int width,int height,int selResId) {           mContext = c;           this.selResId=selResId;          imgItems=new ImageView[picIds.length];          for(int i=0;i<picIds.length;i++)          {              imgItems[i] = new ImageView(mContext);               imgItems[i].setLayoutParams(new GridView.LayoutParams(width, height));//设置ImageView宽高               imgItems[i].setAdjustViewBounds(false);               //imgItems[i].setScaleType(ImageView.ScaleType.CENTER_CROP);               imgItems[i].setPadding(2, 2, 2, 2);               imgItems[i].setImageResource(picIds[i]);           }      }          public int getCount() {           return imgItems.length;       }          public Object getItem(int position) {           return position;       }          public long getItemId(int position) {           return position;       }          /**       * 设置选中的效果       */        public void SetFocus(int index)        {            for(int i=0;i<imgItems.length;i++)            {                if(i!=index)                {                    imgItems[i].setBackgroundResource(0);//恢复未选中的样式              }            }            imgItems[index].setBackgroundResource(selResId);//设置选中的样式      }              public View getView(int position, View convertView, ViewGroup parent) {           ImageView imageView;           if (convertView == null) {               imageView=imgItems[position];          } else {               imageView = (ImageView) convertView;           }           return imageView;       }   }

?

?

SetFocus(int)这个方法是个关键点,即实现选中的效果。例如有ABCD4个Item,其中C被选中了,那么除C以外的Item都被设置为未被选中的样式,而C则设置为选中的样式。

?

接下来就开始写主Activity,主Activity包含GridView控件,名为gvTopBar,有2点是需要注意一下的。

读书人网 >Android

热点推荐