|
其实做完后,才发现,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 背景图为透明效果时,会出现重影现象。
animtab.zip (1.42 MB, 下载次数: 86) |
|