角度选择器就像Android API 19 TimePicker一样

时间:2014-02-24 08:45:15

标签: java android android-timepicker

我想在API级别19 KitKat中创建一个“角度选择器”,如闹钟中的Android TimerPicker

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

Android TimePicker in Clock App

1 个答案:

答案 0 :(得分:0)

创建自己的组件:

public class AnglePicker extends View { ... }

覆盖onDraw(Canvas canvas)方法。你应该绘制一个圆圈,一些文本(例如0º,90º,180和270º)...
您只需拨打canvas.drawCircle()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自定义视图”。