中的方向更改我希望我的VIEW佈局在方向更改時進行調整。查看佈局不刷新android
我的清單設置爲:android:configChanges="keyboardHidden|orientation"
上的活動。
我有res/layout-land
,res/layout-port
。
我有onConfigurationChanged
在我的Activity
(它得到的旋轉叫)。
在我的Activity
我有一個ViewFlipper
,其中我有LinearLayouts
。
當我在端口或陸地模式下啓動Activity
時,視圖的佈局是正確的(根據 到我的res/layout-????
文件)。
但是當我已經在Activity
和旋轉手機,然後我的視圖佈局不會改變。屏幕旋轉,並且該活動的onCreate
未被調用,因爲它應該是,Activity
中調用onConfigurationChanged
,但屏幕始終使用啓動Activity
時加載的LinearLayout
重新繪製。
我有一種感覺,我錯過了onConfigurationChanged
的東西,但不知道是什麼。我想我需要撥打內部ViewFlipper
或LinearLayout
上的某個功能。我應該撥打什麼功能?
ViewFlipper flipper;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
flipper = new ViewFlipper(getApplicationContext());
setContentView(flipper);
initLayout();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(flipper);
}
void initLayout() {
MyView myview = createMyView(0);
flipper.addView(myview, 0);
myview = createMyView(1);
flipper.addView(myview, 1);
myview = createMyView(1);
flipper.addView(myview, 1);
}
我嘗試添加flipper = new ViewFlipper(getApplicationContext());
到但使一切旋轉後的黑色。我想我將不得不調用initLayout,但這將重新計算一切(這正是我不想做的,這就是爲什麼我試圖用onConfigurationChanged
來做到這一點,而不是android默認的「dropMyActivity & createANewActivity」
SOLUTION: 以前我以爲我可以觸發旋轉被刷新的佈局,但看來我要重新創建與當前上下文的佈局(方位變化後)
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.category_flipper);
ViewFlipper oldFlipper = viewFlipper;
viewFlipper = (ViewFlipper)findViewById(R.id.categoryFlipper);
for (int i = 0; i < 3; i++) {
final CardLayout cl = new CardLayout(this, cardData[i]);
viewFlipper.addView(cl);
}
cardData[viewIndex].restorePlayer();
viewFlipper.setDisplayedChild(viewIndex);
oldFlipper.removeAllViews();
}
好了,這似乎是好的方向發展,但仍然必須找出如何將它適合我的情況,我會添加一些更多的代碼到原始問題 – Gavriel 2011-04-17 10:02:22
@Flöcsy - 我正在查看initLayout,其中包含您說您不想重複的工作,但看起來它只是再次創建所有視圖。這正是您在屏幕旋轉時重置顯示屏所需做的。如果您在創建視圖的同時進行昂貴的計算,並且這些視圖確實獨立於配置,則可以按照[在此處]所述捕獲並重新使用它們(http://developer.android.com/resources/articles /faster-screen-orientation-change.html) – 2011-04-17 16:41:26
特德,我認爲你是對的。雖然createMyView是昂貴的工作,但我現在明白了,並且可能我做了更多的工作(例如,我正在解析一個zip文件以查找圖像(在ImageButton上顯示)以及mp3文件(播放按鈕時播放) – Gavriel 2011-04-17 22:25:11