16

私のアプリには、レイアウトの高さが 0 の LinearLayout があります。ボタンをクリックすると、このレイアウトの高さは LayoutParams.WRAP_CONTENT になります。これは onclicklistner で使用するコードです。

LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
slider.setLayoutParams(lp);

これをアニメ化したい。アニメーションをスライダーに設定するにはどうすればよいですか。

4

5 に答える 5

25

高さ 0 から最終的な高さまでビューをアニメーション化したいだけだと思いますが、カスタム アニメーションでこれを行うことができます。

public class ShowAnim extends Animation {
    int targetHeight;
    View view;

    public ShowAnim(View view, int targetHeight) {
        this.view = view;
        this.targetHeight = targetHeight;
    }

    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {
        view.getLayoutParams().height = (int) (targetHeight * interpolatedTime);
        view.requestLayout();
    }

    @Override
    public void initialize(int width, int height, int parentWidth,
            int parentHeight) {
        super.initialize(width, height, parentWidth, parentHeight);
    }

    @Override
    public boolean willChangeBounds() {
        return true;
    }
}

コードでこれを実行して、アニメーションを開始します。

Animation ani = new ShowAnim(headerView, 100/* target layout height */);
ani.setDuration(2000/* animation time */);
headerView.startAnimation(ani);
于 2012-03-14T15:22:49.183 に答える
-1

レイアウトにスライダーアニメーションを実装する場合は、このデモを参照してください。

更新しました

http://www.inter-fuser.com/2009/07/android-transistions-slide-in-and-slide.htmlも参照してください

それがあなたを助けることを願っています。

そうでない場合は、私に知らせてください。

ありがとう。楽しみ。:)

于 2012-03-14T05:02:40.330 に答える