我对res / animator / grow.xml中的动画有以下定义:
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="sequentially">
<set>
<objectAnimator
android:propertyName="scaleX"
android:duration="150"
android:valueFrom="1.0"
android:valueTo="1.5"
android:valueType="floatType" />
<objectAnimator
android:propertyName="scaleY"
android:duration="150"
android:valueFrom="1.0"
android:valueTo="1.5"
android:valueType="floatType" />
</set>
</set>
我想要的是使pivotX和pivotY位于对象的中心,而不是左上角。我知道我可以通过代码实现这一目标,但我宁愿不这样做。相反,我想在XML文件中指定它。我想过这样做:
<objectAnimator
android:propertyName="pivotX"
android:valueTo="50%" />
<objectAnimator
android:propertyName="pivotY"
android:valueTo="50%" />
但是,这似乎也试图为该属性设置动画,这不是我想要的。相反,我希望它设置枢轴,然后执行动画。我可以用XML做这个,如果有的话,怎么做?
答案 0 :(得分:0)
你必须在你的视图上定义它(android:transformPivotX和android:transformPivotY)(它现在是一个视图的属性,而不是ObjectAnimator的属性)。
两者都不是%,而是sp,dp或px ......
如果您使用VectorDrawable,它取决于viewPort坐标是该组的属性。
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0"
>
<group
android:name="core"
android:pivotX="12.0"
android:pivotY="12.0">
<path
android:name="corepath"
android:fillColor="#FF000000"
android:pathData="@string/init_path_coreic_check_box_outline_blank_black_24dp"
/>
</group>
</vector>
或者您可以继续使用TweenAnimation
答案 1 :(得分:0)
基本上,您可以更改视图属性,因此请使用transformPivotX和transformPivotY
这应该可以解决问题:
<objectAnimator
android:propertyName="transformPivotX"
android:valueTo="0.5"
android:valueType="floatType" />
<objectAnimator
android:propertyName="transformPivotY"
android:valueTo="0.5"
android:valueType="floatType" />
答案 2 :(得分:-2)
我对片段事务有类似的问题。
在布局文件android:transformPivotX
中设置它的烦人之处在于它需要像素,而我需要像素。
虽然不是很漂亮,但您可以在ObjectAnimator中添加值,例如:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator
android:duration="500"
android:propertyName="scaleY"
android:valueFrom="0.0"
android:valueTo="1.0"
android:valueType="floatType"/>
<objectAnimator
android:duration="500"
android:propertyName="pivotY"
android:valueFrom="1.0"
android:valueTo="1.0"
android:valueType="floatType"/>
</set>