Antialiasing en TextureView
He intentado reproducir el mismo video con un SurfaceView
y un TextureView
y noté que la imagen renderizada con el TextureView
es más alias (menos "suave") que con el SurfaceView
.
Cuál es la razón para esto ? ¿Hay alguna manera de configurar la representación de TextureView
para verse mejor?
- Android: Recuperando el enfoque con SurfaceView
- SurfaceCreated no se llama
- Escala de un SurfaceView fijo para rellenar verticalmente y mantener la relación de aspecto
- Android: ¿Es posible tener dos superficies superpuestas?
- ¿Cuándo se produce SurfaceDestroyed ()
El TextureView
se utiliza de la siguiente manera:
TextureView textureView = new TextureView(this); textureView.setSurfaceTextureListener(new SurfaceTextureListener() { @Override public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width, int height) { Log.i("test", "onSurfaceTextureAvailable()"); MediaPlayer player = MediaPlayer.create(TestActivity.this, Uri.parse(VIDEO_URL)); Surface surface = new Surface(surfaceTexture); player.setSurface(surface); player.start(); } @Override public void onSurfaceTextureUpdated(SurfaceTexture surface) { Log.i("test", "onSurfaceTextureUpdated()"); } @Override public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) { Log.i("test", "onSurfaceTextureSizeChanged()"); } @Override public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { Log.i("test", "onSurfaceTextureDestroyed()"); return false; } }); setContentView(textureView);
Y para el SurfaceView
:
SurfaceView surfaceView = new SurfaceView(this); surfaceView.getHolder().addCallback(new Callback() { @Override public void surfaceCreated(SurfaceHolder holder) { Log.i("test", "surfaceCreated()"); } @Override public void surfaceDestroyed(SurfaceHolder holder) { Log.i("test", "surfaceDestroyed()"); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { Log.i("test", "surfaceChanged()"); MediaPlayer player = MediaPlayer.create(TestActivity.this, Uri.parse(VIDEO_URL)); player.setSurface(holder.getSurface()); player.start(); } }); setContentView(surfaceView);
- Android: ¿Cómo puedo configurar mi superficie personalizada con una relación de tamaño fijo en xml?
- Cómo dibujar una superposición en un SurfaceView utilizado por la cámara en Android?
- El EditText de Android se oculta cuando se muestra el teclado virtual y está involucrado SurfaceView
- ¿Cómo se relacionan las devoluciones de llamada de SurfaceHolder con el ciclo de vida de la actividad?
- Android ANR SurfaceView
- Null Canvas en SurfaceView Thread, a pesar de detener Thread en surfaceDestroyed () - sólo en Android 4 / ICS
- ERROR: createWindowSurface falló EGL_BAD_ALLOC
- SurfaceView y la clase de inflado de errores
Bueno, parece que la aplicación de una escala (que no sea 1) en el TextureView hace el efecto de "suavizado" que estoy buscando.
textureView.setScaleX(1.00001f);
Eso suena como un hack extraño … pero funciona. Sería interesante desenterrar lo que se hace en la escala que cambia el aspecto de renderizado …
- Android: imeOption & imeActionLable no cambia de teclado Ingrese la etiqueta con Next
- Aumenta automáticamente un valor en Firebase