一开始我将内容视图设置为一个新类,它扩展了SurfaceView(参见示例)。
RenderView surfaceView = new RenderView();
setContentView(surfaceView);
但是我似乎无法从xml文件中添加布局,因为膨胀需要第一层我添加的东西是View并向我抛出错误,当我尝试充气时就像我会做一个正常的方式。
所以问题是,如何在SurfaceView上添加一些.xml文件的布局?
这是RenderView类代码的重要部分:
public class RenderView extends SurfaceView implements Runnable {
Context context;
Thread thread = null;
SurfaceHolder holder;
boolean running = false;
public RenderView(Context context) {
super(context);
this.context = context;
holder = getHolder();
}
public void run() {
while (running) {
if(!holder.getSurface().isValid()) continue;
Canvas c = holder.lockCanvas();
holder.unlockCanvasAndPost(c);
}
}
答案 0 :(得分:2)
在Activity
:
可以通过膨胀XML布局文件来获取View view
参数
LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
View secondLayerView = LayoutInflater.from(this).inflate(R.layout.my_layout, null, false);
addContentView(secondLayerView, lp);
答案 1 :(得分:1)
如果您想要全部使用xml,请在框架布局中环绕曲面视图。我已经在我的游戏中完成了这项工作,并且我已经在其上覆盖了一个得分和时间的顶级栏:
<LinearLayout
android:id="@+id/topBar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/scoreText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#F7F7F7"
android:ems="10"
android:gravity="center"
android:paddingLeft="5dp"
android:textColor="#000000"
android:textSize="20sp" >
</TextView>
<TextView
android:id="@+id/timeText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#F7F7F7"
android:ems="10"
android:gravity="center"
android:paddingLeft="5dp"
android:textColor="#000000"
android:textSize="20sp" >
</TextView>
</LinearLayout>
根据您的需要更改/调整高度和位置等。