SORU
29 Mayıs 2010, CUMARTESİ


Nasıl bir SurfaceView Android Kamera tarafından kullanılan bir kaplama çizmek için?

SurfaceView a Camera önizleme çizen basit bir program var. Ne yapmaya çalışıyorum kullanıyor onPreviewFrame yöntem, hangi çağrılır her zaman yeni bir çerçeve çizilir içine SurfaceView, amacıyla yürütmek invalidate yöntemi bir anlam çağırmak onDraw yöntem. Aslında onDraw yöntemi çağrılan, ama orada hiçbir şey (kamera önizleme çizmeye çalışıyorum metni üzerine sanırım) yazdırılıyor.

Bu var SurfaceView alt sürüm basitleştirmek.:

public class Superficie extends SurfaceView implements SurfaceHolder.Callback {
 SurfaceHolder mHolder;
 public Camera camera;
 Superficie(Context context) {
  super(context);
  mHolder = getHolder();
  mHolder.addCallback(this);
  mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
 }
 public void surfaceCreated(final SurfaceHolder holder) {
  camera = Camera.open();
  try {
   camera.setPreviewDisplay(holder);
   camera.setPreviewCallback(new PreviewCallback() {
    public void onPreviewFrame(byte[] data, Camera arg1) {
     invalidar();
    }
   });
  } catch (IOException e) {}
 }
 public void invalidar(){
  invalidate();
 }
 public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
  Camera.Parameters parameters = camera.getParameters();
  parameters.setPreviewSize(w, h);
  camera.setParameters(parameters);
  camera.startPreview();
 }
 @Override
 public void draw(Canvas canvas) {
  super.draw(canvas);
  // nothing gets drawn :(
  Paint p = new Paint(Color.RED);
  canvas.drawText("PREVIEW", canvas.getWidth() / 2,
    canvas.getHeight() / 2, p);
 }
}

CEVAP
29 Mayıs 2010, CUMARTESİ


SurfaceView muhtemelen bu konuda View düzenli gibi çalışmıyor.

Bunun yerine, aşağıdakilerden birini yapın:

  1. ** 12 içine sok. FrameLayout RelativeLayout düzeninizi de beri dosya XML, bu aletler istifleme izin ver Z ekseni
  2. Hareket çizim mantığı ayrı bir özel View sınıfa
  3. Özel Görünümü bir örneğini ekleyin düzen XML için sınıf olarak bir dosya FrameLayout ya çocuk RelativeLayout ama görünür SurfaceView sonra

Bu View Özel Sınıf SurfaceView üzerinde yüzer gibi görünmesine neden olur.

Kat SurfaceView bir video oynatmak için kullanılan yukarıda panelleri pop-up See here for a sample project.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • lilstevie89

    lilstevie89

    25 Mart 2011
  • Māris Zaharovs

    Māris Zahar

    28 Mayıs 2008
  • Tomas N

    Tomas N

    14 Kasım 2010