2012-03-14 17 views
16

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

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

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

+1

あなたはスライダー上のアニメーションをしたいですか? –

+0

@Nixit Patelはい – Chrishan

+0

@NixitPatel:スライダーアニメーションを実装したいですか? –

答えて

0

あなたのレイアウトのスライダーのアニメーションを実装したい場合は、this demoを参照してください。

を更新し

はまたhttp://www.inter-fuser.com/2009/07/android-transistions-slide-in-and-slide.html

が、それはあなたを助けることを願っています参照してください。

私に知らせてください。

ありがとうございました。 お楽しみください。

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; 
    } 
} 

とアニメーションを開始するには、あなたのコードでこれを行う::)

25

私はあなただけで、最終的な高さに0高さからビューをアニメーション化する、カスタムアニメーションでこれを行うことができると思います。我々はJELLYBEAN以来、アンドロイドでレイアウト遷移を持っているので

Animation ani = new ShowAnim(headerView, 100/* target layout height */); 
ani.setDuration(2000/* animation time */); 
headerView.startAnimation(ani); 
+1

これは毎回ゼロの高さで始まることなくどのようにして行うのですか?目標レイアウトの高さ100で1回、次に目標レイアウト時間200でもう一度実行すると、0から100、次に100から200になります。 – Andrew

+0

100から100に移動したい場合は、 > 200、あなたのケースではheight = initialHeight/* 100となります。*/+(あなたの場合はheight =(int)(targetHeight * interpolatedTime); 'view.getLayoutParams() int)(targetHeight/* 200あなたの場合*/- initialHeight * interpolatedTime); ' – Kai

+1

initialHeightが0の場合、動作しないものは何も起こりません。 – Andrew

1

は、我々はアニメーションオブジェクトを使用するのではなく、それを使用することができます。

以下の記事を詳細にそれを説明しています。要するに https://proandroiddev.com/the-little-secret-of-android-animatelayoutchanges-e4caab2fddec

我々は、このコードが必要になります -

tView.getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING); 
tView.setLayoutParams(lp); 

ここで追加する

RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams 
          (RelativeLayout.LayoutParams.MATCH_PARENT, newHeight); 

もう一つは、レイアウトにこの行を追加することですPARAMS LPは、レイアウトになりますファイルを、遷移を行うレイアウトに追加します。

android:animateLayoutChanges="true" 
関連する問題