android - 可以在 RelativeLayout 内部的表面上使用 setFixedSize 吗?

标签 android android-layout android-ndk android-fullscreen

根据 http://android-developers.blogspot.ca/2013/09/using-hardware-scaler-for-performance.html,我正在尝试使用 setFixedSize 来加快屏幕尺寸非常大的平板电脑上的游戏速度

我遇到的问题是我目前有一个我将 Surface 添加到的 RelativeLayout。

作为测试用例,我采用了 gl2jni NDK 示例应用程序,并在 init 方法中将对 getHolder().setFixedSize(128,128) 的调用添加到 GJ2JNIView.java 中。这正确地创建了一个丑陋的 128x128 缓冲区,它被放大到全屏并且完全按照我的预期工作。

然后我修改了JL2JNIActivity中的onCreate方法如下。

@Override protected void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    mView = new GL2JNIView(getApplication());

    boolean useRelativeLayout = false;
    if ( useRelativeLayout ) {
      mLayout = new RelativeLayout(this);
      RelativeLayout.LayoutParams param = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
      mLayout.setLayoutParams(param);
      mLayout.addView(mView);

      setContentView(mLayout);
    } else {
      setContentView(mView);
    }
}

当我将 useRelativeLayout 设置为 false,并且 setContentView 直接使用调用 setFixed size 的 GL2JNIView 时,它按预期工作。

当我将 useRelativeLayout 设置为 true 时,它​​会将 mView 显示为左上角的 128x128 小缓冲区。

最佳答案

所以在调查之后,我没有在 mView 上设置我的 layoutParams。

通过将我的 mView 上的布局参数设置为以下,它可以正确缩放 mView

RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
lp.addRule(RelativeLayout.ALIGN_PARENT_TOP);

mView.setLayoutParams(lp);

关于android - 可以在 RelativeLayout 内部的表面上使用 setFixedSize 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25983135/

相关文章:

android - 如何设置 MultiAutoCompleteTextView 的列表分隔符

android - 进度条显示

java - 在 Java 和 C 之间发送 int[]s

android - 未登录时是否可以获取公共(public) facebook 墙提要?

android - LibGDX 如何让标签变大?

android - 如何在android constraintLayout中设置 View 的最大宽度?

android-studio - Android ndk 示例原生音频错误

java - Java中的音频指纹识别系统

android - 在 Android 4 中设置对话框宽度

android - FFMPEG android编译错误