最近的项目开发中的一个任务是实现Android虚拟手柄界面,如图所示:
界面是一个SurfaceView,摇杆和按键都是通过画图显示出来的,这里详细介摇杆的实现,当用户点击摇杆即中间的黄球时,然后可以再圆圈内移动,这里运用了三角函数的知识,我们可以把黄球的中心点为一个含有4个象限的坐标的中心,当黄球移动的位置超出了圆圈时,就让黄球的位置设置为相对于坐标中心同一角度圆圈的边缘的点上的位置。下面直接上代码:
private void handleTouchMoveEvent(int x, int y) {
if (found) {
handleTouchDownEvent();
mRect.left = x - mStickWidth/2;
mRect.top = y - mStickHeight/2;
mRect.right=mRect.left+mStickWidth;
mRect.bottom=mRect.top+mStickHeight;
//把摇杆的中心点作为基准坐标
int baseX = (int) mPosition[0]+ mStickWidth/2;
in