java - 在 Canvas 上绘制 LinearLayout View 消失

标签 java android camera android-canvas surfaceview

我正在使用 Canvas 在 Surface View Camera 上绘制线性布局 View (插入点)。当 View 太多时(例如:在我的情况下为 40),我遇到了一个问题,一些 View 在移动相机时消失了。我在这里找不到问题。 setX 和 setY 方法有什么问题吗?你可以在下面看到我的代码,请回复它。

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    if (currentLocation == null) {
        return;
    }

    for (int i = 0; i < places.size(); i++) {
         float[] currentLocationInECEF = LocationHelper.WSG84toECEF(currentLocation);
         float[] pointInECEF = LocationHelper.WSG84toECEF(poiLoc.get(i));
         float[] pointInENU = LocationHelper.ECEFtoENU(currentLocation, currentLocationInECEF, pointInECEF);

        Matrix.multiplyMV(cameraCoordinateVector, 0, rotatedProjectionMatrix, 0, pointInENU, 0);


        if (cameraCoordinateVector[2] < 0 && insertPoint!=null && insertPoint.getChildAt(i)!=null) {
            float x = (0.5f + cameraCoordinateVector[0] / cameraCoordinateVector[3]) * canvas.getWidth();
            float y = (0.5f - cameraCoordinateVector[1] / cameraCoordinateVector[3]) * canvas.getHeight();

            insertPoint.getChildAt(i).setX(x - (insertPoint.getChildAt(i).getWidth()/2));
            insertPoint.getChildAt(i).setY(y);
            insertPoint.getChildAt(i).setVisibility(VISIBLE);
        }
    }
}

预期结果:所有 View 都应出现在相机 View 中。 实际结果:一些 View 在移动 Camera 和 onDrawCanvas 回调时消失。

我正在使用这个库 https://github.com/dat-ng/ar-location-based-android

enter image description here

最佳答案

我终于设法解决了这个问题。我所要做的就是将 LinearLayout 替换为 RelativeLayout,它的效果非常好。

关于java - 在 Canvas 上绘制 LinearLayout View 消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57303390/

相关文章:

Android- Google map v2 画圆

Android:Android 相机预览上的叠加层

c++ - opencv无法访问模拟相机

ios - 我的应用程序默认有摄像头访问权限。我如何关闭它并请求权限?

java - 在 Android 中检测屏幕关闭/打开并更改 wifi 状态

android - 如何更改android slidingdrawer handle 按钮位置

android - 将 Drawable 转换为位图以更改 Google Maps Android API v2 中标记的颜色

java - 我如何测量有多少线程正在执行一段代码?

java - 改变 fragment 。为什么不起作用

java - 如何从 JSP 运行 Hadoop 命令