`
小杨学JAVA
  • 浏览: 901637 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android TabHos 滑动效果

 
阅读更多
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;
    }
}
转载自:http://ask.csdn.net/questions/1122
分享到:
评论

相关推荐

    Android 界面滑动效果

    在Android开发中,界面滑动效果是用户交互的重要组成部分,为用户提供流畅的视觉体验和便捷的操作方式。"Android 界面滑动效果"通常涉及到多种技术,包括手势识别、滚动视图、滑动布局等。这里我们将深入探讨如何在...

    android viewpager滑动效果

    本项目“android viewpager滑动效果”专注于实现ViewPager的滑动动态效果,提供了预封装好的接口,使得开发者可以直接使用,无需从头实现复杂的动画逻辑。 ViewPager的滑动效果通常通过PageTransformer来实现,这是...

    android 纵向滑动页面(上下滑动效果)

    在Android开发中,创建一个能够实现纵向滑动,即上下滑动效果的页面是一项常见的任务。这样的效果常常用于实现如滚动列表、轮播图或阅读器等应用功能。本教程将详细讲解如何在Android中实现这样的功能,并结合提供的...

    Android 滑动效果 自定义控件

    在Android开发中,滑动效果是用户界面设计中不可或缺的一部分,它可以增强用户的交互体验,使得应用更加生动且易于操作。自定义控件是实现这些独特滑动效果的关键,特别是通过扩展ViewGroup类,我们可以自由地定义...

    Android listView选项滑动效果

    `Android listView选项滑动效果`是指通过增强ListView的功能,使每个列表项可以左右滑动,通常用于实现更多的交互操作,比如滑动删除、切换状态等。这个描述提及的demo是基于`android-swipelistview-master`库,它为...

    Android 开关滑动效果

    在Android开发中,实现美观且交互性强的开关滑动效果是提升用户体验的重要一环。"Android 开关滑动效果"通常指的是使用特定的UI组件来模拟现实生活中开关的滑动行为,用户可以通过滑动该组件来开启或关闭某个功能。...

    RecyclerView+CardView实现横向卡片式滑动效果

    本文主要介绍了使用RecyclerView和CardView实现横向卡片式滑动效果的方法,旨在提高Android应用程序的用户体验。下面是相关知识点的详细解释: 1. RecyclerView简介 RecyclerView是Android SDK中的一种控件,官方...

    android 可滑动的开关效果

    在Android开发中,实现可滑动的开关效果是常见的需求,尤其在设置界面或控制面板中,这样的交互设计能够提供直观、便捷的操作体验。本文将深入探讨如何在Android应用中创建一个滑动开关(Slider Switch),并关注其...

    android gridview分页和滑动效果

    综上所述,实现Android GridView的分页和滑动效果涉及到的主要知识点包括:GridView的基础用法、Adapter的使用、滚动事件监听、自定义滚动效果以及用户体验优化。理解并掌握这些内容,可以帮助开发者创建出更加动态...

    Android实现图片左右滑动效果

    在Android开发中,实现图片左右滑动效果是常见的需求,比如在查看相册或轮播图时。这个功能可以通过多种方式实现,其中最常用的是使用ViewPager组件。ViewPager允许用户通过左右滑动手势在多个页面之间切换,非常...

    android 横向滑动翻页效果 实例

    在Android开发中,实现横向滑动翻页效果是构建用户界面的一个常见需求,尤其是在创建类似于电子书、图片浏览器或者卡片式布局的应用时。本实例将深入讲解如何在Android项目中实现这种效果,主要涉及的技术点包括...

    android滑动效果集合+源码

    在Android开发中,滑动效果是用户界面设计中不可或缺的一部分,为用户提供流畅、直观的交互体验。本资源包“android滑动效果集合+源码”集合了多种Android平台上的滑动动画与交互效果,旨在帮助开发者提升应用的用户...

    Android 滑动效果 倒影效果

    在Android开发中,滑动效果和倒影效果是常见的用户界面(UI)设计元素,能够提升应用程序的用户体验和视觉吸引力。本篇文章将深入探讨如何在Android应用中实现这两种效果,特别是针对`Gallery`组件的使用。 首先,...

    android左右滑动的选择控件

    总结,实现Android的左右滑动选择控件涉及的知识点包括:自定义View的创建与绘制、触摸事件处理、布局管理、动画效果、手势识别、库的使用以及性能优化。通过深入理解和实践这些技术,开发者可以构建出满足各种需求...

    android水平和左右滑动的效果.rar

    在Android开发中,实现水平和左右滑动的效果是常见的需求,尤其在设计各种滚动视图或者页面切换时。本资源“android水平和左右滑动的效果.rar”可能包含了一个实现此类功能的示例项目,不过由于内容较多,无法逐一...

    Android 滑动效果 Gallery

    在Android开发中,滑动效果(滑动浏览)是用户界面设计中不可或缺的一部分,它提供了流畅的用户体验,尤其是在展示大量内容或图片时。"Android 滑动效果 Gallery"是Android SDK提供的一种特殊视图组件,它允许用户...

    Android 滑动效果ViewFlipper

    **Android滑动效果ViewFlipper详解** 在Android开发中,我们常常需要实现各种动画效果来提升用户体验,其中滑动切换视图是一种常见的交互方式。`ViewFlipper`是Android SDK提供的一种布局容器,它允许我们在多个子...

    Android_layout.rar_AbsoluteLayout _android layout_android tabhos

    我们对Android应用程序运行原理及布局文件可谓有了比较深刻的认识和理解,并且用“Hello World!”程序来实践证明了。在继续深入Android开发之旅之前,有必要解决前两篇中没有介绍的遗留问题:View的几种布局显示...

    android滑动效果的demo

    在Android开发中,滑动效果是用户界面设计中不可或缺的一部分,它可以提升应用的用户体验和交互性。本示例“android滑动效果的demo”旨在演示如何实现流畅的界面切换,通过滑动手势来操作应用程序的不同部分。这个...

    仿京东首页沉浸式以及滑动效果

    综上所述,"仿京东首页沉浸式以及滑动效果"是一个涵盖Android和iOS平台的应用程序设计实践,它包括了对状态栏的透明化处理以实现沉浸感,以及通过滑动交互提升用户体验。在实际开发中,这需要开发者具备良好的布局...

Global site tag (gtag.js) - Google Analytics