我有一个简单的屏幕,上面有一个“开始”按钮。当按下“开始”按钮时,我希望进入一个新的屏幕,在其中显示摄像头的SurfaceView。
一切都运转良好,但是摄像头需要一段时间才能加载,这会给我一个黑屏。 我希望新布局能够加载,并在加载后启动摄像头...
因此,我将所有摄像头加载工作放在后台线程中,但仍然得到了黑屏... 这是我的布局:
一切都运转良好,但是摄像头需要一段时间才能加载,这会给我一个黑屏。 我希望新布局能够加载,并在加载后启动摄像头...
因此,我将所有摄像头加载工作放在后台线程中,但仍然得到了黑屏... 这是我的布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/RelativeLayout1"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/blue_bg">
<SurfaceView
android:id="@+id/surface_camera"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"
android:layout_below="@id/scan_header"
android:layout_above="@id/scan_footer">
</SurfaceView>
</RelativeLayout>
这是我在Activity中加载新视图的方法:
private void setContent()
{
setContentView(R.layout.scan)
Thread t = new Thread()
{
public void run()
{
final SurfaceView mSurfaceView = (SurfaceView)findViewById(R.id.surface_camera);
final SurfaceHolder mSurfaceHolder = mSurfaceView.getHolder();
try
{
cameraView = new CameraView();
mSurfaceHolder.addCallback(cameraView);
cameraView.setPictureListener(SunpluggedActivity.this);
mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
} catch(Exception e)
{
Log.d(TAG, "Another exception");
e.printStackTrace();
}
}
};
t.start();
}
为什么新布局要等到线程完成相机加载后才显示?
编辑:我尝试在线程内使用Thread.sleep(200)来暂停一段时间...当我这样做时,新布局立即显示,但相机从未启动...