2011-01-20 78 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()内充气,并且它将完全控制左右滚动。

相关问题