Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在两个中心(ov视图)之间绘制线,而不在视图上绘制_Android_Canvas_Views_Line - Fatal编程技术网

Android 在两个中心(ov视图)之间绘制线,而不在视图上绘制

Android 在两个中心(ov视图)之间绘制线,而不在视图上绘制,android,canvas,views,line,Android,Canvas,Views,Line,我得到了一个布局,在这里我需要在两个子视图(两个中心之间)之间画一条线,但是没有线重叠视图本身 我使用以下方法成功地在两个中心之间绘制了线: final int lineStartX = ((LayoutParams) viewA.getLayoutParams()).leftMargin + (viewA.getMeasuredWidth() / 2); final int lineStartY = ((LayoutParams) viewA.getLayoutParams()).topMar

我得到了一个布局,在这里我需要在两个子视图(两个中心之间)之间画一条线,但是没有线重叠视图本身

我使用以下方法成功地在两个中心之间绘制了线:

final int lineStartX = ((LayoutParams) viewA.getLayoutParams()).leftMargin + (viewA.getMeasuredWidth() / 2);
final int lineStartY = ((LayoutParams) viewA.getLayoutParams()).topMargin + (viewA.getMeasuredHeight() / 2);
final int lineEndX = ((LayoutParams) viewB.getLayoutParams()).leftMargin + (viewB.getMeasuredWidth() / 2);
final int lineEndY = ((LayoutParams) viewB.getLayoutParams()).topMargin + (viewB.getMeasuredHeight() / 2);
canvas.drawLine(lineStartX, lineStartY, lineEndX, lineEndY, mLinePaint);
但该线在视图区域中也可见

在直线上绘制视图不被视为解决方案,因为视图背景应该是透明的

我如何做到这一点

提前谢谢


我终于用自己的实现实现了,使用了类似的三角形公式:


如果您的视图是从上到下的,则此操作有效。它从俯视图的中下部开始,并在俯视图的中上部绘制一条线。

只需计算这条线与视图边界相交的位置,然后从该位置开始绘制。这就是我试图找到的,相交点:)
lineStartX = viewA.getX + viewA.getMeasuredWidth() / 2;
// Start from bottom of view
lineStartY = viewA.getY + viewA.getMeasuredHeight;
lineEndX = viewB.getX + viewB.getMeasuredWidth() / 2;
// End at top of next view
lineEndY = viewB.getY;
canvas.drawLine(lineStartX, lineStartY, lineEndX, lineEndY, mLinePaint);