shap圆角动画

如何对一个背景做动画,圆角变直角,直角变圆角?
可以通过对shap的cornerRadius值做属性动画。

创建一个shap并且设置给一个view作为背景。

        shape = new GradientDrawable();
        shape.setColor(Color.parseColor("#ffffff"));
        shape.setShape(GradientDrawable.RECTANGLE);//设置为矩形
        shape.setCornerRadius(DimenUtils.dp2px(8));
        mPostageCl.setBackground(shape);

开启动画:

    public void showAnimation(boolean expand) {
        int maxRadius = DimenUtils.dp2px(8);
        int maxMargin = DimenUtils.dp2px(12);

        ConstraintLayout.LayoutParams lparams = (ConstraintLayout.LayoutParams) mPostageCl.getLayoutParams();
        ObjectAnimator cornerAnimator = ObjectAnimator.ofFloat(shape, "cornerRadius", maxRadius, 0);
        ValueAnimator marginAnim = ValueAnimator.ofInt(maxMargin, 0);

        marginAnim.addUpdateListener(animation -> {
            int margin = (int) animation.getAnimatedValue();
            lparams.leftMargin = margin;
            lparams.rightMargin = margin;
            lparams.topMargin = margin;
            mPostageCl.requestLayout();
        });
        AnimatorSet animSet = new AnimatorSet();
        animSet.setDuration(300);
        animSet.playTogether(cornerAnimator, marginAnim);
        animSet.start();
    }

这里对view做了一个margin变化和圆角变直角的动画集合。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 CALayer IOS SDK详解之CALayer(一) http://doc.okbase.net/Hell...
    Kevin_Junbaozi阅读 5,210评论 3 23
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,141评论 5 13
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,144评论 1 32
  • 01觉察日记18826 1、非常感谢!我看到了真正重要或更重要的东西。比如:遇到各种干扰,我心平气和,因为我看到了...
    01零壹阅读 448评论 0 0
  • 有缘相聚需珍惜 途中离开需尊重 个人选择祝福留 战友祝福请牢记 是的,二月有的伙伴缺作业未主动补红包的,也没说明的...
    思楠生涯规划阅读 192评论 0 0