2

ビューを表示する場所の下にすべてを移動してビューを表示し、それを表示します(その下のアイテムがスライドしてスペースを空けるという効果を与えます)。私は現在TranslateAnimation、のビューでを使用していますRelativeLayout。私の最初の考えは、表示しようとしているビューを測定し、最初に影響を受けたビューを変換することでした。私の望みは、1つのビューをアニメーション化すると、レイアウト内でそれに依存している他のすべてのものも移動することでした。ただし、試した後、アニメーションのあるビューのみが移動します。以下のすべてをレイアウトに配置してレイアウトを変換できることはわかっていますが、レイアウトの効率とプロセスを可能な限り一般的にするために、

ビューのすべてのRealtiveLayout依存関係を一緒に移動させる、またはその他の方法で説明されている効果を得るにはどうすればよいですか?

4

2 に答える 2

1

アニメーションをRelativeLayout全体、または最上位のRelativeLayout内のグループ化RelativeLayoutにカプセル化されているサブグループに適用します。

于 2012-07-17T06:59:14.623 に答える
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());
于 2012-07-17T07:30:30.747 に答える