我想在API级别19 KitKat中创建一个“角度选择器”,如闹钟中的Android TimerPicker
。
我只想选择0到360度之间的角度。有谁知道如何创建这样的东西?
答案 0 :(得分:0)
创建自己的组件:
public class AnglePicker extends View { ... }
覆盖onDraw(Canvas canvas)
方法。你应该绘制一个圆圈,一些文本(例如0º,90º,180和270º)...
您只需拨打canvas.drawCircle()
和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自定义视图”。