2011-05-12 82 views
8

嘿,當我旋轉手機時,我的活動重新啓動。我有一個視頻播放視頻,我旋轉和視頻重新啓動。現在,我發現在添加此我的活動清單固定它旋轉手機在Android上重新啓動視頻

<activity android:name="Vforum" android:configChanges="orientation"></activity> 

現在的問題是視頻控件沒有正在重繪,直到他們消失了,回來,從而留下要麼很長的控制會從橫向到縱向模式或從肖像到風景的真正短的控制。一旦他們消失,然後我點擊讓他們回來,然後他們正確的大小。有沒有更好的方法來做到這一點?

回答

21

添加

android:configChanges="orientation"

在AndroidManifest.xml中的活動。

  • 解決了我的問題不會再次下載逐行掃描視頻..

如果你的目標API級別13或更高,則必須說明here包括除orientationscreenSize值。所以你的標籤可能看起來像

android:configChanges="orientation|screenSize" 
3

考慮記住活動生命週期事件中的視頻文件位置。當創建活動時,您可以獲取視頻位置並從重新啓動的那一刻開始播放。

在你的Activity類:

@Override 
protected void onCreate(Bundle bundle){ 
    super.onCreate(bundle); 
    int mPos=bundle.getInt("pos"); // get position, also check if value exists, refer to documentation for more info 
} 

@Override 
protected void onSaveInstanceState (Bundle outState){ 
    outState.putInt("pos", myVideoView.getCurrentPosition()); // save it here 
} 
+0

什麼生命週期事件旋轉時,叫什麼名字?我很快搜索了一下,結果出現了。我看到'myVideoView.getCurrentPosition()'會保存當前時間,但是當我旋轉並重置時,我也看到漸進式下載也開始了。你能提供一個簡單的例子嗎? Sudo代碼甚至可以爲我工作,謝謝! – Ronnie

+0

當您旋轉手機時,當前的Activity實例被銷燬並創建新的實例,因此您可以在onCreate()中檢查捆綁對象的視頻位置。視頻位置可以保存在onSaveInstanceState(Bundle)中。請參閱http://developer.android.com/reference/android/app/Activity.html –

+0

我所看到的是視頻從未來的某個時間開始。也許它的下一幀,大約1秒。但是信息丟失了。任何人都知道如何旋轉而不會丟失任何視頻? – Lucy

1

添加configChanges屬性您的清單意味着你將handle config changes yourself。重寫方法在你的活動:

int lastOrientation = 0; 

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    // Checks if orientation changed 
    if (lastOrientation != newConfig.orientation) { 
     lastOrientation = newConfig.orientation; 
     // redraw your controls here 
    } 
} 
+0

哦,好吧!我只是在我的第二週的Java如此裸露與我....我現在如何重繪控件?我試過'mVideoView.refreshDrawableState();'並且失敗了。我不知道什麼方法重繪他們。 – Ronnie

+0

你不想重新創建整個視圖,因爲這會殺死視頻播放器。您只需要替換需要更改(控件)的部分並保持播放器完好。基本上你會:找到父視圖組(佈局),獲取視圖的位置被替換(索引),刪除它們,膨脹新的,添加到相同的位置:http://stackoverflow.com/questions/3334048/android-佈局替換一個視圖與另一個運行時查看 –

+0

雖然我使用標準的MediaController。我不希望任何佈局改變。它內置的視頻控件需要重新繪製。我發佈了正在發生的視頻:http://www.youtube.com/watch?v=FgRythmUo3A – Ronnie

0

ConfigChanges是正確的,但它確實這樣工作;

<activity 
     android:configChanges="orientation|screenSize" ... > 

,並在活動課

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    if (lastOrientation != newConfig.orientation) { 
     lastOrientation = newConfig.orientation; 
     // redraw your controls here 
    } 
}