当前位置: 首页 > 知识库问答 >
问题:

在ArFragment中隐藏加载屏幕

庄子平
2023-03-14

我使用了“arFragment.getArSceneView.getScene().setOnUpdateListener”。每当我实现我自己的“setOnUpdateListener”时,我都能够显示我的菜单,但这个加载图像不会隐藏。此图像仅在我未实现updateListener时自动隐藏。这是活动_main的片段。来自MainActivity的xml和侦听器。JAVA

<fragment android:name="com.google.ar.sceneform.ux.ArFragment"
    android:id="@+id/ux_fragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />

        ArSceneView arSceneView =arFragment.getArSceneView();
    arSceneView.getScene().setOnUpdateListener(
            frameTime -> {
                Frame frame = arSceneView.getArFrame();
                if (frame == null) {
                    return;
                }
                if (frame.getCamera().getTrackingState() != TrackingState.TRACKING) {
                    return;
                }

                for (Plane plane : frame.getUpdatedTrackables(Plane.class)) {
                    if (plane.getTrackingState() == TrackingState.TRACKING) {
                        Log.e("********************","");
                        hsv.setVisibility(View.VISIBLE);
                    }
                }
            });

共有3个答案

尚楚
2023-03-14

编辑:在最近的Sceneform版本中不再需要以下内容。如果您可以使用addOnUpdateListener而不是setOnUpdateListener您不必执行我下面描述的操作。

如果您设置了自己的OnUpdateListener,则必须调用arFragment。onUpdate(帧时)在您的OnUpdateListener实现中。在您的情况下,这将是:

ArSceneView arSceneView = arFragment.getArSceneView();
arSceneView.getScene().setOnUpdateListener(
        frameTime -> {
            Frame frame = arSceneView.getArFrame();
            if (frame == null) {
                return;
            }
            if (frame.getCamera().getTrackingState() != TrackingState.TRACKING) {
                return;
            }

            for (Plane plane : frame.getUpdatedTrackables(Plane.class)) {
                if (plane.getTrackingState() == TrackingState.TRACKING) {
                    Log.e("********************","");
                    hsv.setVisibility(View.VISIBLE);
                }
            }
            arFragment.onUpdate(frameTime);
        });

这样,您仍然可以显示指令视图,而不必在发现平面后将其保留。

卢权
2023-03-14

我有以下代码可能更容易使用。通过扩展ArFrapse类,您可以有多种可能性来操作视图和行为。

OnResume调用onStart(),它将显示planeDiscoveryController(四处移动的手),直到找到一个平面为止。这就是为什么我在自己的onResume方法中调用hide()。

OnWindowFocusChanged from BaseArFragment将强制屏幕扩展为全屏。通过重写该方法,我删除了更改屏幕的标志,只保留了保持屏幕打开和明亮的标志。

class ProductArFragment : ArFragment() {

    override fun onResume() {
        super.onResume()
        planeDiscoveryController.hide()
    }

    override fun onWindowFocusChanged(hasFocus: Boolean) {
        activity?.let { act ->
            if (hasFocus) {
                act.window.addFlags(WindowManager
                        .LayoutParams.FLAG_KEEP_SCREEN_ON)
            }
        }
    }
}
许彦
2023-03-14

您可以通过隐藏视图,然后将其设置为null,使其不会重新出现,从而使“平面发现”视图始终在启动时显示。在onCreate()中添加:

arFragment = (ArFragment) 
        getSupportFragmentManager().findFragmentById(R.id.ux_fragment);
arFragment.getPlaneDiscoveryController().hide();
arFragment.getPlaneDiscoveryController().setInstructionView(null);

 类似资料:
  • Since 8.0 hideLoading 隐藏全局大菊花 使用方法 AlipayJSBridge.call('hideLoading'); 代码演示 显示/隐藏全局loading框 <h1>点击以下按钮看不同效果</h1> <p>注意安卓下显示loading后,会覆盖整个界面,所以请使用系统回退键关闭loading</p> <button class="btn show">显示loading<

  • ap.hideLoading() 隐藏加载提示。 代码示例 <script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.inc.min.js"></script> <button class="btn btn-default">showLoading</button> <script>

  • Since 8.6 hideTitleLoading 隐藏标题栏loading 使用方法 AlipayJSBridge.call('hideTitleLoading'); 代码演示 显示/隐藏全局loading框 <h1>点击下面按钮查看效果</h1> <a href="javascript:void(0)" class="btn show">显示loading</a> <a href="jav

  • 问题内容: 我的网站上有一堆隐藏图像。他们的容器DIV具有style =“ display:none”。根据用户的操作,某些图像可能会通过javascript显示。问题是打开页面时我的所有图像都被加载了。我想通过仅加载最终变得可见的图像来减轻服务器的负担。我想知道是否有一种纯CSS方式来做到这一点。这是我目前正在使用的两种hacky /复杂方法。如您所见,这不是干净的代码。 这是方法2: 问题答案

  • 我的jsp中有一个这样的tr。 我也有这样的选择。 select中使用的javascript函数如下所示。 因此,如果所选行不是0,我将不会在页面中显示tr。这很好用 我在请求中设置了dateRange变量。setAttribute()并从操作发送它 问题是从请求值中正确地选择了选项,但是没有显示tr 我尝试在jsp中的表单外部这样运行它,希望它能在页面加载之前执行,但没有发生。 有什么想法吗?

  • 问题内容: 我在Angularjs中遇到问题,在我的数据从服务器返回之前,HTML出现了闪烁。 这是演示该问题的视频:http: //youtu.be/husTG3dMFOM-注意#| 和右边的灰色区域。 我尝试了ngCloak,但没有成功(尽管ngCloak确实阻止了括号未如期出现),并且想知道隐藏内容的最佳方法,直到Angular填充HTML。 我在控制器中使用了以下代码: …但是我一次又一次