Android滑动动画效果Demo_TranslateAnimation使用例子
TranslateAnimation简介
Android JDK为我们提供了4种动画效果,分别是: AlphaAnimation,RotateAnimation, ScaleAnimation, TranslateAnimation
今天我想讲解的是TranslateAnimation这个动画效果。也是本人在做一个移动图片的动画效果的项目时,遇到了一些问题
在网上查了很多资料,搞了好几天。终于明白怎么使用这个TranslateAnimation,在本文中记录下来,以便以后忘记了可以查阅
TranslateAnimation是移动的动画效果、它有三个构造函数
public TranslateAnimation(Context context,AttributeSet attrs)
这个方法比较简单、这里就不做过多讲解了
public TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)
这个是我们最常用的一个构造方法
float fromXDelta:这个参数表示动画开始的点离当前View X坐标上的差值;
float toXDelta, 这个参数表示动画结束的点离当前View X坐标上的差值;
float fromYDelta, 这个参数表示动画开始的点离当前View Y坐标上的差值;
float toYDelta)这个参数表示动画开始的点离当前View Y坐标上的差值;
如果view在A(x,y)点 那么动画就是从B点(x+fromXDelta, y+fromYDelta)点移动到C 点(x+toXDelta,y+toYDelta)点.
public TranslateAnimation (int fromXType, float fromXValue, int toXType, float toXValue, int fromYType, float fromYValue, int toYType, float toYValue)
fromXType:第一个参数是x轴方向的值的参照(Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF,or Animation.RELATIVE_TO_PARENT);fromXValue:第二个参数是第一个参数类型的起始值;
toXType,toXValue:第三个参数与第四个参数是x轴方向的终点参照与对应值;
后面四个参数就不用解释了、如果全部选择Animation.ABSOLUTE,其实就是第二个构造函数
以x轴为例介绍参照与对应值的关系:
如果选择参照为Animation.ABSOLUTE,那么对应的值应该是具体的坐标值,比如100到300,指绝对的屏幕像素单位
如果选择参照为Animation.RELATIVE_TO_SELF或者 Animation.RELATIVE_TO_PARENT指的是相对于自身或父控件
对应值应该理解为相对于自身或者父控件的几倍或百分之多少
使用事例
//定义从右侧进入的动画效果 protected 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); inFromRight.setDuration(500); inFromRight.setInterpolator(new AccelerateInterpolator()); return inFromRight; } //定义从左侧进入的动画效果 protected 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); inFromLeft.setDuration(500); inFromLeft.setInterpolator(new AccelerateInterpolator()); return inFromLeft; } //定义从左侧退出的动画效果 protected 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); outtoLeft.setDuration(500); outtoLeft.setInterpolator(new AccelerateInterpolator()); return outtoLeft; } // 定义从左侧进入的动画效果 protected Animation inFromLeftAnimation2() { Animation inFromLeft = new TranslateAnimation( Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.7f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f); inFromLeft.setDuration(500); inFromLeft.setFillAfter(true); inFromLeft.setInterpolator(new AccelerateInterpolator()); return inFromLeft; } //定义从左侧退出的动画效果 protected Animation outToLeftAnimation2() { Animation outtoLeft = new TranslateAnimation( Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f); outtoLeft.setDuration(500); outtoLeft.setFillAfter(true); outtoLeft.setInterpolator(new AccelerateInterpolator()); return outtoLeft; }
推荐阅读
-
Android Studio 使用ViewPager + Fragment实现滑动菜单Tab效果 --简易版
-
Android使用ListView实现滚轮的动画效果实例
-
android使用ExpandableListView控件实现小说目录效果的例子
-
Android使用ViewPager实现图片滑动预览效果
-
详解Android使用CoordinatorLayout+AppBarLayout+CollapsingToolbarLayou实现手指滑动效果
-
Android仿京东顶部搜索框滑动伸缩动画效果
-
Android如何使用ViewPager2实现页面滑动切换效果
-
Android Studio使用ViewPager+Fragment实现滑动菜单Tab效果
-
android使用TabLayout+NestedScrollView 实现详情界面tab页 关联 上下滑动视图的效果
-
Android实现ViewPager多页面滑动切换及动画效果的方法