我正在尝试Scale Animation
在RelativeLayout
. 我想将图像从左角缩放到右上角,即从下到上对角线(从左到右)。我使用了以下代码行,但没有得到预期的结果。谁能用简单的话解释一下 pivotx 和 pivoty 是做什么的?
ScaleAnimation scale = new ScaleAnimation(0, 1, 1, 0);
我正在尝试Scale Animation
在RelativeLayout
. 我想将图像从左角缩放到右上角,即从下到上对角线(从左到右)。我使用了以下代码行,但没有得到预期的结果。谁能用简单的话解释一下 pivotx 和 pivoty 是做什么的?
ScaleAnimation scale = new ScaleAnimation(0, 1, 1, 0);
我正在使用以下动画ImageView
从左下到右上。即从下到上对角线。
img = (ImageView) findViewById(R.id.img);
ScaleAnimation scaleAnim = new ScaleAnimation(
0f, 1f,
0f, 1f,
Animation.ABSOLUTE, 0,
Animation.RELATIVE_TO_SELF , 1);
scaleAnim.setDuration(10000);
scaleAnim.setRepeatCount(0);
scaleAnim.setInterpolator(new AccelerateDecelerateInterpolator());
scaleAnim.setFillAfter(true);
scaleAnim.setFillBefore(true);
scaleAnim.setFillEnabled(true);
img.startAnimation(scaleAnim);
您需要仔细给出枢轴及其值。
在这种情况下,我将简要说明它是如何与文档解释一起工作的:
fromX:在动画开始时应用的水平缩放因子
toX:在动画结束时应用的水平缩放因子
fromY:在动画开始时应用的垂直缩放因子
toY:在动画结束时应用的垂直缩放因子
我们需要从小点开始动画,并希望将其缩放到它的大小。所以fromX
andfromY
被认为是 0f,and toX
andtoY
是 1f。
pivotXType:指定应该如何解释 pivotXValue。Animation.ABSOLUTE、Animation.RELATIVE_TO_SELF 或 Animation.RELATIVE_TO_PARENT 之一。
pivotXValue:对象被缩放的点的 X 坐标,指定为绝对数,其中 0 是左边缘。(当对象改变大小时,该点保持固定。)如果 pivotXType 为 ABSOLUTE,则该值可以是绝对数,否则可以是百分比(其中 1.0 是 100%)。
我们希望 的左下边缘ImageView
在整个动画中都存在。所以我们使用 pivotXType - ABSOLUTE
。0 将是整个动画中应该存在的点。
pivotYType:指定应该如何解释 pivotYValue。Animation.ABSOLUTE、Animation.RELATIVE_TO_SELF 或 Animation.RELATIVE_TO_PARENT 之一。
pivotYValue:对象被缩放的点的 Y 坐标,指定为绝对数,其中 0 是顶部边缘。(该点在对象改变大小时保持固定。)如果 pivotYType 为 ABSOLUTE,则该值可以是绝对数,否则可以是百分比(其中 1.0 是 100%)。
ImageView Y 轴需要相对于其当前位置进行动画处理。所以 pivotYType 是RELATIVE_TO_SELF
1 是它的底角。所以底部不会随着缩放而向上移动。
希望这可以帮助。
试试这个,把它放在你的动画文件夹中,并将它设置为你的布局。
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<scale android:fromXScale="0.0" android:fromYScale="1.0"
android:toXScale="1.0" android:toYScale="0.0"
android:duration="700" android:fillBefore="false" />
</set>
把它放在java代码中:
Animation logoMoveAnimation = AnimationUtils.loadAnimation(this, R.anim.logoanimation);
layout.startAnimation(logoMoveAnimation);