花了一天功夫,把 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 实现滑动翻页(带动画)和标签置底”中,我们主要关注两个方面:滑动翻页和标签置底。 1. **滑动翻页**: 滑动翻页通常通过`ViewPager`组件来实现,它允许用户左右滑动页面来浏览多个`...
本篇文章将详细解析如何使用`TabActivity`实现滑动翻页并加入动画效果。 首先,`TabHost`是`TabActivity`的核心组件,它负责管理所有的选项卡和对应的活动。我们需要在布局文件中定义一个`TabHost`,然后在代码中...
而ViewPager允许用户左右滑动查看多个页面,与TabLayout结合可以实现类似TabActivity的功能,但提供了更多的定制选项。 1. **使用TabLayout和ViewPager** - 在布局XML文件中,添加`...
描述中提到,开发者原本打算使用ViewPager来实现这个功能,这是因为ViewPager能够提供平滑的左右滑动切换效果,同时可以自动管理Fragment的生命周期。ViewPager通常与PagerAdapter一起使用,PagerAdapter负责创建和...
本文将详细介绍如何使用`Fragment`来模拟`TabActivity`,并实现类似ELong主界面底部栏的动画切换效果。 首先,我们需要理解`Fragment`的概念。`Fragment`是Android应用中的一个可重用组件,它代表UI的一部分,可以...
9. **替换方案**:考虑到TabActivity的过时,推荐使用ViewPager配合FragmentTabHost或PagerTabStrip来实现更现代的标签页切换效果。这种方式不仅易于维护,还能利用Fragment的优势,如更好地支持回退栈和生命周期...
Fragment可以在一个Activity中管理多个界面,而ViewPager允许用户左右滑动查看不同页面,与TabHost类似,但提供了更多定制选项和更好的性能。 在`TabViewTest`项目中,你可以找到具体实现这些步骤的源代码,包括...
在Android开发中,`TabActivity`是早期版本中用于实现标签栏切换页面的一种方式。它允许用户通过点击不同的标签在多个视图之间进行切换,提供了一种直观且友好的用户界面。然而,随着Android SDK的发展,`...
在Tabbar场景中,`ViewPager`常与`TabLayout`配合使用,实现Tabbar的滑动式切换效果: 1. **添加ViewPager**:在主布局文件中添加`ViewPager`,并设置适配器以加载多个Fragment。 2. **创建TabLayout**:在`...
在Android开发中,"切换卡"通常指的是TabActivity或者使用Fragment和TabLayout实现的界面切换效果,这是一种常见的用户界面设计,用于展示多个相关的视图或功能。本篇将详细讲解如何在Android应用中使用TabActivity...
在Android开发中,`TabActivity`是早期API版本中用于实现多标签页切换的一种方式。本文将深入探讨`TabActivity`的使用,以及如何通过源码理解和应用它,同时也会介绍一些相关的工具来辅助开发。 `TabHost`是`...
在`TabActivity`的实现中,通常会使用`TabHost`和`TabSpec`来创建和设置标签。`TabHost`是一个容器,用于显示和管理多个`TabSpec`。`TabSpec`则是每个标签的配置,包括标签的文本、图标以及对应的`Intent`,这个`...
在Android应用开发中,`TabActivity`是一种常见的用于创建多标签界面的设计模式。它允许用户在不同的标签之间切换,每个标签通常对应一个独立的功能模块。然而,随着Android SDK的更新,`TabActivity`已被废弃,...
关于源码分析,TabActivity在Android的源码中已经被标记为过时,但理解它的实现原理可以帮助我们更好地使用现代的分页组件,如ViewPager和TabLayout。TabActivity的实现主要依赖于Intent和Activity的栈管理,每次...
这篇笔记主要探讨了`TabActivity`的使用方法及其背后的原理,同时也涉及到了一些与之相关的工具和源码分析。 首先,`TabActivity`是Android SDK中的一个类,它继承自`ActivityGroup`,在API level 13被标记为过时,...
在android3.0之后、google淘汰了之前使用tabactivity来实现标切换,转而使用fragment,使用v4包也能够实现向下兼容 使用FragmentTabHost实现tabActivity+tabHost
在Android开发中,TabActivity是早期用来实现标签栏切换页面的一种方式。然而,TabActivity在新的Android支持库中已被弃用,现在推荐使用FragmentTabHost或者Android Design Support Library中的TabLayout配合...
本教程将详细解释如何利用这些组件实现一个`TabActivity`,即带有标签切换功能的活动。 首先,`ActionBar`是Android SDK中的一个组件,它位于应用程序的顶部,提供了显示应用标识、操作选项和导航等功能。在Android...
在实际开发中,由于`TabActivity`已经过时,现在推荐使用`Fragment`和`ViewPager`来实现类似的选项卡功能。`Fragment`可以看作是一个可重用的UI组件,而`ViewPager`则允许用户左右滑动切换不同的`Fragment`,这提供...
虽然自Android 3.0(API级别11)起,TabActivity已被废弃,并且推荐使用Fragment和ViewPager来实现类似的功能,但对于一些低版本或者简单需求的App来说,TabActivity仍然是一个实用的选择。 TabActivity是Activity...