TabWidget實現不同Activity的切換

效果圖:



核心代碼:

public class tabUtils {
	static int sActiveTabIndex = -1;
  static boolean updateTabState(Activity a,int hightlight){
	  boolean isActive=false;
	  final TabWidget tw=(TabWidget) a.findViewById(R.id.widgetbus);
	  for(int i=0;i<tw.getChildCount();i++){
		  View v=tw.getChildAt(i);
		  if(v.getId()==hightlight)
		  {
			  isActive=true;
			  tw.setCurrentTab(i);	
			  sActiveTabIndex=i;
		  }
		  v.setOnClickListener(new View.OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				processtabclick((Activity)tw.getContext(),v,tw.getChildAt(sActiveTabIndex).getId());
			}			  
		  });
		  v.setOnFocusChangeListener( new View.OnFocusChangeListener() {
			
			@Override
			public void onFocusChange(View v, boolean hasFocus) {
				// TODO Auto-generated method stub
				if(hasFocus){
					for(int i=0;i<tw.getChildCount();i++){
						if(v==tw.getChildTabViewAt(i))
							tw.setCurrentTab(i);
						processtabclick((Activity)tw.getContext(),v,tw.getChildAt(sActiveTabIndex).getId());
						break;
					}
				}
			}
		});
	  }
	  return true;
  }
  static void processtabclick(Activity a,View v,int curent){
	  int id=v.getId();
	  if(v.getId()==curent)
	  {
		  return;
	  }
	  activetab(a,id);
	  
  }
  static void activetab(Activity a,int id){
	  Intent intent=new Intent();
	  switch(id)
	  {
	  case R.id.text1:
		  intent.setClass(a, TabWidgteTest.class);
		  break;
	  case R.id.text2:
		  intent.setClass(a, activity2.class);
		  break;
	  case R.id.text3:
		  intent.setClass(a, activity3.class);
		  break;
	  case R.id.text4:
		  intent.setClass(a, activity4.class);
		  break;
	  default:
		  return;
	  }
		  intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
		  a.startActivity(intent);
		  a.finish();
		  a.overridePendingTransition(0, 0);
	  }
}

原理分析:在TabWidget中加入四個TextView,在每個TextView上綁定OnClickListener監聽器,

當有OnClick事件時,會判斷點擊的View是否是focus的,如果不是則啓動點擊的item所代表的activity。

源碼下載地址:http://download.csdn.net/detail/txj8612/5264944

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章