Android弹性动画三种实现方式

  1. 插值器测试查看网站 http://inloop.github.io/interpolator/

  2. 一个简单的放大动画

           ObjectAnimator animatorX = ObjectAnimator.ofFloat(view, "scaleX", 1.0f, 1.5f);       ObjectAnimator animatorY = ObjectAnimator.ofFloat(view, "scaleY", 1.0f, 1.5f);       AnimatorSet animatorSet = new AnimatorSet();       animatorSet.setDuration(1000);       animatorSet.playTogether(animatorX, animatorY);       animatorSet.start();
  3. 第一种实现方式,通过插值器来完成

    自定义一个插值器

    public class SpringScaleInterpolator implements Interpolator {   private float factor;   public SpringScaleInterpolator(float factor) {       this.factor = factor;   }   @Override   public float getInterpolation(float x) {       return (float) (pow(2, -10 * x) * sin((x - factor / 4) * (2 * PI) / factor) + 1);     //这个公式在http://inloop.github.io/interpolator/中测试获取   }}

    使用插值器,此处使用的属性动画,使用补间动画也可以使用

    animatorSet.setInterpolator(new SpringScaleInterpolator(0.1f));
  4. 第二种方式 facebook

    build.gradle 中添加 com.facebook.rebound:rebound:0.3.8

           SpringSystem springSystem = SpringSystem.create();       Spring spring = springSystem.createSpring();       spring.setCurrentValue(1.0f);       spring.setSpringConfig(new SpringConfig(50, 5));       spring.addListener(new SimpleSpringListener() {           @Override           public void onSpringUpdate(Spring spring) {               super.onSpringUpdate(spring);               float currentValue = (float) spring.getCurrentValue();               view.setScaleX(currentValue);               view.setScaleY(currentValue);           }       });       spring.setEndValue(1.8f);       //随便看看  弹性效果可以通过修改tension和friction的值来改变
  5. 第三种方式

    暂不支持 依赖 compileSdkVersion 26,minSdkVersion 16 以上,有一定的局限性

    build.gradle文件中引入 com.android.support:support-dynamic-animation:25.3.1

           SpringAnimation animationX = new SpringAnimation(imageView, SpringAnimation.SCALE_X,1.8f);       SpringAnimation animationY = new SpringAnimation(imageView, SpringAnimation.SCALE_Y,1.8f);       animationX.getSpring().setStiffness(SpringForce.STIFFNESS_LOW);       animationX.getSpring().setDampingRatio(SpringForce.DAMPING_RATIO_MEDIUM_BOUNCY);       animationX.setStartValue(1.0f);       animationY.getSpring().setStiffness(SpringForce.STIFFNESS_LOW);       animationY.getSpring().setDampingRatio(SpringForce.DAMPING_RATIO_MEDIUM_BOUNCY);       animationY.setStartValue(1.0f);       animationX.start();       animationY.start();//stiffness的值越小,弹性效果越好,弹时间越长。  //DampingRatio的值越大,弹性效果越差。

更多相关文章

  1. activity页面切换效果
  2. Android(安卓)创建,验证和删除桌面快捷方式 (删除快捷方式测试可
  3. android中四个典型动画设置
  4. 监听android home键的实现方式
  5. Android选项卡(TabWidget)应用
  6. Android全屏设置的两种方式
  7. Android核心基础(十一)
  8. kotlin Unresolved reference: kotlinx
  9. Android(安卓)Property Animation属性动画初识:透明渐变(1)

随机推荐

  1. Android 检查网络状态是否可用 (工具类总
  2. CentOS 下载 Android 源代码。
  3. Android经典动画案例分析
  4. Android中Activity触摸事件传递源码学习
  5. 常用的系统调用【Android】
  6. Android创建和配置布局动画
  7. Android权限申请:自带方法 + 第三方库实现
  8. Android高级技巧
  9. android 用流打开网页
  10. android 高仿【优酷】圆盘旋转菜单 的实