rgr*_*_mt 46
不推荐使用getOrientation(),但这不一定是问题的根源.确实,您应该使用getRotation()而不是getOrientation(), 但是如果您的目标是Android 2.2(API级别8)或更高级别,则只能使用它.有些人甚至Google员工有时似乎忘记了这一点.
举个例子,我的HTC渴望运行Android 2.2.getOrientation()和getRotation()都报告相同的值:
当你把它"放在头上"时它不报告(旋转180,这将是值2).该结果可能是特定于设备的.
首先,如果您使用模拟器或设备,则应明确说明.你知道如何旋转模拟器吗?然后我建议使用onCreate()方法创建一个小测试程序,如下所示:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
WindowManager mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
Display mDisplay = mWindowManager.getDefaultDisplay();
Log.d("ORIENTATION_TEST", "getOrientation(): " + mDisplay.getOrientation());
}
Run Code Online (Sandbox Code Playgroud)
检查设备的屏幕是否已锁定在设备设置 设置>显示>自动旋转屏幕中.如果取消选中该复选框,Android将不会向您的活动报告方向更改.要明确:它不会重新启动活动.在我的情况下,我只得到0,就像你描述的那样.
如果将这些行添加到onCreate(),可以从程序中检查
int sysAutoRotate = 0;
try {
sysAutoRotate = Settings.System.getInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION);
} catch (SettingNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.d("ORIENTATION_TEST", "Auto-rotate Screen from Device Settings:" + sysAutoRotate);
Run Code Online (Sandbox Code Playgroud)
如果自动旋转关闭则返回0,如果启用自动旋转则返回1.另一个尝试.在您的原始程序中,您可能已在清单中设置
android:screenOrientation="portrait"
Run Code Online (Sandbox Code Playgroud)
效果相同,但这次只针对您的活动.如果您制作了小型测试程序,这种可能性就会被消除(这就是我推荐它的原因).
备注:是的,整个方向/轮换主题确实是一个"有趣"的主题.尝试一下,使用Log.d(),实验,学习.
| 归档时间: |
|
| 查看次数: |
62844 次 |
| 最近记录: |