3 回答

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
對(duì)于任何Android版本
從XML
您可以android:screenOrientation="portrait"在manifest.xml文件中為每個(gè)活動(dòng)指定。您不能在application標(biāo)簽上指定此選項(xiàng)。
從Java
另一種選擇是以編程方式執(zhí)行此操作,例如在Activity基類中:
@Override
public void onCreate(Bundle savedInstanceState) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
對(duì)于Android 4+(API 14+)
最后一個(gè)選擇是使用活動(dòng)生命周期偵聽器執(zhí)行此操作,此活動(dòng)偵聽器僅從Android 4.0(API 14+)起可用。一切都發(fā)生在自定義Application類中:
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new ActivityLifecycleAdapter() {
@Override
public void onActivityCreated(Activity a, Bundle savedInstanceState) {
a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
});
}
ActivityLifecycleAdapter只是您需要?jiǎng)?chuàng)建的一個(gè)幫助程序類,它將是一個(gè)空的實(shí)現(xiàn)ActivityLifecycleCallbacks(因此,當(dāng)您只需要其中一個(gè)方法時(shí),就不必重寫該接口的每個(gè)方法)。

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
是的,您可以通過編程方式以及所有活動(dòng)來執(zhí)行此操作,以使AbstractActivity擴(kuò)展所有活動(dòng)。
public abstract class AbstractActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
此抽象活動(dòng)也可以用于全局菜單。

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以為整個(gè)應(yīng)用程序執(zhí)行此操作,而不必使所有活動(dòng)都擴(kuò)展一個(gè)公共基類。
首先,要確保您Application的項(xiàng)目中包含一個(gè)子類。在onCreate()應(yīng)用程序首次啟動(dòng)時(shí)稱為的,您注冊(cè)了一個(gè)ActivityLifecycleCallbacks對(duì)象(API級(jí)別14+)以接收活動(dòng)生命周期事件的通知。
每當(dāng)您啟動(dòng)或停止應(yīng)用程序中的任何活動(dòng)時(shí),這都使您有機(jī)會(huì)執(zhí)行自己的代碼。此時(shí),您可以調(diào)用setRequestedOrientation()新創(chuàng)建的活動(dòng)。
class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
// register to be informed of activities starting up
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity,
Bundle savedInstanceState) {
// new activity created; force its orientation to portrait
activity.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
....
});
}
}
添加回答
舉報(bào)