2011-08-24 58 views
1

我有一個FrameLayout可以識別滑動手勢(向上和向下)。使用動畫刷卡視圖

例如:如果一個向上掃掠被執行,我應該動畫的當前視圖(即MATCH_PARENT X MATCH_PARENT),以在相同的時間的新視圖來自底部上升。

我可以用動畫實現這個嗎?

回答

2

我解決了這個辦法:

private void swipeUp() { 
    current.currentPage++; 

    final View hidingView = currentView; 
    TranslateAnimation hide = new TranslateAnimation(0, 0, 0, -getHeight()); 
    hide.setAnimationListener(new AnimationListenerAdapter() { 
     @Override 
     public void onAnimationEnd(Animation animation) { 
      hidingView.setVisibility(View.GONE); 
     } 
    }); 
    hide.setDuration(1000); 
    hidingView.startAnimation(hide); 

    TranslateAnimation show = new TranslateAnimation(0, 0, getHeight(), 0); 
    show.setFillAfter(true); 
    show.setDuration(1000); 

    View nextView = getView(); 
    addView(nextView, createLP()); 

    nextView.startAnimation(show); 
    currentView = nextView; 
} 
+0

將視圖設置爲「通過」並不是使動畫正常工作的好方法,但是如果要運行多次,則需要確保實際處理先前的視圖。否則,由於View.GONE實際上不處理視圖,因此會冒性能和內存問題的風險。 – Codeman

+0

好的,我將使用removeView代替。 –

+0

首先做View.GONE,然後當動畫完成時,remoteView :) – Codeman

1

如果您想要實際切換視圖,則需要實施一個AnimationListener來處理動畫。如果你想「下面的手指」視圖之間滾動像一個更復雜的行爲,你可能將不得不使用一些更復雜的,但如果你只是說

if(I flicked upwards) 
    move view up 

然後AnimationListener是您的最佳選擇。只要確保您在代碼中將偵聽器設置爲Animation

希望這會有所幫助!

+0

呀,我用AnimationListener到setVisibility(View.GONE),但它不是我一直在尋找的答案。 –

+0

您想實際設置內容視圖() – Codeman