强制“竖屏”方向模式

325

我试图强制使我的应用程序保持“纵向”模式,因为我的应用程序绝不是为“横向”模式设计的。

在阅读了一些论坛后,我在清单文件中添加了以下几行:

<application 
  android:debuggable="true"
  android:icon="@drawable/icon" 
  android:label="@string/app_name"
  android:screenOrientation="portrait">

但是它在我的设备上(HTC Desire)不起作用。它会从“纵向”切换到“横向”,忽略清单文件中的行。

阅读更多论坛后,我尝试在我的清单文件中添加以下内容:

<application 
  android:debuggable="true"
  android:icon="@drawable/icon" 
  android:label="@string/app_name"
  android:configChanges="orientation"       
  android:screenOrientation="portrait">

还有这个在我的Activity类中的函数:

public void onConfigurationChanged(Configuration newConfig)
{
    super.onConfigurationChanged(newConfig);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

但是,再次尝试,仍然没有成功。

12个回答

-1

要使整个应用程序在完全纵向模式或完全横向模式下运行,您只需要做一件非常简单的事情。

  1. 进入您的应用程序清单文件夹
  2. 查看定义了intent-filter的活动。这基本上是启动应用程序时打开的第一个活动。
  3. 在此活动中添加 android:screenOrientation="portrait"

这将使您的整个应用程序在纵向模式下运行,或者您也可以将其设置为在横向模式下运行。


-17

简短回答: 不要这样做。

重新设计您的应用程序,使其可以在纵向和横向模式下运行。不存在不能在纵向和横向模式下工作的用户界面;只有懒惰或缺乏想象力的开发人员。

原因非常简单。您希望您的应用程序能够在尽可能多的设备上被尽可能广泛的受众使用。通过强制特定的屏幕方向,您阻止了您的应用程序在不支持该方向的设备上(可用地)运行,并且会让喜欢其他方向的潜在客户感到沮丧和疏远。

例如:您设计您的应用程序以强制纵向模式。客户在2合1设备上下载应用程序,他们主要在横向模式下使用。
后果1:您的应用程序无法使用,或者您的客户被迫取消连接他们的设备,旋转它,并在对他们来说不熟悉或不舒适的方向上使用它。
后果2:客户对您的应用程序的非直观设计感到沮丧,并找到替代品或完全放弃应用程序。

我现在正在使用一个应用程序与之斗争,作为一名消费者和开发者,我非常讨厌它。尽管这个应用程序非常有用,提供的功能也非常棒,但我绝对讨厌这个应用程序,因为它强制我使用一种与我使用设备的其他方式完全相反的方向。

你不希望你的客户讨厌你的应用程序。


我知道这并没有直接回答问题,所以我想为那些好奇的人详细解释一下。

开发人员往往擅长编写代码,但在设计方面却非常糟糕。虽然这个问题听起来像是一个代码问题,而且提问者肯定觉得这是一个代码问题,但实际上它是一个设计问题。

问题实际上是“我应该在我的应用程序中锁定屏幕方向吗?”提问者选择设计UI仅在纵向模式下运行和显示良好。我怀疑这是为了节省开发时间或因为应用程序的工作流程特别适合纵向布局(移动游戏常见)。但这些原因忽略了所有真正重要的因素,这些因素促使正确的设计。

  1. 客户参与度 - 您希望您的客户感到被吸引进入您的应用程序,而不是被推出。应用程序应该从客户打开应用程序之前所做的任何事情平稳过渡。(这就是大多数平台具有一致的设计原则的原因,因此大多数应用程序看起来或多或少相似,尽管它们不必如此。)

  2. 客户反应 - 您希望您的客户对您的应用程序作出积极反应。他们应该享受使用它。即使它是一个工资单应用程序,也应该让他们愉快地打开它并打卡。应用程序应该为您的客户节省时间,并减少对替代方案的沮丧。(令用户烦恼的应用程序会引起对您的应用程序的不满,这种不满会转化为对您品牌的不满。)

  3. 客户转化 - 您希望您的客户能够快速轻松地从浏览转移到互动。这是任何应用程序的最终目标,将印象转化为收入。(从商业角度来看,不产生收入的应用程序是浪费您建立的时间。)

一个设计不良的用户界面会降低客户参与度和响应率,最终导致收入下降。在以移动设备为中心的世界中(特别是在纵向/横向显示模式方面),这就解释了为什么响应式网页设计如此重要。沃尔玛加拿大于2013年11月在其网站上引入响应式设计,客户转化率增长了20%O'Neill Clothing实施了响应式网页设计,iOS设备用户的收入增长了101.25%,Android设备用户的收入增长了591.42% 开发人员也有倾向于专注于实现特定的解决方案(例如锁定显示方向),而本站的大多数开发人员将非常乐意帮助实现该解决方案,而不会质疑是否这是解决问题的最佳方法。
锁定屏幕方向相当于实现do-while循环的UI设计等效物。您真的确定要以这种方式做吗?还是有更好的替代方案?
不要强制将您的应用程序投射为单一显示模式。请投入额外的时间和精力,使其具有响应式设计。

4
我理解并同意你对那个设计不佳的用户界面的看法。但这并不改变你可能需要这样做的事实,而且该框架应该具备这些功能,总体而言。你永远不知道未来的应用程序会是什么样子并需要做什么,所以这个问题仍然是有效的。 - Bernardo Dal Corno
1
你没错。我认为我的答案在某种程度上受到了一些应用程序不必要地做这件事情而带来的挫败感影响,它完全破坏了体验。我会说锁定显示模式的合法情况实在太少了(仍然可行且更可取,只是不在预算内)。这也引起了其他问题;随着编码变得越来越容易,很多菜鸟开发者写应用程序,因为他们知道代码,但并没有学习如何做UI或设计,甚至连基本的最佳实践(Java应用程序安装在\AppData中-呕吐)。 - Thomas
1
虽然StackExchange存在回答特定问题,但答案应该尽可能地编写得通用,以便这些答案对他人有用。开发远不止于编写代码,世界上有那么多垃圾应用程序的原因是因为许多开发人员忘记了或从未学习过这个重要原则。我个人认为,如果你在手机上进行VR体验,那么你的VR体验就是错误的 - 但成本推动了VR需求进入不应支持它的平台。 - Thomas
4
我不反对这个答案,但它回答的并不是被问到的问题。 - bmovement
1
我忍不住点赞了这个回答,尽管它并没有回答问题。有时候你只需要记住Chromebook的存在。 - Arthur Khazbs
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接