Superponiendo un lienzo en la parte superior de una vista de superficie, Flashes
En mi archivo XML, tengo una clase VideoView y VideoOverlay. El videoOverlay es transparente y tiene dibujos en él por lo que parece que los dibujos están en el videoView.
<VideoView android:id="@+id/videoplayer" android:layout_width="fill_parent" android:layout_height="wrap_content"> </VideoView> <com.example.example.VideoOverlay android:id="@+id/videooverlay" android:layout_width="fill_parent" android:layout_height="wrap_content" />
Aquí está la clase VideoOverlay
- No se pueden obtener eventos en mi libgdx Actor
- Obtener ultrasonido de android usando frecuencia
- Cómo evitar la inyección XML como XML Bomba y ataque XXE
- OpenCV para Android: Referencia directa ilícita
- ¿Por qué estoy recibiendo una advertencia sin marcar?
package com.example.example; import java.util.ArrayList; import java.util.Random; import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.PixelFormat; import android.util.AttributeSet; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.view.View.OnTouchListener; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.MediaController; import android.widget.ProgressBar; import android.widget.Toast; import android.widget.VideoView; import android.support.v4.app.ActionBarDrawerToggle; import android.support.v4.app.NavUtils; import android.support.v4.widget.DrawerLayout; public class VideoOverlay extends SurfaceView implements Runnable { Thread thread = null; SurfaceHolder surfaceHolder; volatile boolean running = false; private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); Random random; public void onResumeMySurfaceView(){ running = true; thread = new Thread(this); thread.start(); } public void onPauseMySurfaceView(){ boolean retry = true; running = false; while(retry){ try { thread.join(); retry = false; } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public VideoOverlay(Context context) { super(context); surfaceHolder = getHolder(); random = new Random(); this.setZOrderMediaOverlay(true); this.setZOrderOnTop(true); surfaceHolder.setFormat(PixelFormat.TRANSLUCENT); } public VideoOverlay(Context context, AttributeSet attrs) { super(context, attrs); surfaceHolder = getHolder(); random = new Random(); this.setZOrderMediaOverlay(true); this.setZOrderOnTop(true); surfaceHolder.setFormat(PixelFormat.TRANSLUCENT); } public VideoOverlay(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); surfaceHolder = getHolder(); random = new Random(); this.setZOrderMediaOverlay(true); this.setZOrderOnTop(true); surfaceHolder.setFormat(PixelFormat.TRANSLUCENT); } // Other stuff @Override public void run() { // TODO Auto-generated method stub while(running){ if(surfaceHolder.getSurface().isValid()){ Canvas canvas = surfaceHolder.lockCanvas(); //... actual drawing on canvas paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(3); int w = canvas.getWidth(); int h = canvas.getHeight(); int x = random.nextInt(w-1); int y = random.nextInt(h-1); int r = random.nextInt(255); int g = random.nextInt(255); int b = random.nextInt(255); paint.setColor(0xff000000 + (r << 16) + (g << 8) + b); canvas.drawPoint(x, y, paint); surfaceHolder.unlockCanvasAndPost(canvas); } } } }
Tengo dos problemas ahora.
-
Los puntos que se dibujan, parpadean en el dispositivo. Parpadean
-
También utilizo un cajón de navegación en mi aplicación. Cuando abro el cajón de navegación, el lienzo de dibujo se superpone en el cajón de navegación!
Cualquier ayuda o consejo con cualquiera de estas cuestiones sería muy apreciado!
- Excluir recursos predefinidos en el archivo apk
- Retrofit 2 Callback onResponse en el subproceso de fondo
- Cómo obtener balizas visibles desde el método RegionBootstrap AltBeacon
- Cómo interactuar con diferentes navegadores de Android (obtener url)
- Cómo validar String usando expresión regular en java
- Obtener OnActivityResult al volver de startActivityForResult en Adapter
- Android - java - contar palabras
- ¿Cómo obtener el año actual en android?
- ¿Cómo hacer que el daemon nativo de Unix / Linux funcione en Android?
- Android reemplaza fragmento o inicia nueva actividad con fragmento