如何在 TextureView 上添加视图

How add view over TextureView

我需要在播放视频的 TextureView 上添加 View 我以前用过 VideoView,完全没问题,但我的动画有问题,所以我把它改成了 TextureView,现在我不能在上面放任何 View! 似乎 Textureview 将覆盖所有视图 这是我的 xml 布局:

  <FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/frmview"
    >

    <com.my.app.TextureVideoView
        android:id="@+id/vv_play"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:alpha="0.0" />

    <ImageView
        android:id="@+id/iv_play"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:srcCompat="@drawable/app_ic" />
</FrameLayout>

如何将 View 放在正在播放视频的 TextureView 上?

最后,在初始化 TextureView 和播放视频后,我不得不以编程方式将其添加到我的 FrameLayout 中!

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);

    mPreview = (TextureView) findViewById(R.id.vv_play);
    mPreview.setSurfaceTextureListener(this);
    FrameLayout frameLayout = (FrameLayout) findViewById(R.id.frmview);

    ImageView img = new ImageView(this);
    img.setImageResource(R.drawable.app_ic);
    frameLayout.addView(img);
}

或许你可以试试这个 api 的 TextureView:

TextureView.setOpaque(假);

TextureView 不断更新其内容(例如播放视频)将始终透支放在其顶部的任何 View 内容(例如 TextureView 和其他一些 View 放入 FrameLayout 容器内)。

我发现处理该问题的最佳解决方案是在另一个 Window 中显示顶部 View,该 Window 位于包含 TextureViewWindow 之上,例如PopupWindow 可用于此。