2012-08-01 6 views
5

Ich bin ein Neuling in Android-Anwendungsentwicklung. Ich möchte eine Anwendung erstellen, die von der Kamera streamen und auf SurfaceView oder FrameLayout angezeigt wird.Android - zeigen Gitterlinien vor der Kamera

Ich brauche eine Option zeigt oben auf Streaming "Show Grid Lines", wenn der Benutzer darauf klicken Rasterlinien werden auf Kamera Stream angezeigt.

Kann mir jemand helfen, wie kann ich Gitternetzlinien vor der Kamera streamen ???

Jede Hilfe wird spürbar sein ...

Danke. Mohsin

Antwort

11

Wenn Sie die Linien abhängig von Ihrer Bildschirmgröße dynamisch zeichnen möchten, können Sie dies zur Kameravorschau hinzufügen.

@Override 
    protected void onDraw(Canvas canvas) 
    { 
     if(grid){ 
     // Find Screen size first 
     DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics(); 
     int screenWidth = metrics.widthPixels; 
     int screenHeight = (int) (metrics.heightPixels*0.9); 

     // Set paint options 
     paint.setAntiAlias(true); 
     paint.setStrokeWidth(3); 
     paint.setStyle(Paint.Style.STROKE); 
     paint.setColor(Color.argb(255, 255, 255, 255)); 

     canvas.drawLine((screenWidth/3)*2,0,(screenWidth/3)*2,screenHeight,paint); 
     canvas.drawLine((screenWidth/3),0,(screenWidth/3),screenHeight,paint); 
     canvas.drawLine(0,(screenHeight/3)*2,screenWidth,(screenHeight/3)*2,paint); 
     canvas.drawLine(0,(screenHeight/3),screenWidth,(screenHeight/3),paint); 
     } 
    } 

Sie müssen auch die folgende Zeile in dem Konstruktor Ihrer Kamera Vorschau Klasse hinzuzufügen:

this.setWillNotDraw(false); 
+0

Für diesen Fall Sie Ihre Farbe Optionen auf Ihrem Konstruktor festgelegt und einige Ressourcen sparen. Die Farbenoptionen sind konstant und die Methode onDraw() wird viele Male aufgerufen. – Oximer

3

Wenn Sie eine Overlay-Kameravorschau wünschen, müssen Sie Ihre eigene Kamera schreiben. Es ist ziemlich schwierig Thema in einer Antwort zu decken, aber hier ist ein Leitfaden, bekommen sollten Sie begonnen:

http://developer.android.com/guide/topics/media/camera.html#custom-camera

Sobald Sie Kamera haben arbeiten, nur XML-Layout Ihrer Kamera Aktivität bearbeiten. Mit RelativeLayout können Sie andere Ansichten (Schaltflächen, Bilder) über Ihre Vorschauoberfläche platzieren.

Hier ist ein Beispiel für ein XML-Layout, das mit der oben genannten Anleitung kompatibel ist. Die Vorschauoberfläche wird programmatisch erstellt und in FrameLayout eingefügt (mehr in der oben verlinkten Anleitung). ImageView wird über die Vorschauoberfläche gezeichnet.

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

    <FrameLayout 
    android:id="@+id/camera_preview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    /> 

    <ImageView 
    android:id="@+id/grid" 
    android:src="@drawable/your_grid_drawable" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    /> 

</RelativeLayout> 

Sie finden auch eine Aufnahmetaste platzieren und einen Raster-Schaltknopf, aber man sollte auf die Idee kommen, wie es aus dem obigen Beispiel zu tun. Fügen Sie RelativeView einfach weitere Elemente hinzu und positionieren Sie sie wie im normalen Layout.