Java 在画布上绘制线性布局视图

Java 在画布上绘制线性布局视图,java,android,camera,android-canvas,surfaceview,Java,Android,Camera,Android Canvas,Surfaceview,我正在使用画布在曲面视图摄影机上绘制线性布局视图插入点。当有太多的视图时,我面临一个问题,例如:40在我的例子中,一些视图在移动相机时消失了。我在这里找不到问题。setX和setY方法有什么问题吗?你可以在下面看到我的代码,请回复 @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if (currentLocation == null) { return; }

我正在使用画布在曲面视图摄影机上绘制线性布局视图插入点。当有太多的视图时,我面临一个问题,例如:40在我的例子中,一些视图在移动相机时消失了。我在这里找不到问题。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);
        }
    }
}
预期结果:所有视图都应显示在摄影机视图上。 实际结果:某些视图在移动摄影机和onDrawCanvas回调时消失

我正在使用这个图书馆


我终于解决了这个问题。我所要做的就是用一个相对主义者来取代线性布局,它就像一个魔咒。

你在做什么?添加一些screenshots@pembaTamang我已经添加了截图。我试图在相机上添加线性布局作为视图,但移动相机时,视图变为一半,甚至完全消失。看起来不错。也许你的记忆体快用完了。顺便说一句,我的同事使用这个,它工作正常,谢谢,但我想这不是一个记忆问题。我想在不使用任何SDK的情况下实现这一点。有没有其他方法可以固定摄像机上的视图?