Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中结束ScaleAnimation时,将LayoutView设置为圆形?_Java_Android_Animation - Fatal编程技术网

Java 在Android中结束ScaleAnimation时,将LayoutView设置为圆形?

Java 在Android中结束ScaleAnimation时,将LayoutView设置为圆形?,java,android,animation,Java,Android,Animation,我正在视图中创建动画。用户单击按钮后,该按钮变为圆形。我正在使用缩放动画来存档这个。但是我的视图布局半径在单击按钮后会发生变化。如何在动画过程中保持相同的半径,或者在没有库的情况下,它们是如何实现这一点的? 查看xml ScaleAnimation类没有该属性。所以我使用了ValueAnimator类来激活它动画时间是一个整数。你想放弃吗 ValueAnimator anim = ValueAnimator.ofInt(view.getMeasuredWidth(), view.getMea

我正在视图中创建动画。用户单击按钮后,该按钮变为圆形。我正在使用缩放动画来存档这个。但是我的视图布局半径在单击按钮后会发生变化。如何在动画过程中保持相同的半径,或者在没有库的情况下,它们是如何实现这一点的?

查看xml


ScaleAnimation
类没有该属性。所以我使用了
ValueAnimator
类来激活它<代码>动画时间是一个整数。你想放弃吗

 ValueAnimator anim = ValueAnimator.ofInt(view.getMeasuredWidth(), view.getMeasuredHeight());

        anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator valueAnimator) {
                int val = (Integer) valueAnimator.getAnimatedValue();
                ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
                layoutParams.width = val;
                view.requestLayout();
            }
        });

        anim.setDuration(ANIMATION_TIME);
        anim.start();

最好有两个视图,一个是按钮,另一个是圆形进度条。缩小按钮后,可以看到圆形进度条。看看这是否适合你。如果你想查看它,还有一些自定义视图可用,只需搜索
加载按钮和roid
。我试过了,但在启动动画之后。按钮的半径将改变。因此,挑战性的事情是在结束动画时保持视图的半径,无论如何,感谢您的关注。您是否尝试过使用
MotionLayout
,因为它似乎是解决此问题的更好方法。我尝试了ValueAnimator来实现这一点
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners
    android:pivotX="100%"
    android:pivotY="100%"
    android:radius="45dp"

    />
<padding
    android:bottom="0dp"
    android:left="0dp"
    android:right="0dp"
    android:top="0dp" />
<solid android:color="#677FFF" />
<!--<stroke-->
<!--    android:width="3dp"-->
<!--    android:color="#50A4D1" />-->
</shape>
public void scaleViewAnimation(View view) {
            ScaleAnimation scaleAnimation = new ScaleAnimation(1f, 0, 1f, 1f, Animation.RESTART, 0.5f, Animation.RESTART, 0.5f);
            scaleAnimation.setDuration(ANIMATION_FADE_DURATION);
            scaleAnimation.setFillAfter(true);
            view.startAnimation(scaleAnimation);
        }
 ValueAnimator anim = ValueAnimator.ofInt(view.getMeasuredWidth(), view.getMeasuredHeight());

        anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator valueAnimator) {
                int val = (Integer) valueAnimator.getAnimatedValue();
                ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
                layoutParams.width = val;
                view.requestLayout();
            }
        });

        anim.setDuration(ANIMATION_TIME);
        anim.start();