自定义控件之--CascadeLayout(三)

自定义控件之--CascadeLayout(三)_第1张图片


此篇主要讲viewgroup中的动画设置,其实很简单,看代码即可

layout = (CascadeLayout) findViewById(R.id. cascade);
// 布尔值参数表示所有动画是否使用同一个 interpolator(插补器)
AnimationSet set = new AnimationSet( true);

AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f);
alphaAnimation.setDuration(500);
set.addAnimation(alphaAnimation);
// 参数依次是起始x类型,其实x位置;终点x类型,终点x位置;起始y类型,起始y位置;终点y类型,终点y位置。
TranslateAnimation translateAnimation = new TranslateAnimation(
           Animation. RELATIVE_TO_SELF, -1.0f, Animation.RELATIVE_TO_SELF,
           0.0f, Animation. RELATIVE_TO_SELF, -1.0f,
           Animation. RELATIVE_TO_SELF, 0.0f);
translateAnimation.setDuration(500);
set.addAnimation(translateAnimation);

LayoutAnimationController controller = new LayoutAnimationController(
           set, 0.5f);
layout.setLayoutAnimation(controller);

关于插补器,这里简单研究一下,简单说就是改变动画速率,如加速度,减速度,先加后减等。

1.AccelerateDecelerateInterpolator 加速减速插补器,先加速后减速的动画效果
2.AcceLerateInterpolator 加速插补器,加速动画
3.DecelerateInterpolator 减速插补器,减速动画效果
4.AnticipateInterpolator 向前插补器,有一种向前抛的感觉,落地很重
5.AnticipateOvershootInterpolator 向前向后插补器,有一个回旋的效果
6.OvershootInterpolator 超出插补器也是一个回旋的效果
7.BounceInterpolator 动画结束的时候弹起
8.CycleInterpolator 动画循环播放特定次数,速率改变沿正弦曲线
9.LinearInterpolator以常量速率改变

其中,如果x常量、y加速就是抛物线,总之,xy方向按不同的插补器组合会有不同的效果,之前曾用x常量,y加速实现抛物动画,并且在结束时有回旋效果,当时代码如下:
// 偏移位移
int xx = endLocation[0] - startLocation[0];
int yy = endLocation[1] - startLocation[1];
// x方向,平移运动
TranslateAnimation translateAnimation_x = new TranslateAnimation(0, xx, 0, 0);
translateAnimation_x.setInterpolator( new LinearInterpolator());
 // y方向,加速运动
TranslateAnimation translateAnimation_y = new TranslateAnimation(0, 0, 0, yy);
translateAnimation_y.setInterpolator( new AccelerateInterpolator());
// 组合动画
AnimationSet set = new AnimationSet( false);
set.addAnimation(translateAnimation_y);
set.addAnimation(translateAnimation_x);
set.setDuration(1000);

这里需要注意,TranslateAnimation构造方法的四个参数,是距离view的位移距离。起始点x距离view的原始距离,终点x距离view的原始距离。而不是起始点和终点。都不是绝对位置,而是相对位置。

5.源码
https://github.com/qingfengmy/Cascadelayout




你可能感兴趣的:(自定义控件之--CascadeLayout(三))