自 API Level 19 KitKat 以来,我想TimerPicker
在闹钟中创建一个类似于 Android 的“角度选择器”。
我只想选择 0 到 360 度之间的角度。有人知道如何创建这样的东西吗?
自 API Level 19 KitKat 以来,我想TimerPicker
在闹钟中创建一个类似于 Android 的“角度选择器”。
我只想选择 0 到 360 度之间的角度。有人知道如何创建这样的东西吗?
创建自己的组件:
public class AnglePicker extends View { ... }
覆盖onDraw(Canvas canvas)
方法。您应该画一个圆圈,一些文本(例如 0º、90º、º180 和 270º)...
您只需要几次调用canvas.drawCircle()
and canvas.drawText()
。最“困难”的部分可能是计算文本位置。但这不是一个大问题,只是一点点sin
和cos
。
然后也覆盖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 自定义视图”。