activityGroup+gridView 实现tabhost的切换效果

package com.ActivityGroupDemo;

 

import android.app.ActivityGroup;  

import android.content.Intent;  

import android.graphics.Color;  

import android.graphics.drawable.ColorDrawable;  

import android.os.Bundle;  

import android.view.Gravity;  

import android.view.View;  

import android.view.Window;  

import android.view.ViewGroup.LayoutParams;  

import android.widget.AdapterView;  

import android.widget.GridView;  

import android.widget.LinearLayout;  

import android.widget.AdapterView.OnItemClickListener;  

public class ActivityGroupDemo extends ActivityGroup {

private GridView gvTopBar;  

   private ImageAdapter topImgAdapter;  

   public LinearLayout container;// 装载sub Activity的容器  

 

   /** 顶部按钮图片 **/  

   int[] topbar_image_array = { R.drawable.topbar_home,  

           R.drawable.topbar_home, R.drawable.topbar_home};  

 

   @Override  

   public void onCreate(Bundle savedInstanceState) {  

       super.onCreate(savedInstanceState);  

       setContentView(R.layout.main);  

       gvTopBar = (GridView) this.findViewById(R.id.gvTopBar);  

       gvTopBar.setNumColumns(topbar_image_array.length);// 设置每行列数  

       gvTopBar.setSelector(new ColorDrawable(Color.TRANSPARENT));// 选中的时候为透明色  

       gvTopBar.setGravity(Gravity.CENTER);// 位置居中  

       gvTopBar.setVerticalSpacing(0);// 垂直间隔  

       int width = this.getWindowManager().getDefaultDisplay().getWidth()  

               / topbar_image_array.length;  

       topImgAdapter = new ImageAdapter(this, topbar_image_array, width, 48,  

               R.drawable.app_icon);  

       gvTopBar.setAdapter(topImgAdapter);// 设置菜单Adapter  

       gvTopBar.setOnItemClickListener(new ItemClickEvent());// 项目点击事件  

       container = (LinearLayout) findViewById(R.id.Container);  

       SwitchActivity(0);//默认打开第0页  

   }  

 

   class ItemClickEvent implements OnItemClickListener {  

 

       public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,  

               long arg3) {  

           SwitchActivity(arg2);  

       }  

   }  

   /*

    * 根据ID打开指定的Activity 

    * @param id GridView选中项的序号 

    
*/  

   void SwitchActivity(int id)  

   {  

       topImgAdapter.SetFocus(id);//选中项获得高亮  

       container.removeAllViews();//必须先清除容器中所有的View  

       Intent intent =null;  

       if (id == 0 ) {  

           intent = new Intent(ActivityGroupDemo.this, ActivityA.class);  

       } else if (id == 1 ) {  

        intent = new Intent(ActivityGroupDemo.this, ActivityB.class);  

       }   else if (id == 2) {  

           intent = new Intent(ActivityGroupDemo.this, ActivityC.class);  

       } else  {  

          

       }  

       intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  

       //Activity 转为 View  

       Window subActivity = getLocalActivityManager().startActivity(  

               "subActivity", intent);  

       //容器添加View  

       container.addView(subActivity.getDecorView(),  

               LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);  

   }  

}

 


<?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:background="#ff8866"

        android:layout_height="fill_parent">  

        <RelativeLayout android:layout_height="fill_parent"  

            android:layout_width="fill_parent">  

            <GridView android:layout_height="wrap_content" android:id="@+id/gvTopBar"  

                android:layout_alignParentTop="true" android:layout_width="fill_parent"  

                android:fadingEdgeLength="5dip" android:fadingEdge="vertical">  

            </GridView>  

            <LinearLayout android:id="@+id/Container"  

                android:layout_below="@+id/gvTopBar" android:layout_width="fill_parent"  

                android:layout_height="fill_parent">  

            </LinearLayout>  

        </RelativeLayout>  

    </LinearLayout>  

 


package com.ActivityGroupDemo;

 

import android.content.Context;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.GridView;

import android.widget.ImageView;

 

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(2222);   

            imgItems[i].setImageResource(picIds[i]);   

        }  

    }   


@Override

public int getCount() {

// TODO Auto-generated method stub

return  imgItems.length;

}

 

@Override

public Object getItem(int position) {

// TODO Auto-generated method stub

return position;

}

 

@Override

public long getItemId(int position) {

// TODO Auto-generated method stub

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);//设置选中的样式  

    }    

      @Override

    public View getView(int position, View convertView, ViewGroup parent) {   

        ImageView imageView;   

        if (convertView == null) {   

            imageView=imgItems[position];  

        } else {   

            imageView = (ImageView) convertView;   

        }   

        return imageView;   

    }   

 

}
转载:http://hi.baidu.com/coolnote/blog/item/e726681830b0dea84bedbc42.html
原文地址:https://www.cnblogs.com/yourancao520/p/2260111.html