2012-06-22 90 views
0

我有幾個圖像在鰭狀肢動畫中,當下一個按鈕被按下時,下一個圖像應該從右側出來,而當前圖像應該從左側出去,同樣如果回來按下以前應該來自右側當前圖像應該熄滅。我想直接放在外面,在動畫中放在右邊,記住堆的大小,任何機構都有解決方案? 我用這個代碼查看Flipper Android

nbtn.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     if (current_shown_index < list.length - 1) { 
      current_shown_index++;   
      bkbtn.setVisibility(View.VISIBLE); 
      View view = inflater.inflate(R.layout.view_flipper_item, null); 
      ImageView iv = (ImageView) view.findViewById(R.id.iv_flipper_item);     
      iv.setImageResource(list[current_shown_index]); 
      Log.v("count", vFlipper.getChildCount() + "flipper length"); 
      if (vFlipper.getChildCount() == 3) {      
       vFlipper.removeViewAt(0); 
      } 
      vFlipper.addView(view);    
      vFlipper.setInAnimation(inFromRightAnimation());  
      vFlipper.setOutAnimation(outToLeftAnimation()); 
      vFlipper.showNext(); 
     } 
    } 
}); 
bkbtn.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View view) {     
     if (current_shown_index > 0) {     
      int diff = 2; 
      if (vFlipper.getChildCount() == 3){   
       vFlipper.removeViewAt(2);     
      } 
      View viewb = inflater.inflate(R.layout.view_flipper_item, null); 
      ImageView iv = (ImageView) viewb.findViewById(R.id.iv_flipper_item); 
      if(current_shown_index == 1){ 
       diff = 1; 
      }else{      
       iv.setImageResource(list[current_shown_index-diff ]); 
      } 
      vFlipper.addView(viewb, 0); 
      current_shown_index--; 
     }else{     
      bkbtn.setVisibility(View.GONE); 
     }    
     vFlipper.setInAnimation(inFromLeftAnimation());   
     vFlipper.setOutAnimation(outToRightAnimation()); 
     vFlipper.showPrevious(); 
    } 
}); 

回答

0

我給你一個起始點指針:

final Animation outToLeft = AnimationUtils.loadAnimation(this, android.R.anim.slide_out_right); 
final Animation inFromRight = AnimationUtils.loadAnimation(this, android.R.anim.slide_in_left); 

final Animation outToRight = AnimationUtils.loadAnimation(this, android.R.anim.slide_out_left); 
final Animation inFromLeft = AnimationUtils.loadAnimation(this, android.R.anim.slide_in_right); 

現在,在您ViewFlipper使用這些與setInAnimationsetOutAnimation

0

要在ViewFlipper中實現進出動畫,您可以使用setInAnimation()setOutAnimation()方法。

例如:

viewFlipper.setInAnimation(AnimationUtils.loadAnimation(
          mContext, android.R.anim.slide_in_right)); 
    viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(
          mContext, android.R.anim.slide_out_right)); 

    /* Where - mContext is Context object  
    */ 
+0

動畫工作正常,但主要問題是內存我必須刪除視圖,因爲堆大小增加幾個圖像後,所以我想保持最多三個視圖在鰭狀肢,休息我想噸o刪除,這在下一個按鈕上運行良好,但是當我點擊返回按鈕時,它會產生問題,它會改變圖像。 –

+1

@atiq_se好的,我明白了。在這種情況下,爲什麼不使用'ViewPager'呢?有了它,你永遠不會在記憶中保留2個以上的視圖:滑動的和滑入的視圖。當你需要時,你可以在飛行中創建這些視圖,你可以自動獲得滑入式左/右動畫,額外的好處是,您可以通過手指識別來瀏覽圖像。 –

0

ViewSwitcher可以處理這個問題對你來說,here在行動

視圖切換您還可以在這裏找到一個example源代碼連接到它