安卓自定义轮盘或老虎机实现

11

我需要实现一个像图片中展示的轮盘控件(即老虎机)。

enter image description here

但是每个选项之间的边缘需要平滑,使其看起来像地球一样圆。这是iOS应用程序从库中获得的屏幕截图。我想在Android上实现。我查看了kankan wheel(Android轮盘),但它不能满足我的需求。不过它的循环行为对我有帮助。我也查看了下面这个链接:

http://developer.sonymobile.com/2010/06/23/android-tutorial-making-your-own-3d-list-part-3/

我使用了canvas和matrix,并为pretranslate、post translate、scale等方法设置了一些值。但我对它的工作原理没有任何想法,对于倾斜等特定值将产生什么影响也不清楚。当我与UI设计师讨论时,他们告诉我要使用“skew”或“perspective”属性来实现此屏幕设计。但我不知道如何在Android中对图像进行倾斜或应用透视。我尝试在自定义ListView的on drawChild()方法中应用一些倾斜值(使用了此链接 http://developer.sonymobile.com/2010/06/23/android-tutorial-making-your-own-3d-list-part-3/ 的ListView实现)。但视图变得不可见。

我无法使用矩阵的缩放行为,因为它会在每个子视图之间插入空白。

我还需要知道如何实现以下行为。我的需求如下:

  1. 一旦用户尝试滚动,它将检查阈值,仅在阈值高于配置的阈值时才滚动。

  • 项目循环滚动,意味着在最后一个项目之后,轮子会显示第一个项目,以此类推。如果只有一个项目,则轮子应填充单个项目。

  • 一旦视图被滚动,所有触摸操作都将被禁用,直到轮子停止。

  • 轮子应该滚动指定的时间(从后端计算礼物并确定哪个项目应该位于视图中心)。

  • 当我们使用 setSelected() 或 setSelection() 方法设置一个项目为已选择状态时(如 kankan 轮子演示中的 Android 轮子),轮子应逐渐减速到指定位置,而不是立即停止到该位置。


  • 你好,你解决了你的问题吗?你能告诉我,你是如何实现的吗?我不想要一个三维列表,我只想要第五个点的实现。任何回复都将不胜感激。 - Payal
    没有,我还没有实现这个功能,因为客户已经改变了要求。谢天谢地!!!我找到的最接近的解决方案是由@breadbin提到的wheel库。对于第5点,您可以使用listview的smoothScrollToPosition(position)函数。 - droid kid
    谢谢!我正在实现那个库,但是我在里面没有看到 smoothScrollToPosition(position) 方法。我想我必须得自己创建一个方法 :( - Payal
    No. smoothScrollToPosition() 是listview的方法。我以为你没有使用那个库。 - droid kid
    是的,这就是问题所在。我的是一个老虎机游戏。如果您能提出建议,请查看此问题http://stackoverflow.com/questions/29749295/android-kankan-wheel-modification - Payal
    4个回答

    1

    enter image description here

    尝试这个方法,保持6个视图,其中5个如图所示,其中一个作为备用。当视图1超出范围时,备用视图随着下一个图像进入,视图1成为备用视图,同样地,您应该渲染循环多次。
    在向中心移动时,宽度增加,向上滚动时缩小。

    我理解你所说的问题...但是问题在于当我们尝试在ListView中缩放或旋转一行时,会在两个子元素之间出现空格。无论如何,感谢您的回复。 - droid kid
    从@詹姆斯的评论中,我认为3D模型集成将是正确的选择。 - droid kid
    @arunsoorya 那是你的选择,在Android中你可以像上面那样做,不管怎样祝你好运 :) - Viswanath Lekshmanan

    1
    我不知道你实现目标的进展如何,但你可能想跳过使用Android类,而是使用像Cocos 3D for Android这样的3D引擎。导入模型并使其在正确位置可点击等所有操作将为您抽象化,因此您不必花时间处理其他事情。

    是的...我尝试过使用Android动画来实现这个。现在我觉得还是像你说的那样尝试一些3D引擎更好。不知道它们对原生Android类提供多少支持。 - droid kid

    1

    0

    请注意,此项目已移至https://github.com/maarek/android-wheel。 - Someone Somewhere

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接