Android移動開發(fā)基礎(chǔ)教程-第9章--綜合實戰(zhàn)課件_第1頁
Android移動開發(fā)基礎(chǔ)教程-第9章--綜合實戰(zhàn)課件_第2頁
Android移動開發(fā)基礎(chǔ)教程-第9章--綜合實戰(zhàn)課件_第3頁
Android移動開發(fā)基礎(chǔ)教程-第9章--綜合實戰(zhàn)課件_第4頁
Android移動開發(fā)基礎(chǔ)教程-第9章--綜合實戰(zhàn)課件_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Android 移動開發(fā)基礎(chǔ)教程第9章 綜合實戰(zhàn) 在前面幾章中我們介紹了 Android 開發(fā)的一些基礎(chǔ)知識,在本章我們將綜合運用之前的一些知識實現(xiàn)一個常見的視頻播放器,使其可以播放本地的視頻資源。9.1 視頻播放器 對于一個視頻播放器來說,常見的功能有進度條顯示和拖動功能,用戶拖動進度條可以快進和快退,在播放的過程中,進度條應(yīng)該不斷地更新播放的時間和顯示視頻總時長,同時還需要提供暫停/繼續(xù)播放功能。9.1.1 界面布局 界面主體部分需要添加一個 SurfaceView 用于顯示播放的內(nèi)容,然后需要顯示進度條和播控按鈕。 為了可以更靈活地布局這些組件,布局方式可以采用 RelativeLayo

2、ut。 在布局文件中,外層的視圖容器為相對布局方式,其中添加了一個SurfaceView 視圖,layout_width和 layout_height 的值都為 match_parent,使得播放內(nèi)容占滿整個畫面。其后定義了一個垂直的線性布局,用于顯示進度條和播控按鈕等內(nèi)容,通過設(shè)置 android:layout_ alignBottom=id/svew使得該布局與 SurfaceView 的底部對齊,設(shè)置 android:alpha 屬性讓其具有一定的透明度。在該布局中,首先定義了一個 SeekBar 用于顯示播放的進度和拖動條,然后定義了一個水平的線性布局用于顯示播控按鈕和播放時間。播控按

3、鈕通過設(shè)置 android:clickable= true使得該圖片可以被單擊,用于實現(xiàn)播放/暫停功能。 頁面具體效果如圖 9.1 所示。圖 9.1 頁面布局9.1.2 初始化 視頻播放需要指定視頻所在的路徑或 URL,本章我們基于第 5 章小練習(xí)的文件瀏覽器獲取視頻路徑,在文件瀏覽的過程中,如果是文件夾,則進入下級目錄,如果是視頻文件,則調(diào)用本章的視頻播放器,并將視頻的路徑作為參數(shù)傳入,其他文件則返回。 在組件的初始化函數(shù) initWidget()方法中,首先通過findViewById()方法獲取各個控件,然后為進度的顯示和進度條的位置設(shè)置初始值 。通過 setOnClickListene

4、r方法為播控圖片設(shè)置監(jiān)聽事件。 9.1.3 播控和進度控制 在視頻播放中,暫停、繼續(xù)播放和進度拖動是常見的操作。播控是通過監(jiān)聽圖片的單擊事件實現(xiàn)的。 在圖片按鈕被單擊后,首先判斷當(dāng)前視頻的狀態(tài),如果是播放狀態(tài),則調(diào)用 MediaPlayer 類 的 pause()方法暫停播放,同時更換播控的圖片,顯示播放按鈕。如果是暫停狀態(tài),則調(diào)用MediaPlayer 類的 start()方法繼續(xù)播放,同時更換播控的圖片,顯示暫停按鈕。播放和暫停頁面如圖 9.2 和圖 9.3 所示。圖 9.2 播放狀態(tài)圖 9.3 暫停狀態(tài) 拖動進度條進行快進和快退是通過監(jiān)聽 OnSeekBarChangeListener

5、事件實現(xiàn)的,首先在代碼中通過setOnSeekBarChangeListener()為拖動條設(shè)置事件監(jiān)聽,然后重寫 OnseekBarChangeListener 的回調(diào)函數(shù),在不同的事件觸發(fā)下執(zhí)行不同的動作。 在 OnseekBarChangeListener 的回調(diào)函數(shù)中,onProgressChanged 在拖動條發(fā)生改變時回調(diào),并回調(diào)滑塊當(dāng)前的位置,在其中可以根據(jù)滑塊的位置計算需要定位的視頻位置,然后調(diào)用 MediaPlayer 的seekTo()方法跳轉(zhuǎn)到對應(yīng)的位置。 onStartTrackingTouch 在拖動條被觸摸時回調(diào),其中可以調(diào)用MediaPlayer 的 pause(

6、)方法暫停視頻的播放。 onStopTrackingTouch 在拖動條被釋放時回調(diào),此時快進或快退已經(jīng)完成,調(diào)用 MediaPlayer 的 start()方法繼續(xù)播放。 在播放的過程中,需要根據(jù)當(dāng)前視頻播放的時間實時更新進度和時間顯示的進度,可以通過Handler 和 Runnable 任務(wù)實現(xiàn)。9.1.4 橫屏設(shè)置 在視頻播放中,一般會自動切換到橫屏顯示,即視頻的寬比高大,這可以在聲明 Activity 時通過指定 android:screenOrientation 屬性實現(xiàn)。 android:screenOrientation 屬性支持 3 種取值,landscape強制橫屏顯示,portrait強制豎屏顯示,默認值為unspecified,顯示方向跟隨系統(tǒng)屏幕旋轉(zhuǎn)的方向。9.2 本章小結(jié) 本章我們分模塊介紹了一個視頻播放頁面的實現(xiàn),首先介紹了界面的布局方式,可以看到相對布局和線性布局在實際開發(fā)中的靈活組合和應(yīng)用。然后介紹了控件和播放器的初始化,回顧了通過 Intent進行數(shù)據(jù)傳遞的操作。后面通過對播控和進度控制的分析,展示了 Android 中基于回調(diào)的事件監(jiān)聽機制和使用 Handler 實現(xiàn)在線程中異步刷新 UI 頁面的操作。最后通過將 Activity 設(shè)置成橫屏顯示,熟悉了在 AndroidMainfest.x

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論