2

自 API Level 19 KitKat 以来,我想TimerPicker在闹钟中创建一个类似于 Android 的“角度选择器”。

我只想选择 0 到 360 度之间的角度。有人知道如何创建这样的东西吗?

时钟应用程序中的 Android TimePicker

4

1 回答 1

0

创建自己的组件:

public class AnglePicker extends View { ... }

覆盖onDraw(Canvas canvas)方法。您应该画一个圆圈,一些文本(例如 0º、90º、º180 和 270º)...
您只需要几次调用canvas.drawCircle()and canvas.drawText()。最“困难”的部分可能是计算文本位置。但这不是一个大问题,只是一点点sincos

然后也覆盖onTouchEvent(MotionEvent event),这样您就可以根据需要监听触摸事件并重新绘制组件(在中心和所选数字之间画一条线,用附加的drawCircle...突出显示最接近的数字)。
基本上当用户触摸您的视图时,计算 (x,y) 位置:

Point pt = new Point( (int)event.getX(), (int)event.getY() );

并获得与 的角度double theta = Math.atan2(pt.x-center.x, center.y-pt.y);。将其转换为度数或您需要的任何值,原因theta以弧度表示。

最后,添加一个public double getAngle()以便其他组件可以读取选定的角度。
看起来很复杂,其实不然。如果您想要一些代码开始,您可以搜索“android 自定义视图”。

于 2014-02-24T09:24:25.720 回答