根据 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/