现在的位置: 首页 > 综合 > 正文

使用GridView和ActivityGroup实现tab切换

2018年02月08日 ⁄ 综合 ⁄ 共 4382字 ⁄ 字号 评论关闭

弄了一整天总算把这种效果弄出来了。

附上demo下载链接   点击打开链接

  先上张效果图:

点击下面4个按钮,是中间的布局跳转.

下方的布局是一个GridView,中间一个LinearLayout.

代码:

main.xml

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     android:layout_width="fill_parent" android:layout_height="fill_parent"  
  3.     android:orientation="vertical" android:background="#EBF1DE"  
  4.     android:id="@+id/mainLayout" >  
  5.     <LinearLayout android:id="@+id/center"  
  6.         android:layout_width="fill_parent" android:layout_height="wrap_content"  
  7.         android:layout_below="@+id/lin"/>  
  8.       
  9.      
  10.     <GridView  
  11.         android:id="@+id/grid_view"  
  12.         android:layout_width="wrap_content"  
  13.         android:layout_height="wrap_content"  
  14.         android:layout_alignParentBottom="true"  
  15.         android:layout_gravity"bottom"  
  16.         android:numColumns="4"  
  17.         android:horizontalSpacing="10dp"  
  18.         android:gravity="center_horizontal"  
  19.         android:background="@drawable/maintab_toolbar_bg">  
  20.     </GridView>  
  21.   
  22. </RelativeLayout>  

对于gridView中数据项的xml:

item.xml:

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.   android:orientation="vertical"  
  4.   android:layout_width="wrap_content"  
  5.   android:layout_height="wrap_content">  
  6.   <ImageView  
  7.     android:id="@+id/item_iamge"  
  8.     android:layout_width="wrap_content"  
  9.     android:layout_height="wrap_content"  
  10.     android:layout_gravity="center_horizontal"  
  11.     />  
  12.   <TextView  
  13.     android:id="@+id/item_text"  
  14.     android:layout_width="wrap_content"  
  15.     android:layout_height="wrap_content"  
  16.     android:layout_gravity="center_horizontal"  
  17.     android:textSize="10.0dip"/>  
  18. </LinearLayout>  


关键是主Activity要继承自ActivityGroup

MainActivity:

  1. public class MainActivity extends ActivityGroup{  
  2.     private int selected;  
  3.     public LinearLayout container;  
  4.       
  5.     @Override  
  6.     public void onCreate(Bundle savedInstanceState){  
  7.         super.onCreate(savedInstanceState);  
  8.         super.setContentView(R.layout.main);  
  9.         container = (LinearLayout)findViewById(R.id.center);  
  10.         ArrayList<HashMap<String, Object>> menu_data = new ArrayList<HashMap<String,Object>>();  
  11.         int[] images = { R.drawable.home, R.drawable.publish,R.drawable.change,R.drawable.more };  
  12.         String[] menu_texts = { "主页""发布""随便看看","更多" };  
  13.         for(int i=0;i<images.length;i++){  
  14.             HashMap<String, Object> map = new HashMap<String, Object>();  
  15.             map.put("menu_image", images[i]);  
  16.             map.put("menu_text", menu_texts[i]);  
  17.             menu_data.add(map);  
  18.         }  
  19.         GridView gv = (GridView)findViewById(R.id.grid_view);  
  20.         SimpleAdapter adapter = new SimpleAdapter(this, menu_data,  
  21.                 R.layout.item, new String[] { "menu_image""menu_text" },  
  22.                 new int[] { R.id.item_iamge, R.id.item_text });  
  23.         gv.setAdapter(adapter);  
  24.         switchActivity(selected);  
  25.         gv.setOnItemClickListener(new OnItemClickListener(){  
  26.             @Override  
  27.             public void onItemClick(AdapterView<?> parent, View view,  
  28.                     int position, long id) {  
  29.                 if(selected == position){  
  30.                     return;  
  31.                 }  
  32.                 selected = position;  
  33.                 switchActivity(selected);  
  34.             }  
  35.         });  
  36.     }  
  37.     public void switchActivity(int selected){  
  38.         container.removeAllViews();  
  39.         Intent intent = null;  
  40.         String tag = "";  
  41.         if(selected==0){  
  42.             intent = new Intent(MainActivity.this, TabActivity01.class);  
  43.             tag = "tabActivity01";  
  44.         }else if(selected==1){  
  45.             intent = new Intent(MainActivity.this, TabActivity02.class);  
  46.             tag = "tabActivity02";  
  47.         }else if(selected==2){  
  48.             intent = new Intent(MainActivity.this,TabActivity01.class);  
  49.             tag = "tabActivity03";  
  50.         }else if(selected==3){  
  51.             intent = new Intent(MainActivity.this, TabActivity02.class);  
  52.             tag = "tabActivity04";  
  53.         }  
  54.          Window subActivity = getLocalActivityManager().startActivity(tag,intent);   
  55.          //容器添加View    
  56.          container.addView(subActivity.getDecorView(),    
  57.                 LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);    
  58.     }  
  59.       
  60. }  


主要的代码就这些,其他的Activity可以自己随便写。

抱歉!评论已关闭.