0

我有一个问题,我已经尝试解决这个问题,但我还没有找到解决方案。

我有两列图像。我想通过每个图像的中点加入他们。我遇到的问题是附着点向下移动,就像图像一样 我的问题的例子

我有一个“主”类,我有一个内部类:公共类 DrawView 扩展了具有属性的 LinearLayout:private Paint paint = new Paint(); 我设置了下一个值:paint.setColor(Color.BLACK); 油漆.setStrokeWidth(6);

我使用下一个代码来绘制线条:

public void onDraw(Canvas canvas) {
    }

    @SuppressLint("UseValueOf")
    @Override
    public void dispatchDraw(Canvas canvas) {
        super.dispatchDraw(canvas);
        if (activateDraw) {
            for (int i = 0; i < 5; i++) {
                             //I not include the color selection.
                    x1= Image[i].x + Image[i].width;
                    y1=Image[i].y+ (new Double(Image[i].height / 2).intValue()));

                    x2=ImagePr[i].x;
                    y2=ImagePr[i].y + (new Double((ImagePr[i].height) / 2).intValue()));
                    canvas.drawLine(x1, y1, x2, y2, paint);
            }
            activateDraw = false;
        }
    }

要设置 x 和 y 值,我使用以下方法:

public void setData(ImageView img) {
    image = img;
    int[] values = new int[2];
    image.getLocationInWindow(values);
    x = values[0];
    y = values[1];
    width = image.getWidth();
    height = image.getHeight();
}

在主类中,我有属性: Canvas auxCanvas = new Canvas(); 当我想画线时,我执行 onDraw(auxCanvas) 方法。为什么线条不绘制连接“中点”?

任何人都可以帮助我吗?谢谢!

@Shaunak 抱歉,失败了。我已经删除了它并没有影响,问题仍然存在。谢谢!

@anthropomo 我尝试了您的更改,但问题仍然存在。

我不明白为什么在模拟器中似乎可以正常工作,但在设备上却不行。

解决方案:

(我以为我已经写了答案,对不起)解决方案很简单。该应用程序的目标用户是 6-8 岁的学生,所以我决定隐藏状态栏,上面的代码可以完美运行,无需做任何更改!隐藏状态栏: 隐藏通知栏

如何使用现有的自定义主题在 XML 中隐藏 Activity 的标题栏

如果其他人想显示状态栏,我想你需要减去状态栏高度。

4

1 回答 1

1

参考:http: //developer.android.com/reference/android/util/DisplayMetrics.html#density

这样的事情对你有用吗?:

float d = getResources().getDisplayMetrics().density;
canvas.drawLine(x1*d, y1*d, x2*d, y2*d, paint);

注意:如果乘法不起作用,请尝试除以d...我永远不记得该怎么做。

于 2013-02-01T16:20:06.327 回答