问题标签 [screen-orientation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - 在 iPhone 私有 API 上设置界面方向
任何人都可以确认这[[UIDevice currentDevice] setOrientation:UIDeviceOrientationPortrait];
将使您的应用程序被 Apple 拒绝。
有没有好的替代品?
android - 在活动开始期间优雅地处理屏幕方向变化
我正在尝试找到一种方法来正确处理设置活动,该活动的方向由启动它的意图中的数据确定。这是一款用户可以选择关卡的游戏,其中一些是纵向的,有些是横向的。我面临的问题是setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
在活动完全加载之前不会生效。这对我来说是个问题,因为我在启动过程中做了一些加载和图像处理,我只想做一次。
目前,如果用户选择横向级别:
- 活动开始 onCreate(),默认为纵向
- 分析它的启动意图发现它应该是横向的
- 继续进行到 onResume()、加载信息和执行其他设置任务
- 此时 setRequestedOrientation 启动,因此应用程序通过 onPause() 运行到 onDestroy()
- 然后它再次从 onCreate() 启动并运行到 onResume() 重复之前的设置
有没有办法避免这种情况并且让它不执行两次加载?例如,理想情况下,活动会在调用 onCreate 之前就知道它应该是横向还是纵向,具体取决于启动意图的某些属性,但除非我错过了一些不可能的事情。我已经设法通过在耗时的加载步骤之前检查 a 来避免重复加载boolean
,但这似乎不是正确的方法。我想我可以覆盖onSaveInstanceState
,但这需要大量额外的编码。有没有一种简单的方法可以做到这一点?
谢谢!
解决方案:
根据丹尼尔的回答,这实际上很容易解决。我只需要做一些小改动。在我的“菜单”活动中,玩家可以选择玩哪个关卡,我只需要添加一个 if/else 检查来选择哪个类将由我的 Intent 启动。这是通过一个代表纵向或横向的简单 int 完成的,由玩家选择关卡时确定。然后我创建了第二个类来扩展我的“GameLogic”类;这是包含游戏本身大部分代码的类,而不是菜单、说明等。
从字面上看,就是这么简单,完全是空的。这样,它继承了我之前的活动中的所有代码,我已经对其进行了编码,以根据方向以不同的方式处理事情。最后,我只需要在清单中添加一行,说明 GameLandscape 将始终以横向运行,而 GameLogic 将始终以纵向运行。
所以确实是一个简单的问题。
android - Android:确定应用程序何时完成或销毁以更改屏幕方向
我对 Android 世界比较陌生,并且很难理解整个屏幕方向循环是如何工作的。我知道当方向从纵向变为横向或反之亦然时,活动被破坏然后重新创建。因此 onCreate 函数中的所有代码都将再次运行。所以这是我的情况:我有一个正在开发的应用程序,它可以登录网站、检索数据并将其显示给用户。虽然这一切都在后台线程中完成,但启动这些线程的代码在 onCreate 函数中。现在,问题在于,每当用户更改屏幕方向时,应用程序都会登录,检索数据,然后再次向用户显示。我想做的是设置一个布尔值,告诉应用程序是否已登录,以便它知道在调用 onCreate 函数时是否必须登录。只要应用程序在内存中,HttpClient 就会存在并包含来自登录用户的 cookie,但是当应用程序被系统杀死时,这些 cookie 就会消失。所以我假设我需要做一些事情,比如在应用程序被杀死时将登录的布尔值设置为 false,但是由于在屏幕旋转时调用了 onDestroy,这怎么可能?我还研究了 finalize 函数和 isFinishing() 但这些似乎不起作用。所以我假设我需要做一些事情,比如在应用程序被杀死时将登录的布尔值设置为 false,但是由于在屏幕旋转时调用了 onDestroy,这怎么可能?我还研究了 finalize 函数和 isFinishing() 但这些似乎不起作用。所以我假设我需要做一些事情,比如在应用程序被杀死时将登录的布尔值设置为 false,但是由于在屏幕旋转时调用了 onDestroy,这怎么可能?我还研究了 finalize 函数和 isFinishing() 但这些似乎不起作用。
更短的版本:如何区分应用程序何时从内存中被终止与活动正在轮换以及每个事件的不同代码?
非常感谢任何帮助或正确方向的观点。谢谢!
android - 如何锁定应用程序方向(横向或纵向)?
我尝试使用以下方法冻结方向:
尽管显示保持纵向,但仍会重新创建活动。任何想法如何解决这个问题?
如何锁定应用程序的方向,以便在方向更改时不会重新创建活动?
android - AVD 屏幕方向不随 CTRL+F11 或 CTRL+F12 改变
我使用 eclipse 在 AVD 模拟器中运行我的应用程序,但我无法更改 AVD 中的屏幕方向(模拟器上的 Android 2.0 平台)。
当我在键盘上按CTRL+F11或CTRL+时,没有任何反应。F12当我按下任一热键时,adb debuglog/logcat 中也不会生成任何消息。
根据http://developer.android.com/guide/developing/tools/emulator.html这些是切换模拟器屏幕方向的正确热键。
我用我的应用程序和消息应用程序进行了尝试。热键在任何情况下都没有影响。
我正在运行 Fedora 12,Gnome。我在 System -> Preferences 菜单中检查了我的键盘快捷键,任何一个热键都没有附加任何内容。
同样的问题,3 台不同的 PC(都运行 Fedora Gnome)。
android - Android小部件不同的纵向和横向方向
我有一个(希望)一个相对简单的问题。如何告诉 Android 在我的 AppWidget 上哪个布局用于纵向以及哪个布局用于横向?
提前致谢!
iphone - 如何在 iPhone 的横向模式下停止 ABPersonViewController 和 ABNewPersonViewController 的旋转
我正在通过 pushview 控制器使用一个ABPersonViewController
和类。ABNewPersonViewController
在页面中ABPersonViewController
,ABNewPersonViewController
它以纵向模式显示。但是当我旋转我的 iPhone 时,它会在横向模式下完美旋转。但我想停止这种轮换。如果我在横向模式下旋转我的 iPhone,它的视图应该是纵向模式。
iphone - iphone/ipad 方向处理
这更像是一个一般性的问题,供人们为我提供指导,基本上我正在学习 iPad/iPhone 开发,终于遇到了多方向支持问题。
我查阅了相当多的 doco,我的书“开始 iPhone 3 开发”中有一个很好的章节。
但我的问题是,如果我要以编程方式更改我的控件(甚至对每个方向使用不同的视图),人们究竟如何维护他们的代码库?我可以想象意大利面条代码/数以千计的“如果”检查到处都是这么多问题,这会让我疯狂地对 UI 安排进行一点小改动。
有没有人有处理这个问题的经验?什么是控制它的好方法?
非常感谢马克
iphone - 如何实现 UIViewController 旋转以响应方向变化?
我的应用程序有大约 10 个不同的 UIViewControllers,如果设备旋转,我只想将其中一个切换到横向模式。(其余的,我想保持肖像。)
为了在那个视图上实现旋转,我需要实现其控制器的“shouldAutorotate”方法并返回 YES。由于此视图是通过导航控制器访问的,因此我还需要创建 UINavigationController 的子类,该子类实现“shouldAutorotate”并返回 YES。
此解决方案有效,但效果很好。我发现我推送到我的 UINavigationController 子类上的所有 UIViewController 都会响应旋转,即使我实现了“shouldAutorotate”并返回 NO。(请记住:我只希望一个特定的 UIViewController 响应旋转,而不是导航控制器堆栈中的每个。)
所以,我的问题是:我怎样才能最好地做到这一点?我能想出的所有解决方案似乎 1) 很麻烦,2) 更糟糕的是,似乎不起作用。
非常感谢。
ipad - iPad 中的 MPMoviePlayerController 全屏怪癖
我想在视图控制器中显示 MPMoviePlayerController 并让用户使用默认控件切换全屏,例如 YouTube 应用程序。我在一个简单的示例中使用以下代码:
在用户将视频设为全屏、旋转设备并点击屏幕之前,此方法效果很好。状态栏显示在错误的位置,如下面的截图所示。
我正在使用适用于 iPad 的模板选项卡栏应用程序。我只添加了上面的 viewDidLoad、视图变量和 XIB 中的 UIView 来显示电影播放器。
我究竟做错了什么?