在SurfaceView上添加布局

时间:2014-04-25 13:42:51

标签: java android surfaceview layout-inflater

一开始我将内容视图设置为一个新类,它扩展了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);
    }
}

2 个答案:

答案 0 :(得分:2)

Activity

中调用此方法

http://developer.android.com/reference/android/app/Activity.html#addContentView(android.view.View, android.view.ViewGroup.LayoutParams)

可以通过膨胀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>

根据您的需要更改/调整高度和位置等。