通过ExoPlayer以编程方式使用TextureView?

问题描述 投票:0回答:1

我以编程方式创建一个

PlayerView

PlayerView playerView = new PlayerView(context);

我希望它使用

SurfaceView
,而不是使用
TextureView
。在文档中,它说要执行以下操作:

<com.google.android.exoplayer2.ui.PlayerView
     android:id="@+id/player_view"
     app:surface_type="texture_view"
     android:layout_width="match_parent"
     android:layout_height="match_parent"/>

但是,就像我说的,我正在以编程方式创建它,那么我如何将其设置为在我的情况下使用

TextureView

android surfaceview exoplayer exoplayer2.x textureview
1个回答
2
投票

第 1 步:在

res/xml/player_view.xml

中创建 XML 文件
<androidx.media3.ui.PlayerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:surface_type="texture_view"
/>

第2步:创建一个AttributeSet,引用xml资源

val xmlAttributes = context.resources.getXml(R.xml.player_view).let {
    try {
        it.next()
        it.nextTag()
    } catch (e: Exception) {
        // do something, log, whatever
    }
    Xml.asAttributeSet(it)
}

第 3 步:将其传递到构造函数中

PlayerView(context, xmlAttributes)

我想指出,这很愚蠢,你不应该这样做,我讨厌我不得不这样做,有时我讨厌 Exoplayer...(大多数时候)

© www.soinside.com 2019 - 2024. All rights reserved.