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頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Android移動開發(fā)

基礎(chǔ)教程Android移動開發(fā)

基礎(chǔ)教程1第9章綜合實戰(zhàn)第9章綜合實戰(zhàn)在前面幾章中我們介紹了Android開發(fā)的一些基礎(chǔ)知識,在本章我們將綜合運用之前的一些知識實現(xiàn)一個常見的視頻播放器,使其可以播放本地的視頻資源。在前面幾章中我們介紹了Android開發(fā)的一些基礎(chǔ)知識39.1視頻播放器9.1視頻播放器

對于一個視頻播放器來說,常見的功能有進度條顯示和拖動功能,用戶拖動進度條可以快進和快退,在播放的過程中,進度條應(yīng)該不斷地更新播放的時間和顯示視頻總時長,同時還需要提供暫停/繼續(xù)播放功能。9.1.1界面布局界面主體部分需要添加一個SurfaceView用于顯示播放的內(nèi)容,然后需要顯示進度條和播控按鈕。為了可以更靈活地布局這些組件,布局方式可以采用RelativeLayout。對于一個視頻播放器來說,常見的功能有進度條顯示5

在布局文件中,外層的視圖容器為相對布局方式,其中添加了一個SurfaceView視圖,layout_width和layout_height的值都為match_parent,使得播放內(nèi)容占滿整個畫面。其后定義了一個垂直的線性布局,用于顯示進度條和播控按鈕等內(nèi)容,通過設(shè)置android:layout_alignBottom="@id/svew"使得該布局與SurfaceView的底部對齊,設(shè)置android:alpha屬性讓其具有一定的透明度。在該布局中,首先定義了一個SeekBar用于顯示播放的進度和拖動條,然后定義了一個水平的線性布局用于顯示播控按鈕和播放時間。播控按鈕通過設(shè)置android:clickable="true"使得該圖片可以被單擊,用于實現(xiàn)播放/暫停功能。頁面具體效果如圖9.1所示。在布局文件中,外層的視圖容器為相對布局方式,其中添加6圖9.1頁面布局圖9.1頁面布局79.1.2初始化

視頻播放需要指定視頻所在的路徑或URL,本章我們基于第5章小練習的文件瀏覽器獲取視頻路徑,在文件瀏覽的過程中,如果是文件夾,則進入下級目錄,如果是視頻文件,則調(diào)用本章的視頻播放器,并將視頻的路徑作為參數(shù)傳入,其他文件則返回。

在組件的初始化函數(shù)initWidget()方法中,首先通過findViewById()方法獲取各個控件,然后為進度的顯示和進度條的位置設(shè)置初始值。通過setOnClickListener方法為播控圖片設(shè)置監(jiān)聽事件。

9.1.2初始化89.1.3播控和進度控制在視頻播放中,暫停、繼續(xù)播放和進度拖動是常見的操作。播控是通過監(jiān)聽圖片的單擊事件實現(xiàn)的。在圖片按鈕被單擊后,首先判斷當前視頻的狀態(tài),如果是播放狀態(tài),則調(diào)用MediaPlayer類的pause()方法暫停播放,同時更換播控的圖片,顯示播放按鈕。如果是暫停狀態(tài),則調(diào)用MediaPlayer類的start()方法繼續(xù)播放,同時更換播控的圖片,顯示暫停按鈕。播放和暫停頁面如圖9.2和圖9.3所示。9.1.3播控和進度控制9圖9.2播放狀態(tài)圖9.2播放狀態(tài)10圖9.3暫停狀態(tài)圖9.3暫停狀態(tài)11

拖動進度條進行快進和快退是通過監(jiān)聽OnSeekBarChangeListener事件實現(xiàn)的,首先在代碼中通過setOnSeekBarChangeListener()為拖動條設(shè)置事件監(jiān)聽,然后重寫OnseekBarChangeListener的回調(diào)函數(shù),在不同的事件觸發(fā)下執(zhí)行不同的動作。拖動進度條進行快進和快退是通過監(jiān)聽OnSeekBa12

