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 viewpager滑动效果”专注于实现ViewPager的滑动动态效果,提供了预封装好的接口,使得开发者可以直接使用,无需从头实现复杂的动画逻辑。 ViewPager的滑动效果通常通过PageTransformer来实现,这是...
在Android开发中,创建一个能够实现纵向滑动,即上下滑动效果的页面是一项常见的任务。这样的效果常常用于实现如滚动列表、轮播图或阅读器等应用功能。本教程将详细讲解如何在Android中实现这样的功能,并结合提供的...
在Android开发中,滑动效果是用户界面设计中不可或缺的一部分,它可以增强用户的交互体验,使得应用更加生动且易于操作。自定义控件是实现这些独特滑动效果的关键,特别是通过扩展ViewGroup类,我们可以自由地定义...
`Android listView选项滑动效果`是指通过增强ListView的功能,使每个列表项可以左右滑动,通常用于实现更多的交互操作,比如滑动删除、切换状态等。这个描述提及的demo是基于`android-swipelistview-master`库,它为...
在Android开发中,实现美观且交互性强的开关滑动效果是提升用户体验的重要一环。"Android 开关滑动效果"通常指的是使用特定的UI组件来模拟现实生活中开关的滑动行为,用户可以通过滑动该组件来开启或关闭某个功能。...
本文主要介绍了使用RecyclerView和CardView实现横向卡片式滑动效果的方法,旨在提高Android应用程序的用户体验。下面是相关知识点的详细解释: 1. RecyclerView简介 RecyclerView是Android SDK中的一种控件,官方...
在Android开发中,实现可滑动的开关效果是常见的需求,尤其在设置界面或控制面板中,这样的交互设计能够提供直观、便捷的操作体验。本文将深入探讨如何在Android应用中创建一个滑动开关(Slider Switch),并关注其...
综上所述,实现Android GridView的分页和滑动效果涉及到的主要知识点包括:GridView的基础用法、Adapter的使用、滚动事件监听、自定义滚动效果以及用户体验优化。理解并掌握这些内容,可以帮助开发者创建出更加动态...
在Android开发中,实现图片左右滑动效果是常见的需求,比如在查看相册或轮播图时。这个功能可以通过多种方式实现,其中最常用的是使用ViewPager组件。ViewPager允许用户通过左右滑动手势在多个页面之间切换,非常...
在Android开发中,实现横向滑动翻页效果是构建用户界面的一个常见需求,尤其是在创建类似于电子书、图片浏览器或者卡片式布局的应用时。本实例将深入讲解如何在Android项目中实现这种效果,主要涉及的技术点包括...
在Android开发中,滑动效果是用户界面设计中不可或缺的一部分,为用户提供流畅、直观的交互体验。本资源包“android滑动效果集合+源码”集合了多种Android平台上的滑动动画与交互效果,旨在帮助开发者提升应用的用户...
在Android开发中,滑动效果和倒影效果是常见的用户界面(UI)设计元素,能够提升应用程序的用户体验和视觉吸引力。本篇文章将深入探讨如何在Android应用中实现这两种效果,特别是针对`Gallery`组件的使用。 首先,...
总结,实现Android的左右滑动选择控件涉及的知识点包括:自定义View的创建与绘制、触摸事件处理、布局管理、动画效果、手势识别、库的使用以及性能优化。通过深入理解和实践这些技术,开发者可以构建出满足各种需求...
在Android开发中,实现水平和左右滑动的效果是常见的需求,尤其在设计各种滚动视图或者页面切换时。本资源“android水平和左右滑动的效果.rar”可能包含了一个实现此类功能的示例项目,不过由于内容较多,无法逐一...
在Android开发中,滑动效果(滑动浏览)是用户界面设计中不可或缺的一部分,它提供了流畅的用户体验,尤其是在展示大量内容或图片时。"Android 滑动效果 Gallery"是Android SDK提供的一种特殊视图组件,它允许用户...
**Android滑动效果ViewFlipper详解** 在Android开发中,我们常常需要实现各种动画效果来提升用户体验,其中滑动切换视图是一种常见的交互方式。`ViewFlipper`是Android SDK提供的一种布局容器,它允许我们在多个子...
我们对Android应用程序运行原理及布局文件可谓有了比较深刻的认识和理解,并且用“Hello World!”程序来实践证明了。在继续深入Android开发之旅之前,有必要解决前两篇中没有介绍的遗留问题:View的几种布局显示...
在Android开发中,滑动效果是用户界面设计中不可或缺的一部分,它可以提升应用的用户体验和交互性。本示例“android滑动效果的demo”旨在演示如何实现流畅的界面切换,通过滑动手势来操作应用程序的不同部分。这个...
综上所述,"仿京东首页沉浸式以及滑动效果"是一个涵盖Android和iOS平台的应用程序设计实践,它包括了对状态栏的透明化处理以实现沉浸感,以及通过滑动交互提升用户体验。在实际开发中,这需要开发者具备良好的布局...