以编程方式调整布局的大小(作为动画) [英] Resizing layouts programmatically (as animation)
本文介绍了以编程方式调整布局的大小(作为动画)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想在活动"中调整一些布局的大小.
I want to resize some layouts in my Activity.
以下是主要XML的代码:
Here is the code of the main XML:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/top"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:background="#3ee3e3" >
</LinearLayout>
<LinearLayout
android:id="@+id/middle"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1">
</LinearLayout>
<LinearLayout
android:id="@+id/bottom"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:background="#fe51e6" >
</LinearLayout>
</LinearLayout>
如您所见,顶部和底部布局的高度为0,中间为 布局覆盖了所有地方.
As you can see, the top and bottom layouts height's is 0, and the middle layout covers all the place.
我想以编程方式减小中间布局的大小,同时增大顶部 和底部布局的大小,直到所有布局都具有相同的高度.
I want to programmatically decrease the middle layout size, while increase both the top and the bottom layout sizes, till all the layouts have the same height.
我希望它看起来像一个动画.
I want it to be look like an animation.
我应该怎么做?
谢谢
推荐答案
我出于类似的目的编写了ResizeAnimation.简单但昂贵.
I wrote a ResizeAnimation for a similar purpose. It's simple but costly.
/**
* an animation for resizing the view.
*/
public class ResizeAnimation extends Animation {
private View mView;
private float mToHeight;
private float mFromHeight;
private float mToWidth;
private float mFromWidth;
public ResizeAnimation(View v, float fromWidth, float fromHeight, float toWidth, float toHeight) {
mToHeight = toHeight;
mToWidth = toWidth;
mFromHeight = fromHeight;
mFromWidth = fromWidth;
mView = v;
setDuration(300);
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
float height =
(mToHeight - mFromHeight) * interpolatedTime + mFromHeight;
float width = (mToWidth - mFromWidth) * interpolatedTime + mFromWidth;
LayoutParams p = mView.getLayoutParams();
p.height = (int) height;
p.width = (int) width;
mView.requestLayout();
}
}
这篇关于以编程方式调整布局的大小(作为动画)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文