我在我的HTC G1上使用Android VNC查看器。但出于某种原因,尽管我的G1处于纵向模式,但该应用程序始终处于横向模式。由于Android VNC查看器是开源的,我想知道如何将代码活动编码为“横向”。我想改变它以尊重手机的方向。强制Android活动始终使用横向模式
回答
您可以在清单中指定的活动的方向。见here。
<activity android:allowTaskReparenting=["true" | "false"]
...
android:screenOrientation=["unspecified" | "user" | "behind" |
"landscape" | "portrait" |
"sensor" | "nosensor"]
...
"adjustResize", "adjustPan"] >
您可以在java代码中设置相同的数据。
myActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
ActivityInfo上的其他值可让您将其设置回传感器驱动或锁定的人像。就个人而言,我喜欢将其设置为Manifest中的某个问题,正如另一个问题的答案中所建议的那样,如果需要的话,稍后在Android SDK中使用上述调用进行更改。
望着AndroidManifest.xml中(link),第9行:
<activity android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden" android:name="VncCanvasActivity">
该行指定screenOrientation
景观,但笔者更进一步在覆盖所有屏幕方向与configChanges="orientation|keyboardHidden"
变化。这指向VncCanvasActivity.java中的重载函数。
如果你看一下VncCanvasActivity,上线109是overrided功能:
@Override
public void onConfigurationChanged(Configuration newConfig) {
// ignore orientation/keyboard change
super.onConfigurationChanged(newConfig);
}
笔者专门整理注释忽略任何键盘或方向的变化。
如果你想改变这一点,你可以回到上面显示的AndroidManifest.xml文件,并更改行:
<activity android:screenOrientation="sensor" android:name="VncCanvasActivity">
这应该改变计划,从纵向切换到当用户旋转设备时风景。
这可能会起作用,但可能会弄乱GUI的外观,具体取决于布局的创建方式。你将不得不说明这一点。另外,根据活动的编码方式,您可能会注意到,当屏幕方向发生变化时,填充到任何输入框中的值将消失。这也可能需要处理。
为什么需要'configChanges'属性?它似乎在没有它的非键盘手机上工作......如果你有'screenOrientation =“landscape”'但省略了'configChanges',那么在什么情况下方向会改变为肖像? – Timmmm 2012-01-15 20:52:06
在新版本中,您还应该指定screenSize:['如果您的应用程序的目标API级别为13或更高(由minSdkVersion和targetSdkVersion属性声明),则还应该声明“screenSize”配置,因为它也会在设备在纵向和横向之间切换。'](http://developer.android.com/guide/topics/manifest/activity-element.html) – Cel 2012-03-21 10:39:17
如何强制执行内置活动,如系统图像选择库仅适用于横向格式或只有肖像? – Jacky 2015-04-23 01:54:30
阿尔斯兰, 你为什么要强迫方向亲语法,虽然有已经在清单 <activity android:name=".youractivityName" android:screenOrientation="portrait" />
我不是提问者,但也许他想以编程方式强制执行,因为他想在某个时间强制执行它? – 2014-05-30 18:03:55
下面的方式是我用来显示在横向模式下所有活动代码:
<activity android:screenOrientation="landscape"
android:configChanges="orientation|keyboardHidden"
android:name="abcActivty"/>
“orientation”如果您的应用程序的目标是API级别13或更高,那么您还应该声明“screenSize” – 2015-09-10 07:51:44
在我OnCreate(Bundle)
,我一般做到以下几点:
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
谢谢..你在当天 – 2013-12-16 11:48:23
明显的方法在其他答案似乎并没有工作,但@anwarma你做了 – Anup 2015-08-19 12:29:34
就是这样!长期等待这个修复。
我有关于双启动所需的(程序)横向模式的活动的旧的Android问题:setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
现在的Android就开始横向模式。
按CTRL+F11
旋转屏幕。
他们现在想如何设置应用程序的默认方向,而不是如何旋转屏幕。 – 2013-12-01 20:38:02
模拟器的CTRL + f12。 – Lazy 2015-07-27 12:42:09
对于Android 4.0(冰淇淋三明治)和后来,我需要添加这些,除了landscape
价值。
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
只使用keyboardHidden|orientation
仍然会导致内存泄漏和我的活动的游艺按下电源按钮时。
坏习惯警报!这与强制横向模式下的活动无关。你总是需要实现你的活动状态的存储和重新创建。这是基本的Android开发知识。不要用这个hacky修复来解决这个问题。如果系统需要更多内存,活动可以被系统关闭。 – Roel 2017-06-19 15:36:21
@Roel,它是防止活动在例如旋转设备时旋转回肖像的唯一方法。它可以防止这些配置更改影响活动。 – Peterdk 2017-06-19 19:34:45
对不起有点脾气暴躁的消息,但我测试了它,我没有为横向模式的所有这些值。当你添加所有这些值时,它意味着你在onConfigurationChanged()中自己处理更改,而不是仅仅重新启动活动(并且必须实现该功能!),但是如果强制使用landschape,则不会发生轮换。 – Roel 2017-06-20 08:05:29
在代码中做它是IMO错误,甚至更多,如果你把它放入onCreate。在清单中进行,“系统”知道应用程序启动的方向。这种类型的元或顶级“指导”应该在清单中。如果你想证明这一点,你可以在Activity的onCreate中设置一个中断点。如果在代码中执行此操作,它将被调用两次:以纵向模式启动,然后切换到横向。如果您在清单中执行此操作,则不会发生这种情况。
我不同意。在代码中执行任何操作都是我首选的方法。基于单一职责原则,清单应该只关注应用程序级属性,权限和API绑定。我实际上不同意在应用程序清单中存在的
一个快速和简单的解决方案是AndroidManifest.xml文件,添加以下为您希望强制为横向模式每项活动:
android:screenOrientation="landscape"
在清单:
<activity android:name=".YourActivity"
android:screenOrientation="portrait"
android:configChanges="orientation|screenSize">
在你的活动:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.your_activity_layout);
使用ActivityInfo(android.content.pm.ActivityInfo)在onCreate方法调用setLayout的方法,这样
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)之前;
- 1. 强制蓝牙许可请求对话框始终使用横向模式
- 2. Android强制横向(横向)布局
- 3. 强制UIAlertView进入横向模式
- 4. Android。 Mashmallow。相机预览始终处于横向模式
- 5. AudioVideoCaptureDevice - 始终以横向模式录制视频
- 6. 将活动方向始终设置为反向纵向模式在android
- 7. 强制设置方向为横向的活动,即使自动旋转启用
- 8. 强制在平板电脑上使用横向模式
- 9. Android WebView始终报告横向
- 10. 如何强制使设备处于横向模式
- 11. iPhone SDK:强制应用的单个部分的横向模式
- 12. 强制的Windows Mobile 6应用程序以横向模式
- 13. 开始在横向模式下的活动,它可以旋转到纵向也
- 14. UIImage数据始终处于横向模式
- 15. iOS - 当前处于横向模式时如何强制纵向模式
- 16. 强制旋转到横向
- 17. 横向模式不适用于Android Studio
- 18. 强制Mercurial始终使用--subrepos
- 19. Android应用程序强制关闭改变纵向到横向
- 20. iPhone,如何强制一个视图进入横向模式?
- 21. 如何强制TextField在横向模式下完全拉伸
- 22. iphone - 强制MPMoviePlayerController在横向模式下播放视频
- 23. 强制UIImagePickerController以横向模式拍摄视频
- 24. 强制平板电脑处于横向模式
- 25. 强制UIViewController只显示在横向模式
- 26. 强制UISplitViewController始终仅在横向上显示主(仅在iPhone 6 Plus上)
- 27. Android:在活动启动时获取方向(横向/纵向)
- 28. Android - 使用tabActivity时始终强制关闭
- 29. 在横向和纵向模式下使用ScrollViewer正确滚动
- 30. Android - 在横向上强制纵向视图
尽管这有效,但它强制重新启动活动。 – Yegor 2014-01-01 15:21:25