我希望有一个适用于整个应用程序的规则,不允许横向放置。我意识到我可以通过以下方式获得此信息:
android:screenOrientation="portrait"
在我的每一项活动中,但这似乎都不干净。我也可以放
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
onCreate()
方法中的。
但是我想要一个不需要此代码重复的解决方案。有什么建议么?
答案 0 :(得分:2)
解决方案:
您可以为整个应用程序执行此操作,无需,而不必使所有活动都扩展一个公共基类。
首先要确保技巧是在项目中包含Application
子类。在其onCreate()
(在您的应用程序首次启动时调用)中,您注册了ActivityLifecycleCallbacks
对象(API级别14+)以接收活动生命周期事件的通知。
这使您有机会在应用程序中的任何任何活动开始(或停止或继续执行)时执行自己的代码。此时,您可以致电setRequestedOrientation()
来新建活动。
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);
}
....
});
}
}
如有疑问,请发表评论。
注意:添加清单的<application>
标签:android:name=".MyApp"
希望有帮助。