【问题标题】:Exoplayer video does not scale when SurfaceView is scaled缩放 SurfaceView 时,Exoplayer 视频不缩放
【发布时间】:2015-07-24 03:20:00
【问题描述】:

我正在使用Exoplayer 库来创建视频播放器应用程序。我正在尝试制作像 youtube 这样的功能:将视频播放器拖到底部,我将被缩放到更小的尺寸。为此,我使用了ViewDragHelper。当播放器拖动时,我将其缩放如下:

public void onViewPositionChanged(View changedView, int left, int top, int dx, int dy) {
            mTop = top;

            mDragOffset = (float) top / mDragRange;

            mVideoView.setPivotX(mHeaderView.getWidth());
            mVideoView.setPivotY(mHeaderView.getHeight());
            mVideoView.setScaleX(1 - mDragOffset / 2);
            mVideoView.setScaleY(1 - mDragOffset / 2);

            mDescView.setAlpha(1 - mDragOffset);
            requestLayout();
        } 

mVideoView 是一个SurfaceView,播放器使用SurfaceView 来渲染它的内容。 SurfaceView 可正确缩放,但其内容不正确。

问题:如何缩放 SurfaceView 及其内容?

【问题讨论】:

    标签: android exoplayer


    【解决方案1】:

    您可以像这样使用TextureView 而不是SurfaceView

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

    【讨论】:

      【解决方案2】:

      如果您因为使用第三方库或诸如此类的东西而不得不坚持使用 SurfaceView,则解决方法是使用缩放动画将其缩小,并且在动画完成后,通过提供更新 SurfaceView 的布局参数缩放位置所在的正确大小和位置。它并不完美,但应该适合那些别无选择的人。

      【讨论】:

        【解决方案3】:

        答案有点晚了,但另一种解决方案是用 FrameLayout 包装 SurfaceView。然后修改FrameLayout的布局参数或者正确的properites,而不是直接修改SurfaceView。

        注意:也可以使用自定义布局,在某些情况下可能是更好的方法。

        【讨论】:

          【解决方案4】:

          最后,我为我的问题找到了解决方案。我用TextureView 代替SurfaceView,现在效果很好。

          【讨论】:

          • 您能解释一下您是如何应用您的解决方案的吗?我正在尝试做完全相同的事情(YouTube 播放器之类的播放器),但我不明白在哪里设置 TextureView 选项。另外,如果您能分享您的作品,我将不胜感激。
          • 如何为 exoplayer 的父视图设置动画?如果我添加 "surface_type" = "texture_view" 完美工作。但是设置默认的“surface_view”意味着不适用于动画。
          • 嗨,没有纹理视图,如何为 exoplayer 父视图设置动画?。
          猜你喜欢
          • 2014-11-05
          • 2020-08-23
          • 2018-08-05
          • 1970-01-01
          • 2018-10-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多