android学习之-ActivityGroup

1.GridView实现的效果类似TagHost
2.设置一些GridView的参数mGridView.setNumColumns(image_array.length);// 设置每行列数
  mGridView.setSelector(new ColorDrawable(Color.TRANSPARENT));// 选中的时候为透明色
  mGridView.setGravity(Gravity.CENTER);// 位置居中
  mGridView.setVerticalSpacing(0);// 垂直间隔
  int width = this.getWindowManager().getDefaultDisplay().getWidth()
    / image_array.length;
  mGridView.setColumnWidth(width);//设置每列的宽度
3.设置适配器和点击事件mGridView.setAdapter(topImgAdapter);// 设置菜单Adapter
  mGridView.setOnItemClickListener(new ItemClickEvent());// 项目点击事件
  switchActivity(0);// 默认打开第0页
4.点击事件里面的activity转换
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    long arg3) {
   switchActivity(arg2);
  }
5.switchActivity()中的各个view之间的切换

 

部分代码:

1.

setContentView(R.layout.activity_group);
  activityManager = getLocalActivityManager();
  mGridView = (GridView) this.findViewById(R.id.home_gridView);
  mLayout = (LinearLayout) this.findViewById(R.id.home_linear);
  mGridView.setNumColumns(image_array.length);// 设置每行列数
  mGridView.setSelector(new ColorDrawable(Color.TRANSPARENT));// 选中的时候为透明色
  mGridView.setGravity(Gravity.CENTER);// 位置居中
  mGridView.setVerticalSpacing(0);// 垂直间隔
  int width = this.getWindowManager().getDefaultDisplay().getWidth()
    / image_array.length;
  mGridView.setColumnWidth(width);//设置每列的宽度
  topImgAdapter = new ImageAdapter(this,resContext);
  // adapter = new GridViewAdapter(getApplicationContext());
  mGridView.setAdapter(topImgAdapter);// 设置菜单Adapter
  mGridView.setOnItemClickListener(new ItemClickEvent());// 项目点击事件
  switchActivity(0);// 默认打开第0页

2.

/**
  * 点击条目切换与之对应的activity
  * 
  * @author zhouguosen 2012-5-3上午10:29:17
  * 
  */
 class ItemClickEvent implements OnItemClickListener {
  public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    long arg3) {
   switchActivity(arg2);
  }
 }

3.

/**
  * 根据ID打开指定的Activity
  * 
  * @param id
  *    GridView选中项的序号
  */
 public void switchActivity(int id,Intent data) {
  topImgAdapter.setFocus(id);// 选中项获得高亮
  mLayout.removeAllViews();// 必须先清除容器中所有的View
  Intent intent = null;
  Window mWindow = null;
  if (id == HOMEACTIVITY) {
   intent = new Intent(GroupActivity.this, HomeActivity.class);
   intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
   mWindow = activityManager.startActivity("HomeActivity", intent);
  } else if (id == MESSAGEACTIVITY) {
   //得到子group的Activity id
   int msgActivityId=-1;
   if(data!=null){
    msgActivityId=data.getIntExtra(Consts.EXTRA_MESSAGE_ACTIVITY_ID, -1);
   }
   intent = new Intent(GroupActivity.this, MessageGroupActivity.class);
   intent.putExtra(Consts.EXTRA_MESSAGE_ACTIVITY_ID, msgActivityId); //消息的activity id
   intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
   mWindow = activityManager.startActivity("MessageGroupActivity",
     intent);
  } else if (id == INTERACTIVEACTIVITY) {
   intent = new Intent(GroupActivity.this, InteractiveActivity.class);
   intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
   mWindow = activityManager.startActivity("InteractiveActivity",
     intent);
  } else if (id == BABYACTIVITY) {
   intent = new Intent(GroupActivity.this, BabyActivity.class);
   intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
   mWindow = activityManager.startActivity("BabyActivity", intent);
  } else if (id == MOREACTIVITY) {
   intent = new Intent(GroupActivity.this, TestMoreActivity.class);
   intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
   mWindow = activityManager.startActivity("TestMoreActivity", intent);
  }
  // 容器添加View
  mLayout.addView(mWindow.getDecorView(), LayoutParams.FILL_PARENT,
    LayoutParams.FILL_PARENT);
  currId=id;
 }


