Android同心圆缩放动画

时间:2015-08-27 21:30:41

标签: android android-layout animation android-animation

我正在尝试制作一个动画,其中两个同心圆上下缩放(中间有一个枢轴)。

如果我将动画设置为两个圆圈中的任何一个,它会在其中心正确缩放,但如果我将动画设置为两个圆圈,则枢轴是错误的。

以下是截图:

Wrong pivot on scale

这是我的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <RelativeLayout
        android:id="@+id/soundCircle"
        android:layout_width="230dp"
        android:layout_height="230dp"
        android:layout_gravity="center">

        <View
            android:id="@+id/soundRipple2"
            android:layout_width="230dp"
            android:layout_height="230dp"
            android:background="@drawable/circle"
            android:alpha="0.08"
            android:layout_centerInParent="true"/>
        <View
            android:id="@+id/soundRipple3"
            android:layout_width="160dp"
            android:layout_height="160dp"
            android:background="@drawable/circle"
            android:alpha="0.08"
            android:layout_centerInParent="true"/>

    </RelativeLayout>
</LinearLayout>

这是动画:

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="500"
    android:fromXScale="1.0"
    android:fromYScale="1.0"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
    android:toXScale="0.7"
    android:toYScale="0.7" 
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatMode="reverse"
    android:fillAfter="true"
    android:repeatCount="infinite"/>

2 个答案:

答案 0 :(得分:1)

这可能是由同一动画的两个实例共享的轴心点引起的。在我玩了一段时间之后,我发现如果你将动画的不同实例分配给View,这是有效的。

这是我用过的代码:

Animation pulse = AnimationUtils.loadAnimation(this, R.anim.pulse);
Animation pulse2 = AnimationUtils.loadAnimation(this, R.anim.pulse);

circle1.startAnimation(pulse);
circle2.startAnimation(pulse2);

答案 1 :(得分:0)

我试过这个动画,动画效果很好。导航一些网站和git存储库后。我找到了一个最好的解决方案,可能它也会帮助你。您无需为该动画添加多个视图。只需访问一次,我相信你也喜欢这种效果。 https://github.com/skyfishjy/android-ripple-background