我正在使用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
并设置为显示相机流。
问题是,在启动应用时,通常会有不同的结果。之一:
Button
和MySurfaceView
同时被绘制到屏幕上,然后相机流开始显示(这就是我每次都希望它工作的方式)
或
在MySurfaceView
最终显示之前, Button
加载并显示相机流几秒钟。
我知道在显示按钮之前必须创建和测量SurfaceView
,所以我应该稍微延迟,但如上所述,在某些情况下,SurfaceView
会显示相机在按钮最终被绘制到屏幕之前最多5秒流。
我怎能避免这种情况?
提前感谢您的帮助。
编辑:
尽管显示在屏幕上,似乎SurfaceView
尚未完全创建完毕。我正在使用OpenCV来处理相机流,这似乎仍然是在最初绘制SurfaceView
之后初始化事物,因此在完成所有这些操作之前不会绘制Button
。