2011-01-20 32 views
3

我想通過允許用戶向左或向右滑動頁面而不是僅使用下一個/上一個按鈕來給我的應用提供一個很好的觸摸(類似於家庭屏幕)。Android:下一個/上一個扔手指類似於主屏幕的手指

這樣做的最好方法是什麼?我想我必須重寫Activity.on...方法中的一個,並且我還必須將我的頁面的主要View放在ViewGroup中,這使我可以左右移動頁面。

回答

0

使用GestureDetector檢測觸摸事件是否滾動。

如果第一次調用onScroll的第一個事件是ACTION_DOWN,那麼您應該看看它是否是主要水平滾動。如果是這樣,那麼你的滾動開始,你應該改變填充頁面的視圖的絕對位置。

對於非棄用絕對定位,看到這裏Android: Alternative to AbsoluteLayout (I really do need absolute positioning)

我的回答你會想你是否返回true消耗觸摸事件或不警告。

GestureDetector沒有停止滾動的回調。在你調用GestureDetector.onTouchEvent之前,你必須檢查是否有ACTION_UP,如果有一個動作並且你有一個未完成的滾動,那麼你應該設置絕對位置到目標位置,並使用TranslateAnimation使它看起來不錯從當前移動到目的地。

編輯:

GestureDetector根本不如果孩子的意見也想響應觸摸事件很好地工作。我最終創建了FrameLayout的子類(最基本的佈局之一,也是最接近非侵入式父視圖的子類),並重寫了dispatchTouchEvent。我只是把所有的事情都做了,並且自己做了檢測。

3

ViewFlipper是你的朋友!

在這裏你可以看到ViewFlipper的行動中一個不錯的視頻,也是一個很好的教程:

http://www.inter-fuser.com/2009/07/android-transistions-slide-in-and-slide.html

+0

謝謝。現在,我只需要找出如何實施「一舉兩得」。 – 2011-01-20 15:10:50

+1

@George Bailey:我在Viewflipper上註冊了一個touchlistener。每次接觸事件時都會收到一個存儲的時間和位置。在觸摸事件中,我將時間和位置與觸摸事件進行了比較。如果足夠的時間過去了,並且很明顯,手指已經分別向左移動了,我打電話向左或向右移動腳蹼。 – RoflcoptrException 2011-01-20 15:13:33

0

如果想兩項活動之間翻轉或許可以將此動畫過渡:

Intent intent = new Intent(FirstActivity.this, SecondActivity.class); 
startActivity(intent); 
finish(); 
//transition using XML view animations 
overridePendingTransition(R.anim.slideinfromright, R.anim.slideouttoleft); 
3

最近,隨着Compatibility Package r3的發佈,解決方案變得更加簡單。您可以在這裏下載:http://developer.android.com/sdk/compatibility-library.html

它包括

  • ViewPager:管理佈局的子視圖,用戶可以與輕掃的ViewGroup。
  • PagerAdapter:使用表示每個頁面的視圖填充ViewPager的適配器。

和那些的片段版本,如果你是這樣的傾向。

尋呼機代碼與API版本4(1.6)兼容,而且我在大約2小時內實現了動態生成的ListView的動態生成的ViewPager。我是新手,所以這絕對是首選路徑。

有一個示例應用程序的位置:http://geekyouup.blogspot.com/2011/07/viewpager-example-from-paug.html

0

着我們使用庫視圖在這裏?使用適配器,整個頁面可以在圖庫視圖適配器getView()內充氣,並且它將完全控制左右滾動。

相關問題