Android:翻译动画和相对布局

时间:2012-07-17 02:56:17

标签: android android-layout android-animation

我希望通过将所有内容移动到下面的位置来显示一个视图,然后使其可见(使其下方的项目滑动为其腾出空间)。我目前在TranslateAnimation的视图上使用RelativeLayout。我的第一个想法是测量我将要显示的视图,并翻译第一个视图。我的希望是,如果我为一个视图制作动画,那么它也会移动布局中依赖于它的所有其他内容。尝试后,只有动画的视图移动。我知道我可以将所有内容放在布局中,并翻译布局,但为了布局效率并使流程尽可能通用,

如何让所有View的RealtiveLayout家属随之移动,或以其他方式获得描述的效果?

2 个答案:

答案 0 :(得分:1)

将动画应用于整个RelativeLayout或封装在顶部RelativeLayout内的分组RelativeLayout中的子组。

答案 1 :(得分:0)

写一个动画类

public class Animate extends Animation implements AnimationListener {
    public int height,width;

    @Override
    public void initialize(int width, int height, int parentWidth,
            int parentHeight) {
        // TODO Auto-generated method stub
        super.initialize(width, height, parentWidth, parentHeight);
        this.width = width;
        this.height = height;
        setDuration(500);
        setFillAfter(true);
        setInterpolator(new LinearInterpolator());
    }

    Camera camera = new Camera();

    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {
        // TODO Auto-generated method stub
        super.applyTransformation(interpolatedTime, t);

        Matrix matrix = t.getMatrix();
        camera.save();

        camera.getMatrix(matrix);
        matrix.setTranslate(0, (-height * interpolatedTime));

        matrix.preTranslate(0, -height);
        camera.restore();

    }

使用它来制作布局动画

View v= new View(); 
// use whatever view you want and set it up
v.startAnimation(new Animate());