2012-02-01 1 views
0

私は現在のmain.xmlレイアウトに追加する必要があるカスタムサーフェイスビューを持っています。このサーフェスビューは、カメラのライブビューをストリーミングするために使用されます。私はこの仕事をすることに問題があります。main.xmlにカスタムサーフェイスビューを表示

私はしかし、私は私のカスタムsurfaceviewがメインビューにしたくない私は

 cameraPreview = new HttpCameraPreview(this, null, viewWidth, viewHeight); 
setContentView(cameraPreview); 

ようなコードを実行しても何ら問題はありません。私はそれが私のmain.xmlの中のsurfaceviewであることを望みます。

いくつかの提案/アドバイスを希望します。私はこのリンクを参照しようとしましたが、助けもありません。 Draw SurfaceView from layout xml

ありがとうございました!

以下のようにmain.xmlの一部:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:orientation="vertical" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"> 
        <ImageView 
       android:id="@+id/preview_image_view" 
       android:layout_height="wrap_content" 
       android:layout_weight="3.0" 
        android:layout_width="fill_parent" 
       /> 
<SurfaceView Class ="org.saboteur.nikonshooter.HttpCameraPreview" 
android:layout_width="fill_parent" 
android:id="@+id/surface_preview" 
android:layout_height="10dip" 
android:layout_weight="3"/> 

このように私のカスタムsurfaceviewクラス部分のコードを見て:

public class HttpCameraPreview extends SurfaceView implements SurfaceHolder.Callback { 
    private static final String TAG = "test"; 
    private static final String url = "http://bijint.com/jp/tokei_images/0022.jpg"; 
    private CanvasThread canvasThread; 

    private SurfaceHolder holder; 
    private HttpCamera camera; 

    private HttpCameraPreview mSurfaceView; 

    private int viewWidth; 
    private int viewHeight; 

    public HttpCameraPreview(Context context, AttributeSet attributeSet, int viewWidth, int viewHeight) { 
     super(context, attributeSet); 
     Log.e("HttpCameraPreview", "inside HttpCameraPreview()"); 
     Log.e("HttpCameraPreview", "create surface view to r.id"); 


     try{ 
     holder = getHolder(); 
     holder.addCallback(this); 
     holder.setType(SurfaceHolder.SURFACE_TYPE_NORMAL); 
     this.viewWidth = viewWidth; 
     this.viewHeight = viewHeight; 
     canvasThread = new CanvasThread(); 
     catch (Exception e){ 
      Log.e("HttpCameraPreview", "--->Exception = "+e); 
     } 
    } 
+0

によって別の質問をすることを呼び出す:layout_width = "fill_parent: なぜできない keithwb

答えて

0

あなたのmain.xmlレイアウトにHttpCameraViewを追加しないのはなぜプログラマチックに。 "@ + ID/parent_view" のようなあなたのLinearLayoutにIDを付け、その後

LinearLayout parentView = (LinearLayout) findViewById(R.id.parent_view); 
cameraPreview = new HttpCameraPreview(this, null, viewWidth, viewHeight); 
parentView.addView(cameraPreview); 
+0

」を無視して、これを行うことを試みました。それでも私には黒い画面が表示されます。 – keithwb

+0

おそらく属性セットが必要です。すべてのビューにlayout_widthとlayout_heightが必要なので、nullではなくLinearLayout.LayoutParamsを与えてください。 – AJcodez

+0

こんにちは、属性セットを渡す必要があります。コンテキストを渡すだけですか?どの属性が合格になるかわからないからです。 – keithwb

関連する問題