我想通过允许用户向左或向右滑动页面而不是仅使用下一个/上一个按钮来给我的应用提供一个很好的触摸(类似于家庭屏幕)。Android:下一个/上一个扔手指类似于主屏幕的手指
这样做的最好方法是什么?我想我必须重写Activity.on...
方法中的一个,并且我还必须将我的页面的主要View
放在ViewGroup
中,这使我可以左右移动页面。
我想通过允许用户向左或向右滑动页面而不是仅使用下一个/上一个按钮来给我的应用提供一个很好的触摸(类似于家庭屏幕)。Android:下一个/上一个扔手指类似于主屏幕的手指
这样做的最好方法是什么?我想我必须重写Activity.on...
方法中的一个,并且我还必须将我的页面的主要View
放在ViewGroup
中,这使我可以左右移动页面。
使用GestureDetector检测触摸事件是否滚动。
如果第一次调用onScroll的第一个事件是ACTION_DOWN,那么您应该看看它是否是主要水平滚动。如果是这样,那么你的滚动开始,你应该改变填充页面的视图的绝对位置。
对于非弃用绝对定位,看到这里Android: Alternative to AbsoluteLayout (I really do need absolute positioning)
我的回答你会想你是否返回true消耗触摸事件或不警告。
GestureDetector没有停止滚动的回调。在你调用GestureDetector.onTouchEvent之前,你必须检查是否有ACTION_UP,如果有一个动作并且你有一个未完成的滚动,那么你应该设置绝对位置到目标位置,并使用TranslateAnimation使它看起来不错从当前移动到目的地。
编辑:
GestureDetector根本不如果孩子的意见也想响应触摸事件很好地工作。我最终创建了FrameLayout的子类(最基本的布局之一,也是最接近非侵入式父视图的子类),并重写了dispatchTouchEvent。我只是把所有的事情都做了,并且自己做了检测。
ViewFlipper是你的朋友!
在这里你可以看到ViewFlipper的行动中一个不错的视频,也是一个很好的教程:
http://www.inter-fuser.com/2009/07/android-transistions-slide-in-and-slide.html
如果想两项活动之间翻转或许可以将此动画过渡:
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);
finish();
//transition using XML view animations
overridePendingTransition(R.anim.slideinfromright, R.anim.slideouttoleft);
最近,随着Compatibility Package r3的发布,解决方案变得更加简单。您可以在这里下载:http://developer.android.com/sdk/compatibility-library.html
它包括
和那些的片段版本,如果你是这样的倾向。
寻呼机代码与API版本4(1.6)兼容,而且我在大约2小时内实现了动态生成的ListView的动态生成的ViewPager。我是新手,所以这绝对是首选路径。
有一个示例应用程序的位置:http://geekyouup.blogspot.com/2011/07/viewpager-example-from-paug.html
着我们使用库视图在这里?使用适配器,整个页面可以在图库视图适配器getView()内充气,并且它将完全控制左右滚动。
谢谢。现在,我只需要找出如何实施“一举两得”。 – 2011-01-20 15:10:50
@George Bailey:我在Viewflipper上注册了一个touchlistener。每次接触事件时都会收到一个存储的时间和位置。在触摸事件中,我将时间和位置与触摸事件进行了比较。如果足够的时间过去了,并且很明显,手指已经分别向左移动了,我打电话向左或向右移动脚蹼。 – RoflcoptrException 2011-01-20 15:13:33