学习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
学习tabhost 实现微博的主界面的更多相关文章
- delphi 一个线程和主界面的交互的演示代码
求一个线程和主界面的交互的演示代码求一个线程和主界面的交互的演示代码.线程和主界面处于两个Unit.线程中的user中不能引用主窗口.我只是想学习一下,线程和主界面交互的方法.去网上查了好几天资料,能 ...
- Android学习系列(23)--App主界面实现
在上篇文章<Android学习系列(22)--App主界面比较>中我们浅略的分析了几个主界面布局,选了一个最大众化的经典布局.今天我们就这个经典布局,用代码具体的实现它. 1.预览图先看下 ...
- Android学习系列(22)--App主界面比较
本文算是一篇漫谈,谈一谈当前几个流行应用的主界面布局,找个经典的布局我们自己也来实现一个.不是为了追求到底有多难,而是为了明白我们确实需要这么做. 走个题,android的UI差异化市场依然很大,依然 ...
- Android应用经典主界面框架之中的一个:仿QQ (使用Fragment, 附源代码)
备注:代码已传至https://github.com/yanzi1225627/FragmentProject_QQ 欢迎fork,如今来审视这份代码,非常多地方写的不太好,欢迎大家指正.有时间我会继 ...
- Winform开发主界面菜单的动态树形列表展示
我在之前很多文章里面,介绍过Winform主界面的开发,基本上都是标准的界面,在顶部放置工具栏,中间区域则放置多文档的内容,但是在顶部菜单比较多的时候,就需要把菜单分为几级处理,如可以在顶部菜单放置一 ...
- 安卓开发_慕课网_Fragment实现Tab(App主界面)
学习内容来自“慕课网” 这里用Fragment来实现APP主界面 思路: 底部横向排列4个LinearLayout,每个LinearLayout包含一个图片按钮和一个文字 1.默认显示第一个功能(微信 ...
- 安卓开发_慕课网_ViewPager实现Tab(App主界面)
学习内容来自“慕课网” 网站上一共有4种方法来实现APP主界面的TAB方法 这里学习第一种 ViewPager实现Tab 布局文件有7个, 主界面acitivity.layout <Linear ...
- 看过《大湿教我写.net通用权限框架(1)之菜单导航篇》之后发生的事(续)——主界面
引言 在UML系列学习中的小插曲:看过<大湿教我写.net通用权限框架(1)之菜单导航篇>之后发生的事 在上篇中只拿登录界面练练手,不把主界面抠出来,实在难受,严重的强迫症啊.之前一直在总 ...
- Android应用主界面底部菜单实现
介绍 现在绝大多数主流的应用主界面,都会包含一个底部菜单,就拿腾讯的QQ与微信来说,看起来是这样的 <---我是底部菜单 原理 在很久以前,可以通过TabActivity实现相关功能,自从Fr ...
随机推荐
- aspx基础开始
<%@ Page Language="C#" Debug="true" trace="false" validateRequest=& ...
- 别说你不知道java中的包装类,wrapper type,以及容易在自动拆箱中出现的问题
很多时候,会有人问你,你知道什么是包装类吗? 或者高端一点问你你知道,wrapper type,是什么吗? 然后你就懵逼了,学了java很多时候都不知道这是啥. 其实问你的人,可能只是想问你,java ...
- XML回顾
xml加强 一.sax解析 1)原理: 读取xml的某个部分,解析一部分(读取一点,解析一点) 2)步骤: SAXParserFactory factory = SAXPa ...
- protobuf与json互相转换
Java http://code.google.com/p/protobuf-java-format/ maven <dependency> <groupId>com.goog ...
- JavaBean-- 设置和取得属性
<jsp:setProperty>标签一共有4种使用方法: 自动匹配:<jsp:setProperty name="实例化对象的名称(id)" property= ...
- PHP字节格式化
/** * 容量转换 * @param string $value 字节数值 * @return string */function GBKB($value) { $size = ($value &g ...
- IP 网际协议
1. IP数据首部长度: 4位版本号 : 4 位,用于标明 IP 版本号,0100 表示 IPv4,0110 表示 IPv6.目前常见的是 IPv4. 4位首部长度: 首部长度是占4位,可表示的最大十 ...
- python 打印类的属性、方法
打印变量db的类(class):[root@fuel ~]# pythonPython 2.6.6 (r266:84292, Jan 22 2014, 09:42:36)[GCC 4.4.7 2012 ...
- ural1523 K-inversions
K-inversions Time limit: 1.0 secondMemory limit: 64 MB Consider a permutation a1, a2, …, an (all ai ...
- fuel 6.1自动推送3控高可用centos 6.5 juno环境排错(二)
https://docs.mirantis.com/openstack/fuel/fuel-6.1/ 由于在测试高可用时,我是用esxi虚拟机测试,测试过程中遇到了网络问题:虚拟机间网络不通,故从网络 ...