2

給定AlphaActivity和BravoActivity。 BravoActivity由AlphaActivity開始作爲設置透明活動的方向不同於父活動的方向

startActivity(new Intent(AlphaActivity.this,BravoActivity.class)); 

onCreate AlphaActivity有

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

對於BravoActivity,該onCreate方法也有類似,但不同的呼叫

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

美中不足的是該行:BravoActivity是一項透明的活動。所以我期望的設計是AlphaActivity應該保持在LANDSCAPE方向,而BravoActivity保持PORTRAIT方向。我該如何做到這一點?

現在,只要BravoActivity開始,AlphaActivity的方向改變爲肖像 - 我不想那樣。謝謝。

+0

我的猜測是,你想要的是不會是可能的,但是這只是一個推測。假設'AlphaActivity'沒有使用'SurfaceView'或類似的東西,一個備份計劃就是將'AlphaActivity'的內容作爲'Bitmap'來捕獲,並用它作爲'BravoActivity'的背景。 – CommonsWare

+0

@CommonsWare,你很有見地:是的,AlphaActivity正在使用SurfaceView。方向翻轉會扭曲通過它看到的東西。 –

回答

0

嘗試添加

機器人:screenOrientation = 「nosensor」

到你Activitymanifest.xml

UPD_0:

也嘗試重寫onConfigurationChanged。我的想法 - 當你的活動開始改變方向,可能叫,你可以設置你想要的方向,而不是期望的是什麼系統)

@Override 
public void onConfigurationChanged(Configuration newConfig) 
{ 
    super.onConfigurationChanged(newConfig); 
    setRequestedOrientation(ActivityInfo.YOURS_DESIRED_ORIENTATION); 
} 
+0

這沒有做到。不錯的主意。 –

+0

是的。我已經嘗試過了。謝謝。 –