Android開發之使用VideoView實現視頻的橫屏播放、去除邊框,androidvideoview

來源:互聯網
上載者:User

Android開發之使用VideoView實現視頻的橫屏播放、去除邊框,androidvideoview

做項目需要播放一個引導視頻,本以為很簡單,結果動手時發現總有瑕疵,幸好有度娘,現把收穫總結如下:

一、實現視頻播放:

註明我這裡要播放的是Android項目中的資源檔,而不是訪問SD卡播放視頻。

1.先把要播放的視頻放到res/raw目錄下

2.視頻格式必須是Android支援的格式(3gp,mp4,wmv),據說swf不支援,暫未試過。並且視頻檔案命名不能有大寫字母,必須是小寫字母、數字或底線。

3.布局檔案中添加VideoView組件

4.建立個String類型對象儲存uri

5.調用VideoView的setVideoURI方法設定URI,參數為上面的uri

6.調用start()方法播放。

代碼如下:

布局檔案中添加:

<VideoView            android:id="@+id/video"            android:layout_width="match_parent"            android:layout_height="match_parent" />
Activity中設定:

private void playVideo() {video = (VideoView) findViewById(R.id.video);String uri = "android.resource://" + getPackageName() + "/" + R.raw.guide;video.setVideoURI(Uri.parse(uri));video.start();}


以上代碼實現了視頻的播放,但視頻並沒有按我們想的橫屏、全屏播放,所以需要第二步:

二、視頻全屏播放(去除底部出現的邊框):

想要對VideoView進行參數配置,就需要用到setLayoutParams方法。但是查看API我們可以看到VideoView並沒有這個方法,怎麼辦呢?

我們需要在布局檔案中的VideoView組件外包裹一個布局,我這裡用的是RelativeLayout,,其他的應該也可以:

<RelativeLayout        android:layout_width="match_parent"        android:layout_height="match_parent" >        <VideoView            android:id="@+id/video"            android:layout_width="match_parent"            android:layout_height="match_parent" />            </RelativeLayout>

添加後,就可以進行參數配置:

String uri = "android.resource://" + getPackageName() + "/" + R.raw.guide;video.setVideoURI(Uri.parse(uri));RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT,RelativeLayout.LayoutParams.FILL_PARENT);layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);layoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);video.setLayoutParams(layoutParams);video.start();
那四個addRule方法將邊框都消除,LayoutParams構造方法實現全屏。


完成上一步後運行,發現雖然視頻可以全屏,但顯示完全失真,不是我們想要的效果,如果手機開啟了自動轉屏,我們會發現將手機轉到橫屏後視頻的播放效果才是我們想要的。如何讓視頻在播放時就自動轉到橫屏播放呢?

三、設定視頻橫屏播放:

每個Activity是否允許轉屏,當前顯示方式是橫屏還是豎屏,都可以通過在AndroidManifest.xml檔案中設定:

比如我當前播放視頻時在Splash這個activity中播放,就可以在她的標籤中添加screenOrientation屬性控制螢幕方向(landscape是橫向,portrait是縱向)

<activity             android:name="com.zsx.activity.Splash"            android:label="@string/app_name"            android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"            android:screenOrientation="landscape">                   </activity>

有些時候我們希望某些頁面只有豎屏或者橫屏,擔心轉屏後布局會變難看,就可以在響應的activity中設定這個屬性,使用者怎麼轉屏都不會再變了!哈哈

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.