android - 在具有视频纵横比的纹理 View 上播放视频

标签 android textureview

我正在使用纹理 View 从表面上的服务器播放视频,但它会拉伸(stretch)视频并且无法保持视频的纵横比。但是,我希望在 vine 应用程序或 instagram 应用程序中按照视频保持纵横比。

最佳答案

您可以更改 View 的大小(使用自定义 FrameLayout),或使用 TextureView 矩阵更改纹理的呈现方式。

两者的例子都可以在 Grafika 中找到. “播放视频 (TextureView)” Activity 演示了配置矩阵以匹配视频的纵横比。参见adjustAspectRatio()方法,其核心是:

    Matrix txform = new Matrix();
    mTextureView.getTransform(txform);
    txform.setScale((float) newWidth / viewWidth, (float) newHeight / viewHeight);
    txform.postTranslate(xoff, yoff);
    mTextureView.setTransform(txform);

请注意它居中并缩放视频。

关于android - 在具有视频纵横比的纹理 View 上播放视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27418191/

相关文章:

android - 如何在android.view.TextureView中绘制opengl Cube

android - Android HTTP 上的 EHOSTUNREACH(无主机路由)

java - 通知数据集更改();不清爽

java - 如何在Java中获取您所在时区的当前时间

android - TextureView setBackgroundColor 不工作

android - 与 MediaPlayer 一起使用后如何清除 SurfaceTexture?

java - 将方法从 mainActivity 移动到类文件

java - 将包传递给设置为单任务的 Activity

屏幕旋转时 onSurfaceTextureSizeChanged 的​​ Android 错误值

Android SurfaceTexture.detachFromGLContext 在 detachFromGLContext 期间出错