视图上的Android缩放animation

我想使用ScaleAnimation(编程不是在xml中)来改变高度来查看父高度的0到60%。 视图的宽度是不变的,是50px。 视图是空的,只有背景色被设置。

有人可以给我代码scaleAnim使用ScaleAnimation从代码。

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/layContainer > <View android:layout_width="50px" android:layout_height="fill_parent" android:id="@+id/viewContainer" android:background:"#00f00" /> </LinearLayout> ScaleAnimation scaleAnim = new ScaleAnimation(...); 

查看动画之前和之后

animation前后查看。谢谢

这是一个代码片段来做到这一点。

 public void scaleView(View v, float startScale, float endScale) { Animation anim = new ScaleAnimation( 1f, 1f, // Start and end values for the X axis scaling startScale, endScale, // Start and end values for the Y axis scaling Animation.RELATIVE_TO_SELF, 0f, // Pivot point of X scaling Animation.RELATIVE_TO_SELF, 1f); // Pivot point of Y scaling anim.setFillAfter(true); // Needed to keep the result of the animation anim.setDuration(1000); v.startAnimation(anim); } 

这里使用的ScaleAnimation构造函数需要8个参数,其中4个涉及处理我们不关心的X-scale (1f, 1f, ... Animation.RELATIVE_TO_SELF, 0f, ...)

其他4个参数是我们关心的Y坐标。

startScale, endScale – 在你的情况下,你会使用0f, 0.6f

Animation.RELATIVE_TO_SELF, 1f – 这指定视图的缩小收缩到哪里(在文档中称为枢轴)。 在这里,我们将float值设置为1f因为我们希望animation从底部开始增长。 如果我们希望它从顶端向下增长,我们将使用0f

最后,同样重要的是,调用anim.setFillAfter(true) 。 如果要在animation完成后animation的结果继续存在,则必须在animation制作器上运行此animation,然后才能执行animation。

所以在你的情况下,你可以做这样的事情:

 View v = findViewById(R.id.viewContainer); scaleView(v, 0f, .6f); 

尝试使用此代码来创build缩放animation而不使用xml

 ScaleAnimation animation = new ScaleAnimation(fromXscale, toXscale, fromYscale, toYscale, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); 

在XML中,这是我用来实现相同的结果。 可能是这个更直观。

scale_up.xml

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

scale_down.xml

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

看X轴上的animation是从1.0 -> 1.0 ,这意味着你没有任何放大的方向,并保持在全宽,而在Y轴上,你得到0.0 -> 1.0缩放,如在问题中的graphics。 希望这有助于某人。