花了一天功夫,把 TabActivity 捣鼓出了个样子,差不多和自己所想的一致了,下图为滑动效果(带动画)。
其实做完后,才发现,TabActivity 并不难用,只需要你自己去扩展一些他的方法,就可以达到你自己想到效果。
不多说了,把实现动画的部分贴出现,其他的自己看源码吧。
@Override
public void setCurrentTab(int index) {
int mCurrentTabID = getCurrentTab();
if (null != getCurrentView()) {
// 第一次设置 Tab 时,该值为 null。
if (isOpenAnimation) {
if (mCurrentTabID == (mTabCount - 1) && index == 0) {
getCurrentView().startAnimation(slideLeftOut);
} else if (mCurrentTabID == 0 && index == (mTabCount - 1)) {
getCurrentView().startAnimation(slideRightOut);
} else if (index > mCurrentTabID) {
getCurrentView().startAnimation(slideLeftOut);
} else if (index < mCurrentTabID) {
getCurrentView().startAnimation(slideRightOut);
}
}
}
super.setCurrentTab(index);
if (isOpenAnimation) {
if (mCurrentTabID == (mTabCount - 1) && index == 0) {
getCurrentView().startAnimation(slideLeftIn);
} else if (mCurrentTabID == 0 && index == (mTabCount - 1)) {
getCurrentView().startAnimation(slideRightIn);
} else if (index > mCurrentTabID) {
getCurrentView().startAnimation(slideLeftIn);
} else if (index < mCurrentTabID) {
getCurrentView().startAnimation(slideRightIn);
}
}
}
不过是继承了 TabHost 组件类,并扩展了其 setCurrentTab(int index) 方法,不过有一个 Bug 没有解决,便当连续快速的滑动屏幕时,当 TabHost 加载的 view 或 activity 背景图为透明效果时,会出现重影现象。
希望有高价解决。
关于标签置底,其实可以查看 XML 文件得到答案,使用 TabActivity 时,其布局文件的顶级视图必须为 TabHost 控件,通过看 TabHost 的源码,可以看到,它其实就是一个 FrameLayout,包含了两个控件:FrameLayout mTabContent(展示我们加载的 View 或 Activity) 和 TabWidget mTabWidget(展示 Tab 的标签,其实就是一个 LinearLayout),默认布局都是采用系统的,所以我们可以在自己的 XML 文件中,将这两个的顺序更换一下,就可以了,同样的,既然我们可以得到 TabWidget,那么就可以对其进行布局设计,制定效果也就可以实现了。
现在想来,QQ、UC这些漂亮的按钮滑动方式,会不会也是这样实现的呢,研究中…………
分享到:
相关推荐
使用 TabActivity 实现滑动翻页(带动画)和标签置底
TabActivity 实现滑动翻页(动画)
一个简单的Fragment + TabActivity实现标签内跳转demo, 本来要用ViewPager的,但是发现有些东西和自己原来想的不一样, 下个版本再实现吧。
一个简单的TabActivity自定义实现标签换页例子
1、TabActivity实现底部Tabbar 2、Fragment底部实现 3、ViewPager Tabbar滑动式心啊
NULL 博文链接:https://158067568.iteye.com/blog/941338
1、使用TabActivity实现Tabbar 2、使用Fragment实现Tabbar 3、ViewPager实现可滑动Tabbar
利用Fragment模拟Tabactivity功能。同时也实现了ELong主界面的底部栏的动画切换功能。
在android3.0之后、google淘汰了之前使用tabactivity来实现标切换,转而使用fragment,使用v4包也能够实现向下兼容 使用FragmentTabHost实现tabActivity+tabHost
使用tabActivity时 去掉页签底部默认的白线
我们的Activity不再继承于Activity而改之继承于tabActivity,并在布局文件中布局上述点击按钮之后的5个显示文字的TextView,布局文件与之前的布局文件并无变化
TabActivity使用实例
实现了Tab控件,每个TabActivity用ListView实现
ActionBar和Fragment结合ViewPager实现TabActivity
说明Google已经建议不要使用tabActivity了,然后又发现在新建的android项目中多出了一个android dependencies包里面放着一个android-support-v4.jar包,相信大家有的已经使用过这个jar包了,这个jar里面就是一个支持...
安卓切换卡使用的非常有用的代码,解释非常清楚,不难读懂,只需重写一个方法,完全可以当一个模板去用。
NULL 博文链接:https://hao3100590.iteye.com/blog/974343
Android底部标签页的代码例子,提供了三种实现方式,分别是:使用TabActivity实现、使用ActivityGroup实现、使用FragmentActivity实现。
如何使用Fragment建立TabActivity