【发布时间】:2018-07-24 00:55:14
【问题描述】:
谁知道如何在 Rajawali Surface View 上添加用户界面? 我检查了 rajawali 文档,但它不起作用
【问题讨论】:
标签: rajawali 3d-rendering
谁知道如何在 Rajawali Surface View 上添加用户界面? 我检查了 rajawali 文档,但它不起作用
【问题讨论】:
标签: rajawali 3d-rendering
以下方法对我有用:创建要添加到布局中的 UI 元素,我使用 ConstraintLayout 作为容器。不要通过 xml 创建SurfaceView,而是以编程方式创建。以一种与所有其他 UI 元素重叠并使用所有可用空间的方式创建它。这样,UI 元素仍然可见,尽管从技术上讲它们应该被前面的 SurfaceView 隐藏。
下面是我如何设置SurfaceView 的代码。请注意,constraintLayout 是其中还包含其他按钮的容器布局的名称。
surfaceView = new SurfaceView(getContext());
surfaceView.setFrameRate(30.0);
surfaceView.setRenderMode(ISurface.RENDERMODE_WHEN_DIRTY);
surfaceView.setSurfaceRenderer(YOUR_RENDERER);
surfaceView.setLayoutParams(new ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_CONSTRAINT, ConstraintLayout.LayoutParams.MATCH_CONSTRAINT));
surfaceView.setId(View.generateViewId());
constraintLayout.addView(surfaceView, 0);
ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(constraintLayout);
constraintSet.connect(surfaceView.getId(), ConstraintSet.LEFT, ConstraintSet.PARENT_ID, ConstraintSet.LEFT);
constraintSet.connect(surfaceView.getId(), ConstraintSet.RIGHT, ConstraintSet.PARENT_ID, ConstraintSet.RIGHT);
constraintSet.connect(surfaceView.getId(), ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM);
constraintSet.connect(surfaceView.getId(), ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.TOP);
constraintSet.applyTo(constraintLayout);
【讨论】: