使用XML布局和SurfaceView的结果不一致

时间:2012-02-05 22:46:30

标签: java android layout camera surfaceview

我正在使用XML布局来显示一个自定义类,它使用下面的XML代码将SurfaceView和一个按钮扩展到它的右侧:

main.xml中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal">

    <com.my.name.MySurfaceView android:id="@+id/camera_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

    <Button android:id="@+id/button"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/button_text"/>

</LinearLayout>

然后我使用以下代码为我的活动设置布局:

MyActivity.java

public class MyActivity extends Activity {

    private MySurfaceView mySurfaceView;
    private Button button;

    public MyActivity() {

    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mySurfaceView = (MySurfaceView) findViewById(R.id.camera_view);

        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new android.view.View.OnClickListener() {
            public void onClick(View v) {
                mySurfaceView.setClick(true);
            }
        });
    }
}

然后MySurfaceView类扩展SurfaceView并设置为显示相机流。

问题是,在启动应用时,通常会有不同的结果。之一:

ButtonMySurfaceView同时被绘制到屏幕上,然后相机流开始显示(这就是我每次都希望它工作的方式)

MySurfaceView最终显示之前,

Button加载并显示相机流几秒钟。

我知道在显示按钮之前必须创建和测量SurfaceView,所以我应该稍微延迟,但如上所述,在某些情况下,SurfaceView会显示相机在按钮最终被绘制到屏幕之前最多5秒流。

我怎能避免这种情况?

提前感谢您的帮助。

编辑:

尽管显示在屏幕上,似乎SurfaceView尚未完全创建完毕。我正在使用OpenCV来处理相机流,这似乎仍然是在最初绘制SurfaceView之后初始化事物,因此在完成所有这些操作之前不会绘制Button

0 个答案:

没有答案