学习tabhost 实现微博的主界面

2014-05-27 吴文付

微博的主界面还是很漂亮的,我们这里来熟悉下tabhost的使用,

 

网上资料很多,主要参考了:http://blog.csdn.net/shulianghan/article/details/18233209

 

写的很好。

 

我的主要工作就是看了该文章,写了一个演示。演示参考了 小巫微博的代码。

 

代码如下:

 

package cn.wuwenfu.layoutdemo;

/*
 * 2014-05-27 
 * 主界面的布局Ok
 * 
 * */

import com.example.layoutdemo.R;




import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TabHost;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TabHost.TabSpec;

/**
 * TabActivity已经放弃。替代品是Fragment 
 * @author Administrator
 *
 */
@SuppressWarnings("deprecation")
public class MainActivity extends TabActivity {
    
    public static TabHost mTabhost;
    public static final String TAB_HOME = "TabHome";
    public static final String TAB_MSG = "TabMsg";
    public static final String TAB_SELF = "TabSelfInfo";
    public static final String TAB_DISCOVE = "TabDiscove";
    public static final String TAB_MORE = "TabMore";
    
    public static RadioGroup indexGroup;
    public static RadioButton radio_button0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        //设置无标题,需要注意位置,在布局文件之前
        requestWindowFeature(getWindow().FEATURE_NO_TITLE);
        
        setContentView(R.layout.mainactivity);
        
        
        radio_button0 = (RadioButton) this.findViewById(R.id.tabbar_home);
        radio_button0.setChecked(true); // 设置首页按钮默认是按下状态
        
        // 获取TabHost
        mTabhost = (TabHost) findViewById(android.R.id.tabhost); 
        
        // 设定标签、制定一个标签作为选项卡指示符
        TabSpec tabSpec1 = mTabhost.newTabSpec(TAB_HOME).setIndicator(TAB_HOME);
        // 指定一个加载activity的Intent对象作为选项卡内容
        tabSpec1.setContent(new Intent(MainActivity.this, Home.class));
        mTabhost.addTab(tabSpec1); // 添加第一个子页
        
        TabSpec tabSpec2 = mTabhost.newTabSpec(TAB_MSG).setIndicator(TAB_MSG);
        tabSpec2.setContent(new Intent(MainActivity.this, Message.class));
        mTabhost.addTab(tabSpec2); // 添加第二个子页

        TabSpec tabSpec3 = mTabhost.newTabSpec(TAB_SELF).setIndicator(TAB_SELF);
        tabSpec3.setContent(new Intent(MainActivity.this, SelfInfo.class));
        mTabhost.addTab(tabSpec3); // 添加第三个子页

        TabSpec tabSpec4 = mTabhost.newTabSpec(TAB_DISCOVE).setIndicator(
                TAB_DISCOVE);
        tabSpec4.setContent(new Intent(MainActivity.this, SearchInfo.class));
        mTabhost.addTab(tabSpec4); // 添加第四个子页

        TabSpec tabSpec5 = mTabhost.newTabSpec(TAB_MORE).setIndicator(TAB_MORE);
        tabSpec5.setContent(new Intent(MainActivity.this, More.class));
        mTabhost.addTab(tabSpec5); // 添加第五个子页
        
        
        
        
        
        
        indexGroup = (RadioGroup) this.findViewById(R.id.main_radio);

        // 实现RadioGroup的子选项点击监听
        indexGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId) {
                case R.id.tabbar_home: // 首页
                    System.out.println("点击了首页");
                    mTabhost.setCurrentTabByTag(TAB_HOME);
                    break;
                case R.id.tabbar_message:// 信息
                    mTabhost.setCurrentTabByTag(TAB_MSG);
                    break;
                case R.id.tabbar_me: // 个人资料
                    mTabhost.setCurrentTabByTag(TAB_SELF);
                    break;
                case R.id.tabbar_discove: // 发现
                    mTabhost.setCurrentTabByTag(TAB_DISCOVE);
                    break;
                case R.id.tabbar_more: // 更多
                    mTabhost.setCurrentTabByTag(TAB_MORE);

                }
            }
        });
        
        
    }
    

}
主界面代码
package cn.wuwenfu.layoutdemo;

/*
 * 
 * 简单的模拟首页
 * 
 * */

import com.example.layoutdemo.R;

import android.app.Activity;
import android.os.Bundle;

public class Home extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        
        setContentView(R.layout.home);
        
        
        
    }
    
    

}
首页

其他的界面都和首页相同,只是更换了内容。

 

几个注意点:我写的代码里,没有使用tabWidget .因为它太丑陋了。采用的是单选按钮

 

 

效果图

 

 

 

工程的地址: http://download.csdn.net/detail/douniwan123654/7408051

 

posted on 2014-05-27 15:32  jsRunner  阅读(414)  评论(0编辑  收藏  举报

导航