2012-12-25 13 views
6

LinearLayout, I am dynamically adding TextView, ImageView to that LinearLayoutがあります。これらのTextViewsとImageViewsにOnClickListenerを追加しました。レイアウトのスライドインとスライドアウトアニメーション

私はそれに10個の項目があり、forループを使用しています。私は次のボタンと前のボタンがあるので、それぞれの値と表示を得ています。 arraylistから。

Link 1

Link 2

をしても、私はこの上で助けてください取り組んこの

slideIn = new TranslateAnimation(
       TranslateAnimation.RELATIVE_TO_PARENT, 1.0f, 
       TranslateAnimation.RELATIVE_TO_PARENT, 0.0f, 
       TranslateAnimation.RELATIVE_TO_PARENT, 0.0f, 
       TranslateAnimation.RELATIVE_TO_PARENT, 0.0f); 

     slideIn.setDuration(500); 
     slideOut = new TranslateAnimation(
       TranslateAnimation.RELATIVE_TO_PARENT, 0.0f, 
       TranslateAnimation.RELATIVE_TO_PARENT, -1.0f, 
       TranslateAnimation.RELATIVE_TO_PARENT, 0.0f, 
       TranslateAnimation.RELATIVE_TO_PARENT, 0.0f); 

     slideOut.setDuration(500); 

でもないを試してみました:Now I need slide In and slide Out animation to apply to this Linear Layout.

私はこれを見てきました。

EDIT:

問題:私は、リニアレイアウトにこれを適用するが、何が起こるかは、私は次のボタンをクリックすると、現在の質問が左にスライドし、空白の画面が、それはでスライドさせて、次の表示されることですしています現在の質問が滑り落ちるとすぐに、次の質問が続くはずです。

+0

このアニメーションをあなたのビューにどのように適用しましたか? –

+0

はいbuddy私は線形レイアウトにこれを適用しましたが、次の現在の質問をクリックすると左にスライドして空白の画面が表示され、次の質問が表示されますが、現在の質問スライドそれは次の質問 – Goofy

+0

に従うべきであるviewflipperを使用し、アニメーションとアウトアニメーションを使用することはどうですか? –

答えて

3

の場合あなたのレイアウトが同じコンテンツを持っている場合、ビューフリッパーの中に2つのレイアウトを作成します。 最初のビューにデータを読み込んで表示します。 ユーザーが次または前をクリックすると、データとともに次のビューを読み込み、2番目のビューが表示されていることを示すフラグを保持し、アニメーションとともに表示します。

今度は、フラグ値に基づいてデータを適切なビューにロードし、shownext()を呼び出します。

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mainFlipper = (ViewFlipper) findViewById(R.id.flipper); 
    firstLayout = (LinearLayout) findViewById(R.id.layout1); 
    secondLayout = (LinearLayout) findViewById(R.id.layout2); 


    findViewById(R.id.btnPrevious).setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      showPrevious(); 
     } 
    }); 

    findViewById(R.id.btnNext).setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      showNext(); 
     } 
    }); 

} 

private void showNext() { 
    mainFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_in_left)); 
    mainFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_out_right)); 
    flip(); 
} 

private void showPrevious() { 
    mainFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_in_right)); 
    mainFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_out_left)); 
    flip(); 
} 

private void flip() { 
    if(isFirstVisible) { 
     isFirstVisible = false; 
     secondLayout.removeAllViews(); 
     secondLayout.addView(getTextView("Second")); 
    } else { 
     isFirstVisible = true; 
     firstLayout.removeAllViews(); 
     firstLayout.addView(getTextView("First")); 
    } 
    mainFlipper.showNext(); 
} 

private TextView getTextView(String txt) { 
    TextView txtView = new TextView(this); 
    txtView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 
    txtView.setText(txt); 
    return txtView; 
} 
+0

thanksそれを試み、あなたに戻ってきます。 – Goofy

+0

ねえ、あなたが言ったようにしましたが、今は私が動的に追加しているビューを削除することができません。removeallviews()を使用すると、アニメーションは機能しません。 – Goofy

+1

私はコードで投稿を編集しました。それを試してください –

4

利用のres /アニメーションで、このXML/

leftright.xml
この右のアニメーションに左用です:

<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shareInterpolator="false"> 
    <translate android:fromXDelta="-100%" android:toXDelta="0%" 
     android:fromYDelta="0%" android:toYDelta="0%" 
    android:duration="700"/> 
    </set> 

使用このJavaコードで

Handler handler = new Handler(); 
Runnable runnable = new Runnable(){ 
{ 
    public void run() 
{ 
    item[i].setInAnimation(AnimationUtils.loadAnimation(this,R.anim.leftright.xml)); 
    i=i+1; 
    handler.postDelayed(this,5000); 
} 
};handler.postDelayed(runnable,5000); 
+0

アニメーションをレイアウトにどのように適用しますか?最初にarraylistから値を取得し、次に – Goofy

+0

を次のクリックで表示する必要があるため、アニメーションを単一項目に適用することはできません。 'setContentView(R.layout。View2) 'あなたのクラス' Intent iSecondLayout = new Intent(Activity.this、Activity.class);の中でこれを行います。 Activity.this.startActivity(iSecondLayout); Activity.this.overridePendingTransition(R.anim.lefttoright、R.anim.righttoleft); ' – mjosh

+0

私は1つのアクティビティしか持っていません – Goofy

関連する問題