2015-05-13 94 views
1

我使用Exoplayer庫創建視頻播放器應用程序。我正在嘗試製作像YouTube一樣的功能:將視頻播放器拖到底部,然後我將縮放到較小的尺寸。爲此,我使用了ViewDragHelper。當玩家被拖着,我它的規模大小是這樣的:當SurfaceView縮放時,Exoplayer視頻不會縮放

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及其內容呢?

回答

1

最後,我找到了我的問題的解決方案。我用TextureView代替SurfaceView,現在它工作得很完美。

+0

你能解釋一下你如何應用你的解決方案嗎?我試圖做同樣的事情(像播放器一樣的YouTube播放器),但我無法理解我在哪裏設置TextureView選項。此外,如果你可以分享你的工作,我會非常感激。 – Shadow

0

作爲答案有點晚,但另一種解決方案是用SurfaceLayout包裝SurfaceView。然後修改佈局參數或FrameLayout的正確屬性,而不是直接修改SurfaceView。

注意:也可以使用自定義佈局,並且在某些情況下可能是更好的方法。

0

如果因爲使用第三方庫或者其他方法而必須堅持使用SurfaceView,則解決方法是使用縮放動畫將其縮小並在動畫完成後,通過給予更新SurfaceView的佈局空間縮放位置的正確尺寸和位置。這並不完美,但應該對那些沒有其他選擇的人有好處。