我需要弄几个分页,就是TabHost的形式的。但是在切换选项页面的时候TabHost标签栏中的标签与标签的切换带有滑动的动画效果,最好是页面也有滑动效果。我想知道这样的效果是怎么做的?用Tabhost?ActivityGround?还是其他什么方法?要怎么实现?最好有demo可以看一下,谢谢
用ViewPager,用Eclipse里ADT的向导就能做出来,当然不是基于TabHost的,是基于ActionBar的,不过原理是一样的。
试试这段代码:
import android.view.View;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
/**
* A custom OnTabChangeListener that uses the TabHost its related to to fetch information about the current and previous
* tabs. It uses this information to perform some custom animations that slide the tabs in and out from left and right.
*
* @author Daniel Kvist
*
*/
public class AnimatedTabHostListener implements OnTabChangeListener
{
private static final int ANIMATION_TIME = 240;
private TabHost tabHost;
private View previousView;
private View currentView;
private int currentTab;
/**
* Constructor that takes the TabHost as a parameter and sets previousView to the currentView at instantiation
*
* @param tabHost
*/
public AnimatedTabHostListener(TabHost tabHost)
{
this.tabHost = tabHost;
this.previousView = tabHost.getCurrentView();
}
/**
* When tabs change we fetch the current view that we are animating to and animate it and the previous view in the
* appropriate directions.
*/
@Override
public void onTabChanged(String tabId)
{
currentView = tabHost.getCurrentView();
if (tabHost.getCurrentTab() > currentTab)
{
previousView.setAnimation(outToLeftAnimation());
currentView.setAnimation(inFromRightAnimation());
}
else
{
previousView.setAnimation(outToRightAnimation());
currentView.setAnimation(inFromLeftAnimation());
}
previousView = currentView;
currentTab = tabHost.getCurrentTab();
}
/**
* Custom animation that animates in from right
*
* @return Animation the Animation object
*/
private Animation inFromRightAnimation()
{
Animation inFromRight = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 1.0f, Animation.RELATIVE_TO_PARENT, 0.0f,
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f);
return setProperties(inFromRight);
}
/**
* Custom animation that animates out to the right
*
* @return Animation the Animation object
*/
private Animation outToRightAnimation()
{
Animation outToRight = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 1.0f,
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f);
return setProperties(outToRight);
}
/**
* Custom animation that animates in from left
*
* @return Animation the Animation object
*/
private Animation inFromLeftAnimation()
{
Animation inFromLeft = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, -1.0f, Animation.RELATIVE_TO_PARENT, 0.0f,
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f);
return setProperties(inFromLeft);
}
/**
* Custom animation that animates out to the left
*
* @return Animation the Animation object
*/
private Animation outToLeftAnimation()
{
Animation outtoLeft = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, -1.0f,
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f);
return setProperties(outtoLeft);
}
/**
* Helper method that sets some common properties
* @param animation the animation to give common properties
* @return the animation with common properties
*/
private Animation setProperties(Animation animation)
{
animation.setDuration(ANIMATION_TIME);
animation.setInterpolator(new AccelerateInterpolator());
return animation;
}
}
你可以通过使用 ViewPager和 PageIndicator 来实现。
为和旧的Android版本兼容,或者有更多其它选择。使用ViewPagerIndicator。请参考:https://github.com/JakeWharton/Android-ViewPagerIndicator/
actionbar+fragment
viewpager+fragment,或者直接用viewpager
看这里http://blog.csdn.net/z13759561330/article/details/20493675
看这里http://blog.csdn.net/z13759561330/article/details/20493675
或这里http://blog.csdn.net/z13759561330/article/details/40737381
要想实现滑动效果,最好不要用TabHost了,这个组件已经慢慢的被淘汰了,建议你使用ViewPager
http://blog.csdn.net/xdwyyan/article/details/40117499
利用nineold包结合你滑动的距离可以实现滑动式他tabhost
http://www.2cto.com/kf/201206/134854.html?fw_key=CAF92ACEA36EE727 或许能帮到您
用Eclipse,记得把SDK和ADT都升级到最新,然后New Android Project,跟着一步一步做,记得Minimal Required SDK要是11才行,然后BlankActivity,Navigation Type选Tabs + Swipe,出来就是你要的效果。
好像,都是有ViewPage实现的。因为它有滑动效果……;
而且ViewPager的滑动是这样实现的:
public interface PageTransformer {
/**
* Apply a property transformation to the given page.
*
* @param page Apply the transformation to this page
* @param position Position of page relative to the current front-and-center
* position of the pager. 0 is front and center. 1 is one full
* page position to the right, and -1 is one page position to the left.
*/
public void transformPage(View page, float position);
}
给你我的博客链接:主流移动开发框架(2)——fragment+fragmenttabhost实现底部菜单可滑动。
http://blog.csdn.net/u010794180/article/details/41621003
绝对是你想要的效果。附有demo给你下载。
你可以参考一下我的自定义组件系列【3】希望对你有帮助。 http://blog.csdn.net/dawanganban/article/details/24007215
用TabHost应该是可以实现的
用Eclipse,记得把SDK和ADT都升级到最新,然后New Android Project,跟着一步一步做,记得Minimal Required SDK要是11才行,然后BlankActivity,Navigation Type选Tabs + Swipe,出来就是你要的效果。
看这里http://blog.csdn.net/z13759561330/article/details/20493675