Android模仿新浪微博(Fragment多页面管理)

多个activity分页管理,为了方便获取上下文,采用继承TabActivity的传统方法。

大致思路:使用RadioGroup点击触发不同的选卡项,选卡项绑定不同的activiity,进而进行多页面管理。详解见注解。

/**
 * 主Activity
 * 通过点击RadioGroup下的RadioButton来切换不同界面
 * Created by D&LL on 2016/7/20.
 */
public class MainActivity extends TabActivity {
    //定义TabHost对象
    private TabHost tabHost;
    //定义RadioGroup对象
    private RadioGroup radioGroup;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tab_layout);
        initView();
        initData();
    }
    /**
     * 初始化组件
     */
    private void initView() {
        //实例化TabHost,得到TabHost对象
        tabHost = getTabHost();

        //得到Activity的个数
        int count = Constant.ConValue.mTabClassArray.length;

        for (int i = 0; i < count; i++) {
            //为每一个Tab按钮设置图标、文字和内容
            TabSpec tabSpec = tabHost.newTabSpec(Constant.ConValue.mTextviewArray[i])
                    .setIndicator(Constant.ConValue.mTextviewArray[i]).setContent(getTabItemIntent(i));
            //将Tab按钮添加进Tab选项卡中
            tabHost.addTab(tabSpec);
        }
        //实例化RadioGroup
        radioGroup = (RadioGroup) findViewById(R.id.main_radiogroup);
    }
    /**
     * 初始化组件
     */
    private void initData() {
        // 给radioGroup设置监听事件
        radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId) {
                    case R.id.RadioButton0:
                        tabHost.setCurrentTabByTag(Constant.ConValue.mTextviewArray[0]);
                        break;
                    case R.id.RadioButton1:
                        tabHost.setCurrentTabByTag(Constant.ConValue.mTextviewArray[1]);
                        break;
                    case R.id.RadioButton2:
                        tabHost.setCurrentTabByTag(Constant.ConValue.mTextviewArray[2]);
                        break;
                    case R.id.RadioButton3:
                        tabHost.setCurrentTabByTag(Constant.ConValue.mTextviewArray[3]);
                        break;
                    case R.id.RadioButton4:
                        tabHost.setCurrentTabByTag(Constant.ConValue.mTextviewArray[4]);
                        break;
                }
            }
        });
        ((RadioButton) radioGroup.getChildAt(0)).toggle();
    }
    /**
     * 给Tab选项卡设置内容(每个内容都是一个Activity)
     */
    private Intent getTabItemIntent(int index) {
        Intent intent = new Intent(this, Constant.ConValue.mTabClassArray[index]);
        return intent;
    }
}
MainActivity布局文件tab_layout.xml. TabHost布局,添加一个TabWidget用于显示activity,下面是一个RadioGroup显示切换activity的按钮菜单。
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
         android:id="@android:id/tabhost"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent">
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical">
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="0.0dip"
            android:layout_weight="1.0"/>
        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.0"
            android:visibility="gone"/>
        <RadioGroup
            android:id="@+id/main_radiogroup"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:background="@drawable/tab_widget_background"
            android:gravity="center_vertical"
            android:orientation="horizontal"
            android:padding="2dip">
            <RadioButton
                android:id="@+id/RadioButton0"
                style="@style/tab_item_background"
                android:drawableTop="@drawable/tab_home"
                android:text="主页"
                android:textColor="#ffffff"/>
            <RadioButton
                android:id="@+id/RadioButton1"
                style="@style/tab_item_background"
                android:drawableTop="@drawable/tab_msg"
                android:text="评论"
                android:textColor="#ffffff"/>
            <RadioButton
                android:id="@+id/RadioButton2"
                style="@style/tab_item_background"
                android:drawableTop="@drawable/tab_write"
                android:text="发微博"
                android:textColor="#ffffff"/>
            <RadioButton
                android:id="@+id/RadioButton3"
                style="@style/tab_item_background"
                android:drawableTop="@drawable/tab_me"
                android:text="用户信息"
                android:textColor="#ffffff"/>
            <RadioButton
                android:id="@+id/RadioButton4"
                style="@style/tab_item_background"
                android:drawableTop="@drawable/tab_more"
                android:text="更多"
                android:textColor="#ffffff"/>
        </RadioGroup>
    </LinearLayout>
</TabHost>

这里写图片描述这里写图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值