我正在为游戏中的练习实施缩放动画..我正在关注所有指南,但总是发生一些奇怪的事情,而不是让对象更大。动画不仅使图像变大,而且即使我不使用翻译动画也会移动它...
这里是xml文件
<?xml version="1.0" encoding="utf-8"?>
<set android:shareInterpolator="false"
xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="1.0"
android:toXScale="1.4"
android:fromYScale="1.0"
android:toYScale="1.4"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:duration="1000" />
</set>
这里是在java中调用的
private void startAnimation(final ImageView imageView) {
final Animation popAnim = AnimationUtils.loadAnimation(getActivity(), R.anim.scalebounce);
imageView.startAnimation(popAnim);
popAnim.setAnimationListener(new AnimationListener() {
public void onAnimationStart(Animation animation) {
}
public void onAnimationRepeat(Animation animation) {
}
public void onAnimationEnd(Animation animation) {
imageView.clearAnimation();
imageView.setVisibility(View.GONE);
}
});
}
它真的很奇怪我已经尝试了我在网上找到的所有解决方案但是没有运气它仍然会转换行为,即使它只是规模......我从小点开始制作图像然后变得更大(正常尺寸) )。但我不希望它移动,只是为了取而代之。谢谢:))
P.S我一直在观察动画,它似乎需要更大的空间,这就是为什么它看起来像是在移动......为什么需要更大的空间?不是实际的图像尺寸?
答案 0 :(得分:3)
pivotX&amp; pivotY需要等于视图应缩放的位置。
为了演示,这里有一个图表来说明:
您的枢轴点当前位于视图之外,使您的视图看起来像移动和缩放一样。
如果您希望枢轴点位于视图的左上角,请将pivotX / pivotY设置为0.
设置pivotX = view.getWidth() / 2f
&amp; pivotY = view.getHeight() / 2f
如果您希望比例位于中心(如第1张图片所示)
希望这会有所帮助:)
答案 1 :(得分:2)
我遇到了同样的问题。我不知道它是否像我的一样,但它可以帮助maby。 我在一个scrollview中的按钮,在relativelayout中有一个relativelayout。当我想设置我的按钮的比例动画时,问题就像你的一样,所以我用java代码而不是xml,但RELATIVE_TO_PARENT和RELATIVE_TO_SELF之间没有区别。我发现每次从按钮的父节点(scrollview)获取枢轴。不知道为什么。 所以我决定计算滚动视图的轴心,它位于我的按钮所在的位置:
$scope
你可以看到我为pivotX划分了部分(我的按钮的x位置)投掷了孔的宽度,而对于pivotY,部分(我的按钮的y位置)是滚动视图的孔高度(4 *高度)并且还在按钮位置添加了45 * ssu,因为它的一半,当你不这样做时,枢轴位于左上角。 PS:ssu是一个自制的缩放器,因为我在java代码90 * ssu中设置了按钮的宽度和高度
希望ii帮助你:)