视图上的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。 希望这有助于某人。