学习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 ...
随机推荐
- kvm的live-snapshot
目前项目中已经存在的快照是针对卷的快照,并且需要关机.所以目前的需求有两个:1.不关机快照:2.针对虚拟机的快照,而不是针对券的快照. 由需求所以针对libvirt做了一些实验,纪录如下: 环境:物理 ...
- Android 学习 之 无需类名启动其他程序
在网上搜索了一会相关的实现代码,发现所有的文章都说是需要包名和类名.但是人家的程序,我们怎么可能知道哪个是第一个启动的Activity?所以,真正用在项目上,那种方法基本上没什么用的.于是查看官方文档 ...
- Lint Code——最多共线的点的个数
题目链接:http://www.lintcode.com/zh-cn/problem/max-points-on-a-line/# 条件:给一个点数组 目标:求出共线的点的最多个数 实现:时间复杂度- ...
- linux 用户管理维护 清缓存
#echo 1 > /proc/sys/ vm/drop_caches 2013.10.10 其实一直user group一直都没去弄清楚 只是没去归类,@@一种是对用户/组直接修改(同时也更改 ...
- Chapter 1 First Sight——20
After two classes, I started to recognize several of the faces in each class. 两节课之后,我开始记住了每节课的那几张脸. ...
- listview去掉条目间的分割线
未去掉前: 去掉后: java代码可以这么写: 1 listView.setDivider(null);//去掉条目间的分割线 PS:ListView的几个常用操作 listView ...
- ssh-copy-id
建立无密码登录是经现root成功普通用户失败, chmod 0600 authorized_keys setenforce 0 ssh-copy-id server2 ssh-add ~/.ss ...
- FusionCharts使用问题及解决方法(三)-FusionCharts常见问题大全
前两篇文章中,我们总结了FusionCharts图表的一些常见问题(FAQ)及解决方法,本文继续讨论FusionCharts使用者常见的一些复杂的报错及解决方法. 当HTML.SWF和JavaScri ...
- iOS的基本图形绘制
绘图的步骤: 1.获取上下文 2.创建路径(描述路径) 3.把路径添加到上下文 4.渲染上下文 通常在- (void)drawRect:(CGRect)rect这个方法里面绘制图形 为什么要再draw ...
- zencart里常用 SQL
1.如何替换某个字段的一些字符 如我把products表的products_image字段中包含2011的字符替换成Zencart2012update `products` set `products ...