android - 实现轮状界面导航工具

标签 android android-layout user-interface

我有兴趣在我的 Android 应用程序中实现基于轮形设备(或饼图形或圆形)的用户界面导航控制机制。

我希望在任何时候都只能看到一半的轮子。也就是说,只有轮子的上半部分应该可见,因为下半部分应该在屏幕边框下方。然后用户可以转动“半轮”以显示隐藏在屏幕边框中的选项。可见的上半部分应该像饼图一样分成三个部分,这样用户可以按其中任何一个来调用一些操作。下图应该解释一下(这是一个有七个(A-G)选项的例子)。

http://imgur.com/lNu1F

旋转本身应该不难,但我很难理解如何定位轮子,使其一半在实际屏幕之外。我认为加载整个轮子(但隐藏其中的一半)是最好的,因为那是我拥有的图形,并且当用户滑动以显示其他一些选项时,它也将允许流畅的动画。如何让 Android 以这种方式显示轮子?

还有。任何关于如何实现“沿轮子形状滑动”的评论都将不胜感激。

谢谢。

最佳答案

所以对于轮子 - 您很难知道如何定位轮子,因为您正在使用 XML 来对齐对象,并且想使用不存在的“将对象中心对齐到底部”之类的东西。 以下是一种可能行之有效的方法:屏蔽车轮 View 。

Is it possible to mask a View in android?

至于滑动滚轮,我会注册滚轮以获取触摸事件,并仅使用移动事件的水平组件来应用于滚轮的旋转。这种设置在使用旋钮的音频软件中很常见。

但是,如果你想让它以更真实的方式粘在用户的手指上,你需要执行以下操作:

  1. 当用户第一次触摸滚轮时,计算从滚轮中心到手指的角度。

  2. 每次手指移动时,检查从轮子中心到手指的角度 - 并将轮子旋转自上次触摸事件以来角度的变化量。

获取两点间夹角的公式是这样的:

Float angleInRadians = Math.atan2(point1.y-point2.y, point1.x-point2.x);

关于android - 实现轮状界面导航工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12694343/

相关文章:

javascript - 将 Python 后端与桌面应用程序的 HTML/CSS/JS 用户界面集成?

c# - Windows 中的自动完成文本框和 "Hide Pointer While Typing"

android - 以编程方式更改 TextInputLayout 提示颜色

android - 如何在屏幕中心显示图像?

java - Android - 如何从 Fragment 访问父 Activity 中的 getter 方法

安卓java.lang.NullPointerException : println needs a message

android - 仅带有图标的滑动 TabLayout

android - 我可以使用 Apache Cordova(本地构建)签署 Android 应用吗

java - Android - 如何在ImageView的右上角添加通知计数器

android - 我如何使我的 TextView 字体大小根据父 View 大小动态更改