我想在Scale Animation
上使用RelativeLayout
。我想将图像从左角缩放到右角,即从底部到顶部对角线(从左到右)。我使用了以下代码行,但我没有得到理想的结果。任何人都可以用简单的话来解释我对pivotx和pivoty做了什么?
ScaleAnimation scale = new ScaleAnimation(0, 1, 1, 0);
答案 0 :(得分:6)
我正在使用以下内容从左下角到右上角为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
和fromY
被视为0f,toX
和toY
为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和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是它的下角。所以底部不会随着缩放而向上移动。
希望这有帮助。
答案 1 :(得分:-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);