4.适配器:

package com.enterise.aibaobao.adapter;
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;
import com.enterise.aibaobao.R;
import com.enterise.aibaobao.data.Msg;
import com.enterise.aibaobao.data.SkinManager;
public class ImageAdapter extends BaseAdapter {
// private static final String TAG = "ImageAdapter";
 Context resContext;
 Context currContext;
 LayoutInflater inflater;
 SkinManager skinMgr=SkinManager.getInstance();
 
 private int array[] = null;
 int msgNums[]=new int[]{0,0,0,0,0}; //首页(微博)、消息 、互动消息 、宝宝视频、 更多
 int image_array_down[] = { R.drawable.home_down,
   R.drawable.message_down, R.drawable.interactive_message_down,
   R.drawable.babyvideo_down, R.drawable.more_down };
 int image_array[] = { R.drawable.home, R.drawable.message,
   R.drawable.interactive_message, R.drawable.babyvideo,
   R.drawable.more };
 public ImageAdapter(Context c, Context resContext) {
  this.currContext = c;
  this.resContext=resContext;
  this.array = new int[image_array.length];
  for(int i=0;i<array.length;i++){
   array[i]=image_array[i];
  }
  array[0]=image_array_down[0]; //选中第一个
 }
 /**
  * 当资源上下文改变时
  * @param context
  */
 public void onUpdateResContext(Context context){
  this.resContext=context;
  this.notifyDataSetChanged();
 }
 
 @Override
 public int getCount() {
  // TODO Auto-generated method stub
  return array.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<array.length;i++){
   array[i]=image_array[i];
  }
  array[index]=image_array_down[index]; //选中第一个
  this.notifyDataSetChanged();
 }
 
 /**
  * 当新消息产生时
  * @param msg
  */
 public void onNewMsgProduce(Msg msg){
  msgNums[0]=msg.getWeiboNum();
  msgNums[1]=msg.getLetterNum()+msg.getNoticeNum();
  this.notifyDataSetChanged();
 }
 
 /**
  *  当新消息看完毕之后 取消显示
  * @param msg
  */
 public void onCancleNewMsgNotifi(){
  msgNums[0]= 0;  //首页(微博)、消息 、互动消息 、宝宝视频、 更多
  msgNums[1]= 0;  
  msgNums[2]= 0; 
  msgNums[3]= 0;  
  msgNums[4]= 0;  
  this.notifyDataSetChanged();
 }
 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
  //1.组件
  ViewHolder holder=null;
  if(convertView==null){
   LayoutInflater inflater=(LayoutInflater) currContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   convertView=inflater.inflate(R.layout.view_activity_group_nav_item, null);
   holder=new ViewHolder();
   holder.img_icon=(ImageView) convertView.findViewById(R.id.activity_group_img_icon);
   holder.tv_tip=(TextView) convertView.findViewById(R.id.activity_group_tv_tip);
   convertView.setTag(holder);
  }else{
   holder=(ViewHolder) convertView.getTag();
  }
  //2.显示数据
//  holder.img_icon.setImageResource(array[position]);
  holder.img_icon.setImageDrawable(skinMgr.findDrawable(currContext,resContext,array[position]));
   if(msgNums[position]>0){
    holder.tv_tip.setText(""+msgNums[position]);
//    holder.tv_tip.setText("New "+msgNums[position]);
    holder.tv_tip.setVisibility(View.VISIBLE);
   }else{
    holder.tv_tip.setVisibility(View.INVISIBLE);
  }
  
  return convertView;
 }
 
 
    static class ViewHolder{
  ImageView img_icon;
  TextView tv_tip;
 }
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值