【问题标题】:How to make an Android view that flips between views on swipe/fling如何制作一个在滑动/翻动视图之间翻转的 Android 视图
【发布时间】:2011-02-21 21:58:31
【问题描述】:

我想在我的 Android 应用中创建一个视图,该视图可以在滑动/滑动时在多个视图之间翻转。我希望它的行为或多或少像 Android Launcher 在视图之间翻转时的行为。特别是,

  1. 它应该会在滑动时翻转视图。
  2. 通常,滑动会在一个视图和下一个视图之间翻转。它不应跨越所有视图。
  3. 如果您缓慢滑动,您应该会在滑动时看到视图拖动,例如。 Launcher 的工作方式。

我尝试按照 Romain Guy 的 blog post here 使用带有 GestureOverlayView 的 ViewFlipper,但在用户滑动时没有任何指示。这使得可发现性变得困难,这大概就是 Launcher 这样做的原因。

我尝试使用 Gallery 对象,但是当我从左向右滑动时,会有一定的动力让用户浏览所有视图,而不是仅仅将他们带到下一个视图。

有什么好方法可以完成我想做的事情吗?

【问题讨论】:

  • @google 添加到 SDK 中似乎是一件很棒的事情!
  • 您可以在developer site here 上找到一些最近更新的关于滑动视图的官方培训。它解释了在选项卡或任何视图之间滑动。

标签: android gesture


【解决方案1】:

我知道这是一个老问题,但 ViewPager 是为了这个完全相同的目的而创建的。 ViewPager 是 android 兼容包的一部分,更多可以在http://android-developers.blogspot.com/2011/08/horizontal-view-swiping-with-viewpager.html 找到

【讨论】:

  • ViewPager 是 ViewFlipper 的替代品吗?
【解决方案2】:

看看HorizontalPager。它实际上是基于RealViewSwitcher,它又是基于Android 主屏幕的代码,并且支持带有拖动反馈的snap-to 分页,以及嵌套的垂直滚动子视图。对快速滑动的手势支持并不是应有的全部,但这可能会让你成为其中的一部分(我欢迎回馈贡献)。

编辑:截至 2012 年,您最好使用 Google 的 ViewPager - 它在 compat 库中。

【讨论】:

  • 谢谢 Yoni,我欠你一杯啤酒
  • 最重要的是它很简单,只有一个源文件。它是 ViewGroup 的子类,因此您只需将页面添加为 XML 中的子页面。设置 mTouchSlop = 0 以获得更好的滑动识别。
  • @MelindaGreen 这些天我会切换到 ViewPager。我不再维护 Horizo​​ntalPager 了。虽然 ViewPager 要复杂得多,但它应该涵盖所有相同的用途,然后是一些;如果您想做一些 ViewPager 不支持的真正自定义的操作,并且您希望从一个更简单的基类开始,我只会使用 Horizo​​ntalPager。
  • @Yoni,增加的复杂性对我来说很重要,所以我更愿意使用有问题的简单版本,而不是接受“正确”方式的维护成本。我已经对 Horizo​​ntalPager 进行了很多更改,并且很可能会与我编写或采用的其他此类实用程序一起重新发布它。提示:从 snapToScreen() 而不是 computeScroll() 调用用户的回调以获得更快速的 UI 反馈。
【解决方案3】:

查看此项目中的 SwipeView https://github.com/fry15/uk.co.jasonfry.android.tools 它完全符合您的要求,而且实现起来超级简单。

【讨论】:

    【解决方案4】:

    @CommonsGuy 扩展了 ViewFlipper 来做到这一点。 https://github.com/commonsguy/cwac-viewswiper 我还没有使用过这个,所以我不确定它是否像启动器一样用你的手指移动,如果不是你将不得不在 me.ACTION_MOVE 中为你创建一个 OnTochListener 来为你做这件事。ACTION_MOVE 你将更新视图以改变它的位置。如果您没有得到其他答案,我会在回家后发布一些示例代码。

    【讨论】:

    • 谢谢蒂姆,但看起来这是 ViewFlipper 与 GestureOverlay 的相当简单的组合,它不会在你拖动时给你我所说的视觉反馈(就像启动器一样)。我还没有尝试过 cwac-viewswiper,所以我可能是错的,但是查看代码我不相信它可以实现我所说的。如果我错了,请告诉我,再次感谢您的建议!
    • 我在回答后注意到了这一点。对不起。
    • @emmby:是的,ViewSwiper 不能满足您的需求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多