Android:下一个/上一个投掷,坚持手指类似于主屏幕

时间:2011-01-20 14:57:42

标签: android drag slide

我想通过允许用户向左或向右滑动页面而不是仅仅使用下一个/上一个按钮(类似于主屏幕)来为我的应用程序提供一个很好的触摸。

最好的方法是什么?我假设我必须覆盖其中一个Activity.on...方法,并且我还必须将我的网页的主View放在允许我左右移动页面的ViewGroup中。 / p>

5 个答案:

答案 0 :(得分:3)

ViewFlipper是你的朋友!

在这里你可以看到一个很好的ViewFlipper视频和一个非常好的教程:

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

答案 1 :(得分:3)

随着兼容性软件包r3的发布,解决方案现在变得更加容易了。您可以在此处下载:http://developer.android.com/sdk/compatibility-library.html

它包括

  • ViewPager:一个ViewGroup,用于管理子视图的布局,用户可以在其间滑动。
  • PagerAdapter:一个适配器,使用代表每个页面的视图填充ViewPager。

和碎片版本,如果你这样倾向。

寻呼机代码与API版本4(1.6)兼容,我只是在大约2小时内实现了一个动态生成的viewPager。我是新手,所以这绝对是首选路径。

此处有一个示例应用:http://geekyouup.blogspot.com/2011/07/viewpager-example-from-paug.html

答案 2 :(得分: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 :(得分: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。我刚刚接受了所有事件并自己进行了检测。

答案 4 :(得分:0)

我们不能在这里使用Gallery视图?使用适配器,整个页面可以在库视图适配器getView()内膨胀,它将完美地管理左侧滚动。