在纵向模式下锁定android活动,而不针对每个活动执行此操作
所以我知道我可以为清单中的每个活动执行在纵向模式下锁定android活动,而不针对每个活动执行此操作,android,android-layout,portrait,Android,Android Layout,Portrait,所以我知道我可以为清单中的每个活动执行android:screenOrientation=“肖像”,这将把活动锁定到肖像模式。但是我想知道在清单中是否有一个地方可以输入一次,并将其应用于整个应用程序。在清单文件中,您可以这样给出 <activity android:name="com.androidcalapp.MainActivity" android:label="@string/app_name" and
android:screenOrientation=“肖像”
,这将把活动锁定到肖像模式。但是我想知道在清单中是否有一个地方可以输入一次,并将其应用于整个应用程序。在清单文件中,您可以这样给出
<activity
android:name="com.androidcalapp.MainActivity"
android:label="@string/app_name"
android:screenOrientation="landscape">
创建自定义活动,在其中定义方向并将其固定到所需位置 从使用固定方向定义的CustomActivity继承应用程序中的所有活动
编辑:提供了做同样事情的另一种方法,但我喜欢相信我的方法更优雅,因为你不需要为每个活动调用函数 创建自定义活动
public class CustomActivity extends Activity{
@Override
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}else{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}
}
然后,对于您创建的所有活动,例如ActivityA,ActivityB将其从CustomActivity扩展
所以你只是重复了我说的我已经知道了。不知怎的,有人给了你一张赞成票。@user3093402这就是我说的,我们必须在清单中重复它,否则当我更新上面的答案时,可以在运行时处理。@iburnny:OP说的是在整个应用程序中只做一次。例如,他可能有30项活动。因此,复制和粘贴同一代码30次有点低效。:)@谢谢你的澄清。但我明白了他的要求。这就是为什么我编辑了我以前的答案,并对其进行了测试。:)这肯定会成功的。但我更希望安卓在清单中有办法做到这一点。扩展自定义活动并不总是很方便的,因为有多种类型的活动,但同样,这种想法会减少工作负载+1为什么会有执行相同代码的if-else语句?事实上,您提供的链接比您自己的答案更通用。正如我告诉@John的,扩展CustomActivity并不总是方便的+谢谢你的盛情款待。我读了你对@John的回答的评论。我不得不说,我从来没有想过要进行不同类型的活动。非常感谢您指出这一点。:)
public class CustomActivity extends Activity{
@Override
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}else{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}
public class ActicityA extends CustomActivity {}
public class ActivityB extends CustomActivity {}