在OnseekBarChangeListener的回調(diào)函數(shù)中,onProgressChanged在拖動條發(fā)生改變時回調(diào),并回調(diào)滑塊當前的位置,在其中可以根據(jù)滑塊的位置計算需要定位的視頻位置,然后調(diào)用MediaPlayer的seekTo()方法跳轉(zhuǎn)到對應(yīng)的位置。onStartTrackingTouch在拖動條被觸摸時回調(diào),其中可以調(diào)用MediaPlayer的pause()方法暫停視頻的播放。onStopTrackingTouch在拖動條被釋放時回調(diào),此時快進或快退已經(jīng)完成,調(diào)用MediaPlayer的start()方法繼續(xù)播放。在OnseekBarChangeListener13

在播放的過程中,需要根據(jù)當前視頻播放的時間實時更新進度和時間顯示的進度,可以通過Handler和Runnable任務(wù)實現(xiàn)。在播放的過程中,需要根據(jù)當前視頻播放的時間實時更新進149.1.4橫屏設(shè)置在視頻播放中,一般會自動切換到橫屏顯示,即視頻的寬比高大,這可以在聲明Activity時通過指定android:screenOrientation屬性實現(xiàn)。android:screenOrientation屬性支持3種取值,"landscape"強制橫屏顯示,"portrait"強制豎屏顯示,默認值為"unspecified",顯示方向跟隨系統(tǒng)屏幕旋轉(zhuǎn)的方向。9.1.4橫屏設(shè)置159.2本章小結(jié)

本章我們分模塊介紹了一個視頻播放頁面的實現(xiàn),首先介紹了界面的布局方式,可以看到相對布局和線性布局在實際開發(fā)中的靈活組合和應(yīng)用。然后介紹了控件和播放器的初始化,回顧了通過Intent進行數(shù)據(jù)傳遞的操作。后面通過對播控和進度控制的分析,展示了Android中基于回調(diào)的事件監(jiān)聽機制和使用Handler實現(xiàn)在線程中異步刷新UI頁面的操作。最后通過將Activity設(shè)置成橫屏顯示,熟悉了在AndroidMainfest.xml文件中對Activity進行屬性設(shè)置的方法。需要指出的是,在Android的xml配置文件中,可以對界面的視圖和各個組件做各種屬性的設(shè)置,本書并不能一一涵蓋,需要各位讀者在開發(fā)過程中不斷進行積累和熟悉。9.2本章小結(jié)本章我們分模塊介紹了一個視頻播放頁16Android移動開發(fā)

基礎(chǔ)教程Android移動開發(fā)

基礎(chǔ)教程17第9章綜合實戰(zhàn)第9章綜合實戰(zhàn)在前面幾章中我們介紹了Android開發(fā)的一些基礎(chǔ)知識,在本章我們將綜合運用之前的一些知識實現(xiàn)一個常見的視頻播放器,使其可以播放本地的視頻資源。在前面幾章中我們介紹了Android開發(fā)的一些基礎(chǔ)知識199.1視頻播放器9.1視頻播放器

對于一個視頻播放器來說,常見的功能有進度條顯示和拖動功能,用戶拖動進度條可以快進和快退,在播放的過程中,進度條應(yīng)該不斷地更新播放的時間和顯示視頻總時長,同時還需要提供暫停/繼續(xù)播放功能。9.1.1界面布局界面主體部分需要添加一個SurfaceView用于顯示播放的內(nèi)容,然后需要顯示進度條和播控按鈕。為了可以更靈活地布局這些組件,布局方式可以采用RelativeLayout。對于一個視頻播放器來說,常見的功能有進度條顯示21

在布局文件中,外層的視圖容器為相對布局方式,其中添加了一個SurfaceView視圖,layout_width和layout_height的值都為match_parent,使得播放內(nèi)容占滿整個畫面。其后定義了一個垂直的線性布局,用于顯示進度條和播控按鈕等內(nèi)容,通過設(shè)置android:layout_alignBottom="@id/svew"使得該布局與SurfaceView的底部對齊,設(shè)置android:alpha屬性讓其具有一定的透明度。在該布局中,首先定義了一個SeekBar用于顯示播放的進度和拖動條,然后定義了一個水平的線性布局用于顯示播控按鈕和播放時間。播控按鈕通過設(shè)置android:clickable="true"使得該圖片可以被單擊,用于實現(xiàn)播放/暫停功能。頁面具體效果如圖9.1所示。在布局文件中,外層的視圖容器為相對布局方式,其中添加22圖9.1頁面布局圖9.1頁面布局239.1.2初始化

