3 回答
TA贡献1843条经验 获得超7个赞
对于任何Android版本
从XML
您可以android:screenOrientation="portrait"在manifest.xml文件中为每个活动指定。您不能在application标签上指定此选项。
从Java
另一种选择是以编程方式执行此操作,例如在Activity基类中:
@Override
public void onCreate(Bundle savedInstanceState) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
对于Android 4+(API 14+)
最后一个选择是使用活动生命周期侦听器执行此操作,此活动侦听器仅从Android 4.0(API 14+)起可用。一切都发生在自定义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只是您需要创建的一个帮助程序类,它将是一个空的实现ActivityLifecycleCallbacks(因此,当您只需要其中一个方法时,就不必重写该接口的每个方法)。
TA贡献1846条经验 获得超7个赞
是的,您可以通过编程方式以及所有活动来执行此操作,以使AbstractActivity扩展所有活动。
public abstract class AbstractActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
此抽象活动也可以用于全局菜单。
TA贡献1785条经验 获得超4个赞
您可以为整个应用程序执行此操作,而不必使所有活动都扩展一个公共基类。
首先,要确保您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);
}
....
});
}
}
- 3 回答
- 0 关注
- 474 浏览
添加回答
举报