弄了一整天总算把这种效果弄出来了。
附上demo下载链接 点击打开链接
先上张效果图:
点击下面4个按钮,是中间的布局跳转.
下方的布局是一个GridView,中间一个LinearLayout.
代码:
main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="vertical" android:background="#EBF1DE"
android:id="@+id/mainLayout" >
<LinearLayout android:id="@+id/center"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_below="@+id/lin"/>
<GridView
android:id="@+id/grid_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_gravity= "bottom"
android:numColumns="4"
android:horizontalSpacing="10dp"
android:gravity="center_horizontal"
android:background="@drawable/maintab_toolbar_bg">
</GridView>
</RelativeLayout>
对于gridView中数据项的xml:
item.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/item_iamge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
/>
<TextView
android:id="@+id/item_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="10.0dip"/>
</LinearLayout>
关键是主Activity要继承自ActivityGroup
MainActivity:
public class MainActivity extends ActivityGroup{
private int selected;
public LinearLayout container;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main);
container = (LinearLayout)findViewById(R.id.center);
ArrayList<HashMap<String, Object>> menu_data = new ArrayList<HashMap<String,Object>>();
int[] images = { R.drawable.home, R.drawable.publish,R.drawable.change,R.drawable.more };
String[] menu_texts = { "主页", "发布", "随便看看","更多" };
for(int i=0;i<images.length;i++){
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("menu_image", images[i]);
map.put("menu_text", menu_texts[i]);
menu_data.add(map);
}
GridView gv = (GridView)findViewById(R.id.grid_view);
SimpleAdapter adapter = new SimpleAdapter(this, menu_data,
R.layout.item, new String[] { "menu_image", "menu_text" },
new int[] { R.id.item_iamge, R.id.item_text });
gv.setAdapter(adapter);
switchActivity(selected);
gv.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if(selected == position){
return;
}
selected = position;
switchActivity(selected);
}
});
}
public void switchActivity(int selected){
container.removeAllViews();
Intent intent = null;
String tag = "";
if(selected==0){
intent = new Intent(MainActivity.this, TabActivity01.class);
tag = "tabActivity01";
}else if(selected==1){
intent = new Intent(MainActivity.this, TabActivity02.class);
tag = "tabActivity02";
}else if(selected==2){
intent = new Intent(MainActivity.this,TabActivity01.class);
tag = "tabActivity03";
}else if(selected==3){
intent = new Intent(MainActivity.this, TabActivity02.class);
tag = "tabActivity04";
}
Window subActivity = getLocalActivityManager().startActivity(tag,intent);
//容器添加View
container.addView(subActivity.getDecorView(),
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
}
}
主要的代码就这些,其他的Activity可以自己随便写。