【问题标题】:Ar Core Static GUI's on Android Studio?Android Studio 上的 Ar Core 静态 GUI?
【发布时间】:2020-07-18 14:11:15
【问题描述】:

我很惊讶地问这个问题,但我的许多搜索结果绝对没有

我正在使用 ArCore 和 Sceneform 在 Android Studio 中开发 AR 应用程序。

需要大量用户输入才能为 AR 可视化提供一些数据。

我没有发现在 ARCore/Sceneform 中拥有常规的非 ar 菜单系统...我只想要某种类似于常规 android 应用程序 gui 类型体验的静态界面 - 完全 2d 且完全非 ar

这是否应该简单明了,而我只是过于复杂了?我已经有一个不在 ArCore/Sceneform 中的活动,它可以完成我需要的一切 - 我只需要尽我所能将这些数据推送到 ar 端。

【问题讨论】:

    标签: android android-studio augmented-reality arcore sceneform


    【解决方案1】:

    您可以通过多种方式在您的 AR Sceneform 应用程序中使用常规 UI 元素、按钮、输入等,包括:

    • 使用布局将按钮和视图与 Sceneform 片段混合在一起
    • 使用警报对话框显示消息并从用户那里获取输入

    支持 AR 视图和“浮动按钮”的布局示例如下:

    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
      <RelativeLayout
          android:layout_width="match_parent"
          android:layout_height="match_parent">
    
        <android.support.design.widget.FloatingActionButton
            android:id="@+id/down_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_toLeftOf="@+id/blank_button_bottom_right"
            android:layout_margin="5dp"
            android:src="@drawable/ic_baseline_arrow_downward_24px" />
    
        <android.support.design.widget.FloatingActionButton
            android:id="@+id/right_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_above="@+id/blank_button_bottom_right"
            android:layout_margin="5dp"
            android:src="@drawable/ic_baseline_arrow_forward_24px" />
    
        <fragment
            android:id="@+id/ux_fragment"
            android:name="com.google.ar.sceneform.ux.ArFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    
       </RelativeLayout>
      </FrameLayout>
    

    以上内容经过简化以使其更具可读性,但您可以在此处查看完整的工作示例:https://github.com/mickod/LineView

    使用对话框,您可以拥有如下布局和代码,并添加您需要的任何 EditText 等:

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
            <TextView
                android:id="@+id/main_info_text_view1"
                android:layout_alignParentTop="true"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="40dp"
                android:layout_marginTop="20dp"
                android:layout_marginRight="40dp"
                android:text="@string/main_info_text1" />
    
            <TextView
                android:id="@+id/main_info_text_view2"
                android:layout_below="@id/main_info_text_view1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="40dp"
                android:layout_marginTop="20dp"
                android:layout_marginRight="40dp"
                android:text="@string/main_info_text2" />
    
            <TextView
                android:id="@+id/accreditations_info_text_view"
                android:layout_below="@id/main_info_text_view2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="40dp"
                android:layout_marginTop="20dp"
                android:layout_marginRight="40dp"
                android:text="@string/accreditations_text" />
    
        </RelativeLayout>
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    
        private fun infoDialog() {
            //Display an info dialog
            val builder = AlertDialog.Builder(this)
            builder.setTitle("Info")
            val inflater = layoutInflater
            val settingsLayout = inflater.inflate(R.layout.info_layout, null)
    
            // Display the layout and react to ok
            builder.setView(settingsLayout)
            builder.setPositiveButton("OK") { dialogInterface, i ->
                return@setPositiveButton }
            builder.show()
        }
    

    【讨论】:

    • 老兄,我非常感谢你为这个精美详细的回复付出的努力。我查看了线视图,我认为我已经将我的问题归结为以下几点:我需要有一个片段/选项卡在我的常规应用程序布局和我的 ArScene 之间发生变化。浮动按钮很棒,但我打包的控件和输入量很大,以至于滚动是必不可少的。最终我希望我可以使用浮动按钮 1 从我当前的 ArFragment 切换到我的第二个选项卡/片段。
    • @CorinHarper - 听起来可以。您还可以在更改对话框中使用滚动视图,这样更容易。您可以使用浮动按钮来显示警报对话框。上面的示例实际上是在点击浮动按钮时调用的(我从另一个应用程序的一些工作代码中提取了它)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    • 2021-05-16
    • 2018-07-08
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多