我想按顺序缩放linearlayout的每个视图。我正在使用以下动画xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="600"
android:shareInterpolator="false" >
<scale
android:fromXScale="1"
android:fromYScale="1"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.2"
android:toYScale="1.2" />
<scale
android:fromXScale="1.2"
android:fromYScale="1.2"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1"
android:toYScale="1" />
</set>
以这种方式应用
AnimationSet animationSet = (AnimationSet) AnimationUtils.loadAnimation(getContext(), R.anim.scale)
LayoutAnimationController layoutAnimationController = new LayoutAnimationController(animationSet, 1f);
segmentLinearLayout.setLayoutAnimation(layoutAnimationController);
segmentLinearLayout.startLayoutAnimation();
问题在于所有子视图都按比例放大,而不是1比1缩小而没有动画。我该如何解决这个问题?
答案 0 :(得分:0)
这是因为两个尺度都在一起开始和结束
您可以使用android:startOffset="600"
在600毫秒后启动。
例如:
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<scale
android:fromXScale="1"
android:fromYScale="1"
android:pivotX="50%"
android:pivotY="50%"
android:duration="600"
android:toXScale="1.2"
android:toYScale="1.2" />
<scale
android:fromXScale="1"
android:fromYScale="1"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="600"
android:duration="600"
android:toXScale="0.83"
android:toYScale="0.83" />
第一个刻度将需要600毫秒,第二个刻度将在600毫秒后开始,然后再单独另外600毫秒
希望这有帮助!!
修改强>
2次修改:
fromScale
和toScale
分别更改为1
和0.83
,因此它返回到原始比例尺寸,因为在视图更改为其后较新的规模,新的1或100%需要回到其新规模的83%(1 / 0.83 = 1.2)LayoutAnimationController
的延迟也需要改变。在我尝试的示例代码中,我使用new LayoutAnimationController(animationSet, 2.0f)
延迟了200%(600ms * 2 = 1200ms重新缩放)