【问题标题】:How to load a specific layout of an activity in android如何在android中加载活动的特定布局
【发布时间】:2017-12-22 05:09:27
【问题描述】:

我正在开发一款增强现实安卓应用。我使用 vuforia 统一开发了该应用程序,然后将其导入 android studio,因为我想在 android studio 中设计它。生成的项目结构中的活动名称是UnityPlayerActivity,在项目中没有布局。活动被传递给UnityPlayerclass 并生成布局。这是我的UnityPlayerActivity 活动的一些代码。

protected UnityPlayer mUnityPlayer; // don't change the name of this variable; referenced from native code

// Setup activity layout
@Override protected void onCreate(Bundle savedInstanceState)
{
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);

    getWindow().setFormat(PixelFormat.RGBX_8888); // <--- This makes xperia play happy

    mUnityPlayer = new UnityPlayer(this);
    setContentView(mUnityPlayer);
    mUnityPlayer.requestFocus();
}

因为它使用该布局,我如何通过引用它来设计该活动。

【问题讨论】:

  • 您能详细说明一下吗?
  • 我想自定义布局但不知道如何定位UnityPlayerActivity活动来生成它的布局!

标签: android android-layout unity3d vuforia


【解决方案1】:

不能通过引用对象来做到这一点(Java 不支持通过引用调用)。

您需要在 UnityPlayer 类中定义一个新函数,该函数生成一个布局并返回 LayoutParams 对象。

然后使用 Layout 充气机。像这样的:

LayoutParams mParams=mUnityPlayer.layoutGenerator() //some function to generate LayoutParams
LayoutInflator.getLayoutInflator().inflate(LayoutParams);

【讨论】:

  • 代替 setContentView
  • UnityPlayer.class 类压缩在unity-classesJar 文件中,不能编辑(因为它已经编译)或替换。那我该怎么办?
  • 在这种情况下,您可以尝试扩展类,然后覆盖现有方法。
【解决方案2】:

最后我找到了一个简单的方法来解决我的问题。我使用框架布局在子视图中显示了统一场景,现在我可以轻松自定义 UI。检查herehere 以查看更多信息。

【讨论】:

    猜你喜欢
    • 2011-07-16
    • 2014-04-04
    • 1970-01-01
    • 2017-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-11
    相关资源
    最近更新 更多