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

mol*_*rus 10 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);
Run Code Online (Sandbox Code Playgroud)

这是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"
    />
Run Code Online (Sandbox Code Playgroud)

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

mol*_*rus 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"
    />
Run Code Online (Sandbox Code Playgroud)


Bar*_*ski 21

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

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

  • 50%p - 父母百分比; 对应于旋转的类型Animation.RELATIVE_TO_PARENT.50%p意味着它将在父视图的中间旋转.

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

  • 谢谢,很好的答案-当视图已经翻译并且想要围绕新的中心缩放动画(例如,收缩增长动画)时,这非常有用-您不必计算已翻译视图的绝对中心并围绕此新中心进行动画处理。 (2认同)