Questions tagged «orientation»

方向是指事物面对或被保持在上,下,左或右的方式。通常,您可以区分纵向(或垂直)和横向(或水平)方向。


11
强制“人像”定向模式
我试图对我的应用程序强制使用“人像”模式,因为我的应用程序绝对不是针对“风景”模式设计的。 阅读一些论坛后,我在清单文件中添加了以下几行: <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"> 而这个功能在我的活动课中: public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } 但同样,没有运气。

8
后台任务,进度对话框,方向更改-是否有100%可行的解决方案?
我在后台线程中从Internet下载了一些数据(我使用AsyncTask),并在下载时显示了进度对话框。方向更改,Activity重新启动,然后我的AsyncTask完成-我想关闭进度对话框并启动新的Activity。但是,调用dismissDialog有时会引发异常(可能是因为Activity已被破坏并且尚未启动新的Activity)。 解决此类问题的最佳方法是什么(即使用户更改了方向,也从可以工作的后台线程更新UI)?Google有人提供了一些“官方解决方案”吗?

9
如何获得当前的屏幕方向?
我只想在方向为横向时设置一些标志,以便在onCreate()中重新创建活动时可以在纵向加载与横向加载之间进行切换。我已经有一个用于处理布局的layout-land xml。 public void onConfigurationChanged(Configuration _newConfig) { if (_newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { this.loadURLData = false; } if (_newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { this.loadURLData = true; } super.onConfigurationChanged(_newConfig); } 重写onConfigurationChanged将阻止我的布局土地xml以横向加载。 我只想在onCreate()中获取设备的当前方向。我怎么能得到这个?

18
[UIScreen mainScreen] .bounds.size在iOS8中是否与方向相关?
我在iOS 7和iOS 8中都运行了以下代码: UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; BOOL landscape = (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight); NSLog(@"Currently landscape: %@, width: %.2f, height: %.2f", (landscape ? @"Yes" : @"No"), [[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height); 以下是iOS 8的结果: Currently landscape: No, width: 320.00, height: 568.00 Currently landscape: Yes, width: …



10
如何为纵向和横向指定不同的布局?
我已经看到了有关能够为一个活动指定两个单独的布局xml文件的参考,其中一个为纵向,一个为横向。我还没有找到有关如何执行此操作的任何信息。如何为每个活动指定哪个xml文件是纵向布局,哪个是横向布局? 是否还可以为不同的屏幕尺寸指定不同的布局?如果是这样,这是怎么做的?


8
Android-摄像头预览是横向的
我正在使用预览来显示相机在屏幕上看到的内容。 我可以使一切正常工作,创建曲面,设定曲面并显示曲面。 但是,它总是在人像模式下以不正确的90度角显示图片。 如图片所示: 我知道,使用以下代码将使图片整洁: setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 但是,我的活动中有预览,其中包含其他元素,因此以横向模式显示我的活动没有意义。(默认情况下禁用) 所以我想知道是否仍然可以更改预览的方向?并在“人像”模式下正确显示我的其余活动? 还是要旋转预览以使其正确显示?

7
Android Fragment生命周期随方向变化而变化
使用兼容性包以Fragments为目标2.2。 重新编码活动以在应用程序中使用片段后,我无法进行方向更改/状态管理,因此我创建了一个具有单个FragmentActivity和单个Fragment的小型测试应用程序。 来自方向更改的日志很奇怪,有多个对片段OnCreateView的调用。 我显然丢失了一些东西-例如分离片段并重新附加它,而不是创建新实例,但是我看不到任何文档来表明我要去哪里。 任何人都可以告诉我我在做什么错。谢谢 方向更改后,日志如下。 Initial creation 12-04 11:57:15.808: D/FragmentTest.FragmentTestActivity(3143): onCreate 12-04 11:57:15.945: D/FragmentTest.FragmentOne(3143): OnCreateView 12-04 11:57:16.081: D/FragmentTest.FragmentOne(3143): OnCreateView->SavedInstanceState null Orientation Change 1 12-04 11:57:39.031: D/FragmentTest.FragmentOne(3143): onSaveInstanceState 12-04 11:57:39.031: D/FragmentTest.FragmentTestActivity(3143): onCreate 12-04 11:57:39.031: D/FragmentTest.FragmentOne(3143): OnCreateView 12-04 11:57:39.031: D/FragmentTest.FragmentOne(3143): OnCreateView->SavedInstanceState not null 12-04 11:57:39.031: D/FragmentTest.FragmentOne(3143): OnCreateView 12-04 11:57:39.167: D/FragmentTest.FragmentOne(3143): OnCreateView->SavedInstanceState …


4
Android手机方向概述(包括指南针)
我一直试图绕过Android方向传感器。我以为我明白了。然后我意识到自己没有。现在我想(希望)我再次感觉更好,但我仍然不是100%。我将尝试解释我对此的零散理解,并希望如果我在部分内容上有误或填写任何空白,人们将能够纠正我。 我想象我正站在经度0度(本初子午线)和纬度0度(赤道)上。这个位置实际上是在非洲沿海的大海中,但请耐心等待。我将手机握在脸前,使手机的底部指向我的脚;我正对着北方(正对格林威治),因此电话的右侧将东方指向非洲。在这个方向上(参考下图),我的X轴指向东方,Z轴指向南方,Y轴指向天空。 现在,手机上的传感器使您可以在这种情况下确定设备的方向(而不是位置)。这部分总是让我感到困惑,可能是因为在我接受某项功能之前,我想先了解一下它们是如何工作的。似乎手机结合了两种不同的技术来确定其方向。 在开始之前,请想象一下,以上述方向站在纬度和经度为0度的那片假想土地上。还要想象一下,您被蒙住双眼并将鞋子固定在游乐场的环形交叉路口上。如果有人将您向后推,您将跌倒(朝北)并伸出双手来摔倒。同样,如果有人将您的左肩推开,您的右手就会摔倒。您的内耳具有“重力感应器” (youtube片段),可让您检测自己是向前/向后跌倒,还是向左/向右跌倒或向下(或向上!)跌倒!因此,人类可以检测到与手机相同的X和Z轴周围的对齐和旋转。 现在,假设有人现在在回旋处将您旋转90度,因此您现在正对着东方。您正在绕Y轴旋转。该轴是不同的,因为我们无法对其进行生物学检测。我们知道我们成一定角度,但我们不知道相对于地球磁北极的方向。相反,我们需要使用外部工具……电磁罗盘。这使我们能够确定我们所面对的方向。我们的手机也是如此。 现在,手机还具有3轴加速度计。我没有知道它们实际上是如何工作的,但我将其可视化的方式是将重力想象为恒定且均匀的“雨”从天上掉下来,并想象上图中的轴为可以检测流过的雨量的管子。当手机直立时,所有的雨水都会流过Y型“管”。如果逐渐旋转手机,使其屏幕面向天空,则通过Y的雨水量将减少至零,而通过Z的雨量将稳步增加,直到最大量的雨水通过。同样,如果我们现在将手机倾斜到其侧面,则X形管最终将聚集最大的雨量。因此,根据手机的方向,通过测量流经3根管子的雨水量,可以计算出方向。 该电话还具有一个电子指南针,其行为类似于普通指南针-它的“虚拟针”指向磁性北极。Android会合并来自这两个传感器的信息,以便每当生成一个SensorEventof 时,TYPE_ORIENTATION该values[3]数组便会具有 值[0]:方位角-(位于北磁北的罗盘) 值[1]:螺距,绕x轴旋转(是电话)向前或向后倾斜) 值[2]:围绕y轴滚动,旋转(手机向左或向右倾斜) 因此,我认为(即我不知道)Android提供方位角(罗盘方位角)而不是读取第三个加速度计的原因是罗盘方位角更有用。我不确定他们为什么不赞成使用这种类型的传感器,因为现在看来您需要在系统中为SensorEventtype 为的注册一个侦听器TYPE_MAGNETIC_FIELD。value[]需要将事件的数组传递到SensorManger.getRotationMatrix(..)方法中以获得旋转矩阵(请参见下文),然后将其传递到SensorManager.getOrientation(..)方法中。有谁知道为什么Android团队不赞成使用Sensor.TYPE_ORIENTATION?这是效率的事情吗?这是对类似问题的评论中所隐含的含义,但是您仍然需要在该注释中注册其他类型的侦听器。开发/示例/指南针/src/com/example/android/compass/CompassActivity.java示例。 我现在想谈谈旋转矩阵。(这是我最不确定的地方)因此,在上面我们有Android文档中的三个数字,我们将它们称为A,B和C。 A = SensorManger.getRotationMatrix(..)方法图,它表示世界坐标系 B = SensorEvent API使用的坐标系。 C = SensorManager.getOrientation(..)方法图 因此,我的理解是A代表“世界坐标系”,我认为这是指行星上的位置以(纬度,经度)加上可选的(海拔)的方式给出的方式。X是“东”坐标,Y是“北”坐标。Z指向天空并代表高度。 手机坐标系如图B所示是固定的。其Y轴始终指向顶部。手机会不断计算旋转矩阵,并允许在两者之间进行映射。因此,我是否认为旋转矩阵将B的坐标系转换为C是正确的?因此,当您调用SensorManager.getOrientation(..)方法时,将使用values[]与图C相对应的值的数组。当电话指向天空时,旋转矩阵为单位矩阵(矩阵数学等价为1),这意味着在对齐设备时不需要映射与世界坐标系。 好。我想我最好现在停止。就像我之前说过的那样,我希望人们能告诉我我在哪里弄糟或帮助了人们(或使人们更加困惑!)。

4
在iOS 8中处理方向更改的“正确”方法是什么?
有人可以告诉我在iOS 8中使用纵向和横向界面方向的“正确”或“最佳”方法吗?似乎我要用于此目的的所有功能在iOS 8中均已弃用,而我的研究却没有找到清晰,优雅的替代方法。我真的应该看一下宽度和高度来确定自己是纵向还是横向模式吗? 例如,在我的视图控制器中,应如何实现以下伪代码? if we are rotating from portrait to landscape then do portrait things else if we are rotating from landscape to portrait then do landscape things

15
Android中的相机方向问题
我正在构建一个使用相机拍照的应用程序。这是我执行此操作的源代码: File file = new File(Environment.getExternalStorageDirectory(), imageFileName); imageFilePath = file.getPath(); Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); //Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); startActivityForResult(intent, ACTIVITY_NATIVE_CAMERA_AQUIRE); 在onActivityResult()方法上,我BitmapFactory.decodeStream()用来拾取图像。 当我在Nexus One上运行我的应用程序时,它运行良好。但是,当我在Samsung Galaxy S或HTC Inspire 4G上运行时,图像的方向不正确。 使用人像模式拍摄时,真实图像(保存在SD卡上)始终旋转90度。 拍摄后的图像预览--------- SD卡上的真实图像 使用风景模式拍摄时,一切都很好。 拍摄后的图像预览--------- SD卡上的真实图像

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.