2012-12-25 93 views
6

我有一個LinearLayout, I am dynamically adding TextView, ImageView to that LinearLayout,現在我已經將OnClickListener添加到這些TextViews和ImageViews。滑入和滑出動畫的佈局

我有一個arraylist其中有10個項目,使用for循環我得到每個值和顯示,因爲它的測驗應用程序我有下一個和上一個按鈕,當我點擊,我逐一顯示項目來自arraylist。 Now I need slide In and slide Out animation to apply to this Linear Layout.

我已經看到了這一點:

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

但不工作,請在這方面的幫助。

編輯:

問題:我已經應用這個以線性佈局,但發生的事情是,當我上單擊下一步按鈕,當前的問題將左右滑動和空白屏幕,然後它會滑動並顯示下問題,但我希望一旦當前問題出現,應該在下一個問題之後。

+0

如何將此動畫應用於視圖? –

+0

是的好友我已經將此應用於線性佈局,但會發生什麼情況是,當我點擊下一個當前問題時,將向左滑動並出現空白屏幕,然後它會滑入並顯示下一個問題,但是我希望當前問題儘快滑過那麼應該跟着下一個問題 – Goofy

+0

使用viewflipper和使用動畫和動畫怎麼樣? –

回答

3

如果您的佈局具有相同的內容,在視圖腳蹼內創建兩個佈局。 用數據加載第一個視圖並顯示它。 當用戶點擊下一個或上一個時,使用數據加載下一個視圖並保留一個標誌,以顯示第二個視圖現在可見,並用動畫顯示。

現在隨後根據標誌值加載相應的視圖並調用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

謝謝會嘗試並回復你。 – Goofy

+0

嘿,我試圖以你告訴的方式,但現在我無法刪除我動態添加的視圖,如果我使用removeallviews(),那麼動畫將無法工作。 – Goofy

+1

我已編輯我的帖子與代碼。請嘗試一下 –

4

使用此XML在res /動畫/

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

我將如何將動畫應用到佈局?我無法將動畫應用於單個項目,因爲它必須首先從陣列列表中獲取值,然後在下一次點擊'setContentView(R.layout。)時顯示 – Goofy

+0

。View2)'然後在你的類中做這個'Intent iSecondLayout = new Intent(Activity.this,Activity.class); Activity.this.startActivity(iSecondLayout); Activity.this.overridePendingTransition(R.anim.lefttoright,R.anim.righttoleft);' – mjosh

+0

我只有一個活動 – Goofy