2013-09-22 10 views
6

Sadece TextureView öğesinin arka plan rengini değiştirmeye çalışıyorum. Bu rengin yarı saydam kamera önizlemesinde görülmesini beklerdim. Bazı nedenlerden dolayı değil. Kamera önizlemesini tamamen onSurfaceTextureAvailable öğesinden kaldırırsam görünüm beyaz kalır (veya görünmez). Herhangi bir fikir? Bazen kamera önizleme içeren bir TextureView kutusu elde etmeye çalışıyorum ve diğer zamanlarda benim seçtiğim düz bir renk. Teşekkürler. Eğer TextureView arka plan rengini alakasız olacak bunu yaparken,TextureView setBackgroundColor çalışmıyor

textureView.setOpaque(false); 

ama:

import android.graphics.Color; 
import android.graphics.SurfaceTexture; 
import android.hardware.Camera; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.Surface; 
import android.view.TextureView; 
import android.widget.FrameLayout; 
import android.widget.RelativeLayout; 

import java.io.IOException; 

public class MainActivity extends Activity { 

    private TextureView mTextureView; 
    FrameLayout screenFrame; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     screenFrame = (FrameLayout)findViewById(R.id.screenFrame); 

     setVideoScreens(); 
    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    private void setVideoScreens() 
    { 
     final LiveCameraActivity livecam = new LiveCameraActivity(); 

     mTextureView = new TextureView(this); 
     mTextureView.setSurfaceTextureListener(livecam); 

     FrameLayout mainFrame = (FrameLayout)findViewById(R.id.mainFrame); 
     mainFrame.addView(mTextureView); 

     int width = 640; 
     int height = 480; 

     mTextureView.setLayoutParams(new FrameLayout.LayoutParams(
       width, height)); 
     mTextureView.setY(200); 
     mTextureView.setX(200); 
     mTextureView.setBackgroundColor(Color.BLUE); 
     mTextureView.setAlpha(.5f); 
    } 

    public class LiveCameraActivity extends Activity implements TextureView.SurfaceTextureListener 
    { 
     private Camera mCamera; 

     protected void onCreate(Bundle savedInstanceState) 
     { 
      super.onCreate(savedInstanceState); 
     } 


     public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) 
     { 
      mCamera = Camera.open(); 

      try 
      { 
       mCamera.setPreviewTexture(surface); 
       mCamera.startPreview(); 
      } 
      catch (IOException ioe) 
      { 
       // Something bad happened 
      } 
     } 

     public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) 
     { 
      // Ignored, Camera does all the work for us 
     } 

     public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) 
     { 
      mCamera.stopPreview(); 
      mCamera.release(); 
      return true; 
     } 

     public void onSurfaceTextureUpdated(SurfaceTexture surface) 
     { 
      // Invoked every time there's a new Camera preview frame 

     } 
    } 
} 
+0

Lütfen doğru bir şekilde yardımcı olabilmemiz için eksiksiz kodu paylaşın. –

+0

Bunu düzeltdiniz mi? – sandrstar

+0

aynı sorun. Herhangi bir çözüm? – Alexis

cevap

1

Çözümümün false opak ayarlamak oldu. Yani - TextureView'u FrameLayout içine koyup arka plan rengini ayarladım. Bunu yaptığınızda, FrameLayout arka plan rengi, arkada gördüğünüz renktir veya TextureView boşsa.

İlgili konular