Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 手把手教你做視頻播放器(六)(完)

手把手教你做視頻播放器(六)(完)

編輯:關於Android編程

第8節 橫屏的播放界面

在設備旋轉成橫屏的時候,視頻將自動進行全屏播放。

\

8.1 播放器橫屏布局

我們要為全屏播放界面設置一個新的布局,這個布局裡面只用來播放視頻,不需要顯示任何視頻信息,

<framelayout android:background="@color/video_background_color" android:layout_height="match_parent" android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android">

    

</framelayout>

8.2 全屏的設置

因為橫豎屏的VideoPlayer都是一套代碼實現的,所以需要判斷當前Activity是橫屏還是豎屏,

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ......
    if (this.getResources().getConfiguration().orientation == 
            Configuration.ORIENTATION_LANDSCAPE) {
        //界面橫屏時需要進行的操作
    }
    ......
}

VideoPlayer創建的時候,我們要對這個Activity進行全屏的設置,

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ......
    if (this.getResources().getConfiguration().orientation == 
        Configuration.ORIENTATION_LANDSCAPE) {

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

        getSupportActionBar().hide();
    }
    ......
}

因為要使應用全屏,所以需要修改Activity所屬的窗口-Window的屬性。以此告訴系統需要隱藏狀態欄和導航欄。

還需要隱藏ActionBar

8.3 橫豎屏轉換的狀態保存

在旋轉的過程中,Activity將經歷這些的生命周期:
用戶可以與Activity交互,此時屏幕進行旋轉,從豎屏變橫屏->
onSaveInstanceState()->
onPause()->
onStop()->
onDestroy()->
onCreate()->
onStart()->
onRestoreInstanceState()->
onResume()->
用戶可以與Activity交互;

可見,這個Activity要被重新創建一次,所以當視頻正在播放的時候,我們要保存好視頻當前播放的位置,Activity重建以後才能從之前播放到的位置繼續播放。

我們要在onSaveInstanceState()裡面保存當前播放的位置,

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);

    outState.putInt(LAST_PLAYED_TIME, mVideoView.getCurrentPosition());
}

onRestoreInstanceState()裡面取出打斷播放時的位置,並存儲到mLastPlayedTime裡面,當Activity在onResume()的時候,就能夠跳轉到播放點開始播放了。

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);

    mLastPlayedTime = savedInstanceState.getInt(LAST_PLAYED_TIME);
}

第9節 開放視頻播放功能

安卓系統的開發性不只是源碼的開放,各個應用之間也是可以互相利用的。比如,我們在圖片浏覽器裡面浏覽照片,發現好的,可以通過分享按鈕,通過另外一個應用-“微信”,把照片分享到“朋友圈”。這裡的“微信”,就是可以被別的應用利用的工具。

類似的,我們也可以把這個視頻播放器,做成這種可以被別的程序使用的工具。例如當用戶使用文件浏覽器浏覽磁盤上的文件時,發現一個視頻文件,點擊後,系統可以提示用戶用我們的播放器來播放。

\

要實現這樣的修改非常的容易,只需要修改AndroidManifest.xml中注冊的播放器Activity屬性,

VideoPlayer的過濾器添加action標簽,值設置為android.intent.action.View; 為VideoPlayer的過濾器添加data標簽,讓VideoPlayer關注video類型的數據;


    ......
    
        ......
        
            
                
                
                
            
        
        ......
    

這樣,如果別的任何應用使用android.intent.action.View來試圖打開一個視頻文件,我們的VideoPlayer就能滿足這樣的要求,就會被系統作為推薦打開方式,提供給用戶選擇。

後記

一個簡單但是功能比較完備的視頻播放器已經開發完成了。

最後,可以在菜單欄中增加一個“關於”功能,通過它啟動一個介紹這個應用的說明Activity。我們在這裡就簡單的展示下開發者信息和應用版本信息。

\

通過這一章節的學習,我們對安卓系統又有了進一步的認識,應該具備了開發一個簡單安卓應用的能力。

安卓開發之路一步一步走到現在,我們開始漸入佳境。有了這前面兩個篇章的鋪墊,相信大家已經算是對安卓開發入門了。

對於本章開篇中提到的那些“遺憾”之處,也許就是我們下一個篇章深入開發的起點。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved