如何在android中从底部到顶部对角放大布局动画?

时间:2014-10-30 05:46:01

标签: android animation scaleanimation

我想在Scale Animation上使用RelativeLayout。我想将图像从左角缩放到右角,即从底部到顶部对角线(从左到右)。我使用了以下代码行,但我没有得到理想的结果。任何人都可以用简单的话来解释我对pivotx和pivoty做了什么?

ScaleAnimation scale = new ScaleAnimation(0, 1, 1, 0);

2 个答案:

答案 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:在动画结束时应用的垂直缩放系数

我们需要从小点开始动画,并希望将其缩放到其大小。因此fromXfromY被视为0f,toXtoY为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);