当SurfaceView缩放时,Exoplayer视频不会缩放

时间:2015-05-13 02:28:49

标签: android exoplayer

我正在使用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();
        } 

mVideoViewSurfaceView,玩家可以SurfaceView来呈现内容。 SurfaceView正确缩放,但内容却没有。

问题:如何扩展SurfaceView及其内容?

4 个答案:

答案 0 :(得分:1)

最后,我找到了解决问题的方法。我使用TextureView代替SurfaceView,现在它完美无缺。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

如果你必须坚持使用SurfaceView,因为你正在使用第三方库或诸如此类的东西,解决方法是使用缩放动画缩小它,并在动画完成后,通过给出更新SurfaceView的布局框架缩放位置的正确大小和位置。它并不完美,但应该对那些别无选择的人有好处。

答案 3 :(得分:0)

您可以像这样使用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"/>