視頻播放需要指定視頻所在的路徑或URL,本章我們基于第5章小練習的文件瀏覽器獲取視頻路徑,在文件瀏覽的過程中,如果是文件夾,則進入下級目錄,如果是視頻文件,則調(diào)用本章的視頻播放器,并將視頻的路徑作為參數(shù)傳入,其他文件則返回。

在組件的初始化函數(shù)initWidget()方法中,首先通過findViewById()方法獲取各個控件,然后為進度的顯示和進度條的位置設(shè)置初始值。通過setOnClickListener方法為播控圖片設(shè)置監(jiān)聽事件。

9.1.2初始化249.1.3播控和進度控制在視頻播放中,暫停、繼續(xù)播放和進度拖動是常見的操作。播控是通過監(jiān)聽圖片的單擊事件實現(xiàn)的。在圖片按鈕被單擊后,首先判斷當前視頻的狀態(tài),如果是播放狀態(tài),則調(diào)用MediaPlayer類的pause()方法暫停播放,同時更換播控的圖片,顯示播放按鈕。如果是暫停狀態(tài),則調(diào)用MediaPlayer類的start()方法繼續(xù)播放,同時更換播控的圖片,顯示暫停按鈕。播放和暫停頁面如圖9.2和圖9.3所示。9.1.3播控和進度控制25圖9.2播放狀態(tài)圖9.2播放狀態(tài)26圖9.3暫停狀態(tài)圖9.3暫停狀態(tài)27

拖動進度條進行快進和快退是通過監(jiān)聽OnSeekBarChangeListener事件實現(xiàn)的,首先在代碼中通過setOnSeekBarChangeListener()為拖動條設(shè)置事件監(jiān)聽,然后重寫OnseekBarChangeListener的回調(diào)函數(shù),在不同的事件觸發(fā)下執(zhí)行不同的動作。拖動進度條進行快進和快退是通過監(jiān)聽OnSeekBa28

在OnseekBarChangeListener的回調(diào)函數(shù)中,onProgressChanged在拖動條發(fā)生改變時回調(diào),并回調(diào)滑塊當前的位置,在其中可以根據(jù)滑塊的位置計算需要定位的視頻位置,然后調(diào)用MediaPlayer的seekTo()方法跳轉(zhuǎn)到對應(yīng)的位置。onStartTrackingTouch在拖動條被觸摸時回調(diào),其中可以調(diào)用MediaPlayer的pause()方法暫停視頻的播放。onStopTrackingTouch在拖動條被釋放時回調(diào),此時快進或快退已經(jīng)完成,調(diào)用MediaPlayer的start()方法繼續(xù)播放。在OnseekBarChangeListener29

在播放的過程中,需要根據(jù)當前視頻播放的時間實時更新進度和時間顯示的進度,可以通過Handler和Runnable任務(wù)實現(xiàn)。在播放的過程中,需要根據(jù)當前視頻播放的時間實時更新進309.1.4橫屏設(shè)置在視頻播放中,一般會自動切換到橫屏顯示,即視頻的寬比高大,這可以在聲明Activity時通過指定android:screenOrientation屬性實現(xiàn)。android:screenOrientation屬性支持3種取值,"landscape"強制橫屏顯示,"portrait"強制豎屏顯示,默認值為"unspecified",顯示方向跟隨系統(tǒng)屏幕旋轉(zhuǎn)的方向。9.1.4橫屏設(shè)置319.2本章小結(jié)

本章我們分模塊介紹了一個視頻播放頁面的實現(xiàn),首先介紹了界面的布局方式,可以看到相對布局和線性布局在實際開發(fā)中的靈活組合和應(yīng)用。然后介紹了控件和播放器的初始化,回顧了通過Intent進行數(shù)據(jù)傳

溫馨提示

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

評論

0/150

提交評論