TabHost滑动效果怎么实现?

我需要弄几个分页,就是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