代码之家  ›  专栏  ›  技术社区  ›  Wiktor

Android缩放动画不平滑

  •  0
  • Wiktor  · 技术社区  · 7 年前

    <scale> ImageView上的动画效果很好,我用Vector Drawable创建了一个效果不错的,但是image one一点都不平滑,底部是gif:

    <vector xmlns:android="http://schemas.android.com/apk/res/android"
    
    android:width="24px"
    android:height="24px"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0"
    >
    
    <group android:name="background"
        android:pivotX="12"
        android:pivotY="12">
        <path
            android:name="circle"
            android:fillColor="#F235"
            android:pathData="M12,12m-10,0a10,10 0,1 1,20 0a10,10 0,1 1,-20 0" />
    </group>
    </vector>
    

    动画:

    <set xmlns:android="http://schemas.android.com/apk/res/android">
    
        <objectAnimator
            android:duration="400"
            android:propertyName="scaleX"
            android:valueFrom="1.0"
            android:valueTo="0.8"
            android:valueType="floatType"
            />
    
        <objectAnimator
            android:duration="400"
            android:propertyName="scaleY"
            android:valueFrom="1.0"
            android:valueTo="0.8"
            android:valueType="floatType"
            />
    
        <objectAnimator
            android:duration="400"
            android:startOffset="500"
            android:propertyName="scaleX"
            android:valueFrom="0.8"
            android:valueTo="1"
            android:valueType="floatType"
            />
        <objectAnimator
            android:duration="400"
            android:startOffset="500"
            android:propertyName="scaleY"
            android:valueFrom="0.8"
            android:valueTo="1"
            android:valueType="floatType"
            />
    
    </set>
    

    <set xmlns:android="http://schemas.android.com/apk/res/android">
    
        <scale
            android:duration="400"
            android:pivotX="50%"
            android:pivotY="50%"
            android:fromXScale="1.0"
            android:toXScale="0.8"
            android:fromYScale="1.0"
            android:toYScale="0.8"
            />
    
        <scale
            android:startOffset="500"
            android:duration="400"
            android:pivotX="50%"
            android:pivotY="50%"
            android:fromXScale="0.8"
            android:fromYScale="0.8"
            android:toYScale="1.0"
            android:toXScale="1.0" />
    
    
    </set>
    

    蓝色的是矢量绘制,红色的是ImageView动画 <比例>

    我知道删除第二条可以解决这个问题 < 和添加

    android:repeatMode="reverse"
    android:repeatCount="1"
    

    第一个,但我想用两个 < 命令

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  2
  •   atarasenko    7 年前

    第二个动画应该从缩放开始 1.0 1.25 :

    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <scale
            android:duration="400"
            android:pivotX="50%"
            android:pivotY="50%"
            android:fromXScale="1.0"
            android:toXScale="0.8"
            android:fromYScale="1.0"
            android:toYScale="0.8"
        />
    
        <scale
            android:startOffset="500"
            android:duration="400"
            android:pivotX="50%"
            android:pivotY="50%"
            android:fromXScale="1.0"
            android:fromYScale="1.0"
            android:toYScale="1.25"
            android:toXScale="1.25" />
    </set>
    

    否则,缩放 0.8 立即应用,不延迟500毫秒。 Related question

    推荐文章