【问题标题】:Show different text for viewrenderable view in android在android中为viewrenderable视图显示不同的文本
【发布时间】:2020-12-23 06:56:29
【问题描述】:

为 viewrenderable 视图显示不同的文本。(例如)fl 测量值有 10、12、15,但所有视图都显示 15、15、15。我需要显示文本视图是 10、12、15。最后一个值正在替换所有行。请帮我解决这个问题。

//this is my viewrenderable
ViewRenderable.builder()
                .setView(this, R.layout.measure_view)
                .build()
                .thenAccept(renderable -> measureViewRenderable = renderable).exceptionally(
                throwable -> {
                    Toast toast =
                            Toast.makeText(this, "Unable to load andy renderable", Toast.LENGTH_LONG);
                    toast.setGravity(Gravity.CENTER, 0, 0);
                    toast.show();
                    return null;
                });

//I will show the text message above the line using viewrenderable view


private void addLineBetweenHits(HitResult hitResult, Plane plane, MotionEvent motionEvent) {

        Anchor anchor = hitResult.createAnchor();
        AnchorNode anchorNode = new AnchorNode(anchor);


        if (myanchornode != null) {
            anchorNode.setParent(arFragment.getArSceneView().getScene());
            point1 = myanchornode.getWorldPosition();
            point2 = anchorNode.getWorldPosition();

    /*
        First, find the vector extending between the two points and define a look rotation
        in terms of this Vector.
    */
            final Vector3 difference = Vector3.subtract(point1, point2);
            final Vector3 directionFromTopToBottom = difference.normalized();
            final Quaternion rotationFromAToB =
                    Quaternion.lookRotation(directionFromTopToBottom, Vector3.up());

            node = new Node();


            MaterialFactory.makeOpaqueWithColor(getApplicationContext(), new Color(0, 255, 244))
                    .thenAccept(
                            material -> {
                            /* Then, create a rectangular prism, using ShapeFactory.makeCube() and use the difference vector
                                   to extend to the necessary length.  */
                                ModelRenderable model = ShapeFactory.makeCube(
                                        new Vector3(.01f, .01f, difference.length()),
                                        Vector3.zero(), material);
                            /* Last, set the world rotation of the node to the rotation calculated earlier and set the world position to
                                   the midpoint between the given points . */
                                node.setParent(anchorNode);
                                node.setRenderable(model);
                                node.setWorldPosition(Vector3.add(point1, point2).scaled(.5f));
                                node.setWorldRotation(rotationFromAToB);
                            }
                    );
            myanchornode = anchorNode;

            TransformableNode andy = new TransformableNode(arFragment.getTransformationSystem());
            andy.setParent(anchorNode);
            andy.setRenderable(measureViewRenderable);



TextView view=(TextView) measureViewRenderable.getView().findViewById(R.id.txtMeasure);

  view.setText("" + fl_measurement.get(fl_measurement.size() - 1));

            
            andy.select();
            andy.getScaleController().setEnabled(false);


        }
    }

【问题讨论】:

    标签: android augmented-reality sceneform


    【解决方案1】:

    我正在研究同一个主题,现在看来我们需要通过重新使用 ViewRenderable.builder() 来创建不同的 ViewRenderable,以便在每个中拥有不同的数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-28
      • 2013-04-17
      • 1970-01-01
      • 1970-01-01
      • 2014-03-16
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      相关资源
      最近更新 更多