gpt4 book ai didi

android - 如何在 ARCore sceneform 中将 View 渲染到父节点的右侧

转载 作者:太空宇宙 更新时间:2023-11-03 13:40:35 25 4
gpt4 key购买 nike

我正在使用 ViewRenderable 渲染布局文件。我给布局文件定了宽高

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="500dp"
android:layout_height="50dp"
android:background="@android:color/transparent">
// Add design
</android.support.constraint.ConstraintLayout>

现在我正在将布局构建为 ViewRenderable

 // Build a renderable from a 2D View.
CompletableFuture<ViewRenderable> meterOne =
ViewRenderable.builder().setView(this, R.layout.meter).build();

CompletableFuture.allOf(circle,
meterOne, meterTwo)
.handle(
(notUsed, throwable) -> {
// When you build a Renderable, Sceneform loads its resources in the background while
// returning a CompletableFuture. Call handle(), thenAccept(), or check isDone()
// before calling get().

if (throwable != null) {
DemoUtils.displayError(this, "Unable to load renderable", throwable);
return null;
}

try {
Meters.add(meterOne.get());
} catch (InterruptedException | ExecutionException ex) {
DemoUtils.displayError(this, "Unable to load renderable", ex);
}

之后我需要将这个 ViewRenderable 对象渲染到节点中

        Node sunVisual = new Node();
sunVisual.setParent(sun);
sunVisual.setRenderable(Meters.get(0)); // View
sunVisual.setLocalScale(new Vector3(0.5f, 0.5f, 0.5f));

现在我需要在 sunVisual 节点的右侧添加另一个节点

            Node node = new Node();
node.setParent(sunVisual );
node.setRenderable(Meters.get(1));
node.setLocalPosition(new Vector3(2.0f, 0.0f, 0.0f));

此代码在 google pixel 2 设备上运行良好,但我在 nokia x6 设备上的空间很小

Google pixel 2 截图 Google pixel 2 image

Nokia x6 截图 Nokia x6 screenshot

如何获取以米为单位的渲染 View 宽度和高度?

如何根据父节点渲染 View 大小设置局部位置在父节点右侧

帮我解决这个问题提前谢谢

最佳答案

我找到了解决上述问题的解决方案。

    Node node = new Node();
node.setParent(parent);
Renderable renderable = Meters.get(i);
renderable.setShadowReceiver(false);
renderable.setShadowCaster(false);
((ViewRenderable) renderable).setSizer(new FixedWidthViewSizer(2));
node.setRenderable(renderable);
node.setLocalPosition(new Vector3(2.0f, 0.0f, 0.0f));

我们可以使用 setSizer 来设置 ViewRendarable 的宽度和高度

 ((ViewRenderable) renderable).setSizer(new FixedWidthViewSizer(2));

关于android - 如何在 ARCore sceneform 中将 View 渲染到父节点的右侧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52718942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com