2013-12-16 73 views
0

我正在嘗試使一個VideoView工作在cocos2d-x表面視圖之上。我現在能夠加載並使用下面的代碼片段播放視頻:在Cocos2dxGLSurfaceView之上添加一個LinearLayout

當初始化類:

// Create the LinearLayout that will contain our VideoView 
_videoLayout = new LinearLayout(_activity); 
_videoLayout.setId(VIDEO_VIEW_ID); 
_videoLayout.setGravity(Gravity.CENTER); 
_videoLayout.setBackgroundColor(Color.BLACK); 
_videoLayout.setOrientation(LinearLayout.VERTICAL); 
_videoLayout.bringToFront(); 

// Add the LinearLayout to the current Activity 
_activity = MyGame.getCocosActivity(); 
_activity.addContentView(_videoLayout, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 

當播放視頻:

// When the video is ready to be played, create a VideoView 
VideoView videoView = new VideoView(Cocos2dxActivity.getContext()); 
videoView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 

// Add it to the _videoLayout object 
LinearLayout layout = (LinearLayout) activity.findViewById(VIDEO_VIEW_ID); 
layout.setVisibility(View.VISIBLE); 
layout.addView(videoView); 

// Play the video 
videoView.setVideoURI(Uri.parse(path)); 
videoView.requestFocus(); 
videoView.start(); 

上面的代碼產生了以下結果:

  • 播放視頻並正常聽到聲音。
  • 視頻水平和垂直居中。
  • 有時候,視頻在當前Cocos2d-x視圖下播放。再次播放它將使它在上面播放。
  • 視頻不是全屏。它只在屏幕上覆蓋足夠的空間來顯示視頻。

什麼我的預期結果是:

  • 視頻播放上的cocos2d-x觀點之上,在任何時候。
  • 視頻佔用了整個屏幕,仍然保持縱橫比,但邊上有黑色邊框。

我似乎無法弄清楚如何完成這兩個。任何幫助?我對Android Framework不太瞭解,請耐心等待。

注意:我不想使用XML來創建佈局。

回答

0

爲什麼你不想使用XML佈局?他們是爲此而設計的,在你掌握了它們之後,讓你的生活變得更容易。

無論如何:在我的情況下,我在一個RelativeLayout上添加了我的VideoView,並將它的CenterHorizo​​ntal和CenterVertical參數設置爲true。寬度和高度設置爲wrap_content。這是用XML完成的,所以我無法向您提供與Java相當的內容。

另請嘗試在您的佈局上調用bringToFront()以確保視頻位於CocosView之上。

+0

cocos2d-x庫不使用XML佈局。我會嘗試使用RelativeLayout,並在完成後再回來。 – alxcyl

+0

的確如此。但它不會阻止你添加一個:) – Losiowaty

相關問題