Java Android Wear上的怪异渲染问题

Java Android Wear上的怪异渲染问题,java,android,Java,Android,我正在开发一款耐磨表面,我得到了非常不寻常的输出。有一个神秘的圆形区域,其中一些子视图未完全渲染。有趣的是,我从不在视图中添加圆 以下是输出的屏幕截图: 奇怪的是时钟指针输出得很好,它们首先被添加到视图中。下面是一段代码片段,它勾勒出了这条线: for(int i=1; i<=60; i++) { int seconds = i; int radius = (screenWidth / 2); int centre = (screenWidth

我正在开发一款耐磨表面,我得到了非常不寻常的输出。有一个神秘的圆形区域,其中一些子视图未完全渲染。有趣的是,我从不在视图中添加圆

以下是输出的屏幕截图:

奇怪的是时钟指针输出得很好,它们首先被添加到视图中。下面是一段代码片段,它勾勒出了这条线:

for(int i=1; i<=60; i++) {
       int seconds = i;
       int radius = (screenWidth / 2);
       int centre = (screenWidth / 2);
       int totalLimit = 60;
       int currentValue = seconds;
       int theta = (360 / totalLimit) * currentValue;

       double x = centre + radius * Math.cos(theta * Math.PI / 180);
       double y = centre + radius * Math.sin(theta * Math.PI / 180);

       float angle = (float) Math.toDegrees(Math.atan2(x - centre, y - centre));
       if (angle < 0) {
           angle += 360;
       }
       if (angle > 180)
           angle -= 180;
       else
           angle += 180;


       View view = new View(this);
       RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(1, radius);
       params.leftMargin = (int)x;
       params.topMargin = (int)y;
       view.setPivotX(0);
       view.setPivotY(0);
       view.setRotation(-angle);
       view.setBackgroundColor(Color.WHITE);
       mWatchView.addView(view, params);

       views.add(view);
}
for(int i=1;i 180)
角度-=180;
其他的
角度+=180;
视图=新视图(此);
RelativeLayout.LayoutParams参数=新的RelativeLayout.LayoutParams(1,半径);
params.leftMargin=(int)x;
参数topMargin=(int)y;
view.setPivotX(0);
view.setPivotY(0);
视图。设置旋转(-角度);
视图.setBackgroundColor(颜色.白色);
mWatchView.addView(视图,参数);
视图。添加(视图);
}

您正确计算了外部起点和角度,但长度会发生什么变化?检查页边空白

好的,我现在从外到内画线,而不是从内到外画线。这就解决了这个问题

params.leftMargin = (int)(screenWidth-x);
params.topMargin = (int)(screenWidth-y);
还根据我想要的线的长度更改了半径

int length = 15;
int width = 1;
if (i == 10 || i == 20 || i == 30 || i == 40 || i == 50 || i == 60) {
    length = 35;
    width = 2;
}
if (i == 5 || i == 15 || i == 25 || i == 35 || i == 45 || i == 55) {
   length = 25;
   width = 2;
}
int seconds = i;
int radius = (screenWidth / 2)-length;
结果如下:


谢谢。关于如何在x、y方向添加视图,然后旋转视图,但仍保持其长度,有什么提示吗?