android - TextureView 中的抗锯齿

标签 android surfaceview

我尝试使用 SurfaceViewTextureView 播放相同的视频,并注意到使用 TextureView 渲染的图像更混叠(不如 SurfaceView 更“流畅”。

这是什么原因?有什么方法可以配置 TextureView 的渲染看起来更好吗?

TextureView 是这样使用的:

    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);

对于 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);

最佳答案

好吧,似乎在 TextureView 上应用缩放比例(不是 1)可以实现我正在寻找的“平滑”效果。

textureView.setScaleX(1.00001f);

这听起来像是一个奇怪的技巧……但它确实有效。挖掘在改变渲染方面的缩放中所做的事情会很有趣......

关于android - TextureView 中的抗锯齿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12474260/

相关文章:

java - Android:在 SurfaceViev 上移动多个位图

android - 与 Gradle 实验插件一起使用的 Gradle 版本

android - 尝试在 Android 手机上使用 RenderScript 支持库模糊图像时出错

android - 访问 Android 相机框架而不进行预览

android - 想要在 android 相机中一次捕获多个图像

Android SurfaceView 错误

android - CookieManager 是抽象的,无法实例化。为什么?

java - Google VR View - 头部追踪

android - 内存异常会导致 NullPointerException 吗?

android - 如何为 Android SurfaceView 找到最佳的 PixelFormat