我有一個FrameLayout可以識別滑動手勢(向上和向下)。使用動畫刷卡視圖
例如:如果一個向上掃掠被執行,我應該動畫的當前視圖(即MATCH_PARENT X MATCH_PARENT),以在相同的時間的新視圖來自底部上升。
我可以用動畫實現這個嗎?
我有一個FrameLayout可以識別滑動手勢(向上和向下)。使用動畫刷卡視圖
例如:如果一個向上掃掠被執行,我應該動畫的當前視圖(即MATCH_PARENT X MATCH_PARENT),以在相同的時間的新視圖來自底部上升。
我可以用動畫實現這個嗎?
我解決了這個辦法:
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;
}
如果您想要實際切換視圖,則需要實施一個AnimationListener來處理動畫。如果你想「下面的手指」視圖之間滾動像一個更復雜的行爲,你可能將不得不使用一些更復雜的,但如果你只是說
if(I flicked upwards)
move view up
然後AnimationListener是您的最佳選擇。只要確保您在代碼中將偵聽器設置爲Animation
。
希望這會有所幫助!
呀,我用AnimationListener到setVisibility(View.GONE),但它不是我一直在尋找的答案。 –
您想實際設置內容視圖() – Codeman
將視圖設置爲「通過」並不是使動畫正常工作的好方法,但是如果要運行多次,則需要確保實際處理先前的視圖。否則,由於View.GONE實際上不處理視圖,因此會冒性能和內存問題的風險。 – Codeman
好的,我將使用removeView代替。 –
首先做View.GONE,然後當動畫完成時,remoteView :) – Codeman