即将毕业,做android一年了,鼓足勇气原创一篇。知识面窄,道行尚浅,写的不好与不对的地方,亲们请给我指出来哈,请见谅。
demo源码下载地址:http://download.youkuaiyun.com/detail/hshuaijun55/4351317
首先,上张效果图,大家一看就知道是做什么的了。
现在咱们很多应用应该都会用到这个效果,网上也有很多文章有介绍如何做,在这儿我就不再赘述,直接进入主题。这个demo是我从最近接触到的一个项目中挖出来的,实现了包括一级activity、二级子activity等子activity都重绘底部菜单栏的效果。demo是我从项目源码中挖出来的,对于demo源码我的理解还不是特别的透彻,希望用到的朋友们一起研究研究。(^_^)
一.程序框架图

各类之间都是继承关系(除去BaseActivity)
scrollableTabActivity继承于ActivityGroup。用来控制重绘菜单栏布局,以及样式设置,和事件监听。
MenuActivityActivity类似于主页,用来添加底部菜单栏的内容。
BaseActivity作为各一级、二级Activity的基类,负责一些共同的方法的定义。
ItemNActivity代表着所有Activity。后面Activity需要做的操作都在这里面自己去定义。
二.各个类的详细讲解
先简单分析各个类的主要的方法点,后边回过头来再分析分析,整个demo中主要设计的关键点。
1.MenuActivityActivity
这个类类似于一个程序主界面,程序启动也是从这个界面开始的。这里面本实现了一个欢迎界面的效果,我在程序中注释掉了这段代码,要用到的朋友直接取消掉注释就行了。实现的思路是先延时100毫秒去加载数据,然后延时5秒之后去除这个view。就是先展示一view,让后台线程去加载数据,然后去掉这个view。
private void loadHomeActivity() {
new Handler().postDelayed(new Runnable() {
public void run() {
MenuActivityActivity.this.navigationInit();
}
}, 100L);
//延时5秒执行去除操作
// new Handler().postDelayed(new Runnable() {
// public void run() {
// MenuActivityActivity.this.deleteToken("");
// }
// }, 5000L);
}
另外需要提到的就是添加底部菜单栏的选项部分的代码,如下
//在ScrollableTabActivity类中定义方法添加tab
public void navigationInit(){
//首页
Intent localIntent1 = new Intent();
localIntent1.setClass(MenuActivityActivity.this, Item01Activity.class);
localIntent1.putExtra("com.360buy:singleInstanceFlag", true);
localIntent1.putExtra("com.360buy:navigationFlag", true);
localIntent1.putExtra("com.360buy:navigationId", 0);
addTab(new ScrollableTabActivity.TabBarButtonStyle("",R.drawable.home_down, R.drawable.home_up),
new ScrollableTabActivity.TabBarButtonAction(localIntent1));
//搜索
Intent localIntent2 = new Intent();
localIntent2.setClass(MenuActivityActivity.this, Item02Activity.class);
localIntent2.pu