我使用以下缩放动画制作ImageView
动画:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<scale
android:interpolator="@android:anim/accelerate_interpolator"
android:fromXScale="1.0"
android:toXScale="2.0"
android:fromYScale="1.0"
android:toYScale="2.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="1000" />
<scale
android:interpolator="@android:anim/accelerate_interpolator"
android:fromXScale="2.0"
android:toXScale="0.0"
android:fromYScale="2.0"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="1000"
android:duration="1000" />
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:interpolator="@android:anim/linear_interpolator"
android:toDegrees="360" android:pivotX="50%" android:pivotY="50%"
android:repeatCount="3"
android:duration="800" android:startOffset="0" />
</set>
但问题是,当第一个动画开始时,ImageView
已经按布局缩放。当第一个动画将比例设置为1.0时,这会导致大小明显跳跃。
有没有办法告诉动画它应该从布局中视图的实际大小开始? 我也尝试使用百分比,这产生了相同的效果。
答案 0 :(得分:2)
从我的查询中可以理解,您希望通过避免开始时明显引人注目的缩放动画来使动画更加流畅。我认为在第一个比例中最小化'规模'可以帮助你避免跳跃,也许这样的事情会有所帮助:
<?xml version="1.0" encoding="utf-8"?>
<scale
android:duration="1000"
android:fromXScale="0.5"
android:fromYScale="0.5"
android:interpolator="@android:anim/accelerate_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.0"
android:toYScale="1.0" />
<scale
android:duration="1000"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="1000"
android:toXScale="1.0"
android:toYScale="1.0" />
<rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="800"
android:fromDegrees="0"
android:interpolator="@android:anim/linear_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="3"
android:startOffset="0"
android:toDegrees="360" />
抱歉让你久等了;尝试这样的事情:
<?xml version="1.0" encoding="utf-8"?>
<scale
android:duration="400"
android:fromXScale="1"
android:fromYScale="1"
android:pivotX="20%"
android:pivotY="20%"
android:repeatCount="1"
android:repeatMode="reverse"
android:toXScale="1.1"
android:toYScale="1.1" />
答案 1 :(得分:0)
我没有找到使用xml的方法,所以我最终使用这种方法在运行时确定大小并在Java中设置动画: