public static ObjectAnimator nope(View view) {
        int delta = view.getResources().getDimensionPixelOffset(R.dimen.spacing_medium);

        PropertyValuesHolder pvhTranslateX = PropertyValuesHolder.ofKeyframe(View.TRANSLATION_X,
                Keyframe.ofFloat(0f, 0),
                Keyframe.ofFloat(.10f, -delta),
                Keyframe.ofFloat(.26f, delta),
                Keyframe.ofFloat(.42f, -delta),
                Keyframe.ofFloat(.58f, delta),
                Keyframe.ofFloat(.74f, -delta),
                Keyframe.ofFloat(.90f, delta),
                Keyframe.ofFloat(1f, 0f)
        );

        return ObjectAnimator.ofPropertyValuesHolder(view, pvhTranslateX).
                setDuration(500);

    }


第二种效果

public static ObjectAnimator tada(View view) {
        return tada(view, 1f);
    }
    
    public static ObjectAnimator tada(View view, float shakeFactor) {

        PropertyValuesHolder pvhScaleX = PropertyValuesHolder.ofKeyframe(View.SCALE_X,
                Keyframe.ofFloat(0f, 1f),
                Keyframe.ofFloat(.1f, .9f),
                Keyframe.ofFloat(.2f, .9f),
                Keyframe.ofFloat(.3f, 1.1f),
                Keyframe.ofFloat(.4f, 1.1f),
                Keyframe.ofFloat(.5f, 1.1f),
                Keyframe.ofFloat(.6f, 1.1f),
                Keyframe.ofFloat(.7f, 1.1f),
                Keyframe.ofFloat(.8f, 1.1f),
                Keyframe.ofFloat(.9f, 1.1f),
                Keyframe.ofFloat(1f, 1f)
        );

        PropertyValuesHolder pvhScaleY = PropertyValuesHolder.ofKeyframe(View.SCALE_Y,
                Keyframe.ofFloat(0f, 1f),
                Keyframe.ofFloat(.1f, .9f),
                Keyframe.ofFloat(.2f, .9f),
                Keyframe.ofFloat(.3f, 1.1f),
                Keyframe.ofFloat(.4f, 1.1f),
                Keyframe.ofFloat(.5f, 1.1f),
                Keyframe.ofFloat(.6f, 1.1f),
                Keyframe.ofFloat(.7f, 1.1f),
                Keyframe.ofFloat(.8f, 1.1f),
                Keyframe.ofFloat(.9f, 1.1f),
                Keyframe.ofFloat(1f, 1f)
        );
        
        //旋转
//        PropertyValuesHolder pvhRotate = PropertyValuesHolder.ofKeyframe(View.ROTATION,
//                Keyframe.ofFloat(0f, 0f),
//                Keyframe.ofFloat(.1f, -3f * shakeFactor),
//                Keyframe.ofFloat(.2f, -3f * shakeFactor),
//                Keyframe.ofFloat(.3f, 3f * shakeFactor),
//                Keyframe.ofFloat(.4f, -3f * shakeFactor),
//                Keyframe.ofFloat(.5f, 3f * shakeFactor),
//                Keyframe.ofFloat(.6f, -3f * shakeFactor),
//                Keyframe.ofFloat(.7f, 3f * shakeFactor),
//                Keyframe.ofFloat(.8f, -3f * shakeFactor),
//                Keyframe.ofFloat(.9f, 3f * shakeFactor),
//                Keyframe.ofFloat(1f, 0)
//        );

        return ObjectAnimator.ofPropertyValuesHolder(view, pvhScaleX, pvhScaleY).
                setDuration(1000);
    }


更多相关文章

  1. 自定义的Spinner文字居中
  2. Android(安卓)BottomNavigationView的使用
  3. android TabLayout的应用
  4. Android中3D gallary的实现
  5. Android实现冒泡效果进度条
  6. Android(安卓)自定义SeekBar显示进度百分比
  7. Android(安卓)导航条效果实现(六) TabLayout+ViewPager+Fragment
  8. Android(安卓)ScrollView 使用注意事项
  9. android实现自动提示功能

随机推荐

  1. “加一”项目总结--android使用篇(二)(转)
  2. [Android(安卓)与 js 简单互调
  3. Android实现全屏显示的方法
  4. android:id="@*android:id/seekbar" 注意
  5. Android(安卓)ROM研究---如何在ubuntu下
  6. android layout属性介绍
  7. 【Android】 基于XMPP Smack框架 开发QQ
  8. [Android] 对android:layout_weight的一
  9. Android数据加密之Rsa加密
  10. 一样的Android,不一样的学习