用于在ScaleAnimation中指定pivotXType和pivotYType的XML属性

时间:2011-01-11 17:21:09

标签: android android-layout

这可能听起来很傻,但我无法在任何地方找到如何指定ScaleTAnimation的pivotXType和pivotYType。

我知道如何以编程方式执行此操作,但我需要通过XML指定它(我需要它用于活动之间的转换,使用overridePendingTransition方法)

这是有效的代码:

 Animation animation=new ScaleAnimation(1,0,1,0,ScaleAnimation.RELATIVE_TO_SELF,(float)0.5,ScaleAnimation.RELATIVE_TO_SELF,(float)0.5);  
  animation.setDuration(1000);

这是XML,没有我正在寻找的XML属性

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXScale="1"
    android:toXScale="0"
    android:fromYScale="1"
    android:toYScale="0"
    android:pivotX="0.5"        
    android:pivotY="0.5"
    android:duration="2000"
    />

我在http://developers.androidcn.com/reference/android/view/animation/ScaleAnimation.html检查了文档,但没有找到任何答案。 感谢。

2 个答案:

答案 0 :(得分:22)

希望没有人甚至不屑于阅读我的问题。 编写xml时我犯了一个错误,这里是我想要的效果的正确代码(将新活动从100%大小缩放到0%大小,就在屏幕中间)。 pivotX和pivotY的正确值是50%而不是0.5。

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXScale="1"
    android:toXScale="0"
    android:fromYScale="1"
    android:toYScale="0"
    android:pivotX="50%"        
    android:pivotY="50%"
    android:duration="600"
    />

答案 1 :(得分:18)

我知道答案已经发布,但我想我会写几句解释。 xml中的数据透视表可以设置为三种类型的值(例如使用值50):

  • 50% - 百分比;对应于旋转Animation.RELATIVE_TO_SELF的类型。 50%基本上意味着它将在视图中间转动。

  • 50%p - 父母百分比;对应于旋转Animation.RELATIVE_TO_PARENT的类型。 50%p表示它将在父视图的中间进行旋转。

  • 50 - 绝对;对应于旋转Animation.ABSOLUTE的类型。 50表示从顶部/左侧以50像素旋转(取决于枢轴类型 - y / x)