byt*_*der 4 android orientation android-sensors
我正在努力完成Reto Meier的推荐方法,以防止屏幕方向发生变化.可以在Android Protips:下载幻灯片和代码片段的位置找到他在Google IO期间的演讲中的幻灯片(参见#23).
我已逐步完成代码并设置了值,但屏幕方向仍然有所改变.仅供参考,我在应用程序中注册了这个监听器.
这是我的代码:
final SensorManager sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
sm.registerListener(
new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
if (sensorEvent.sensor.getType() == Sensor.TYPE_ORIENTATION) {
final WindowManager wm = (WindowManager) getApplicationContext()
.getSystemService(Context.WINDOW_SERVICE);
final Display display = wm.getDefaultDisplay();
int x = SensorManager.AXIS_X;
int y = SensorManager.AXIS_Y;
switch (display.getRotation()) {
case Surface.ROTATION_90:
x = SensorManager.AXIS_Y;
y = SensorManager.AXIS_MINUS_X;
break;
case Surface.ROTATION_180:
y = SensorManager.AXIS_MINUS_Y;
break;
case Surface.ROTATION_270:
x = SensorManager.AXIS_MINUS_Y;
y = SensorManager.AXIS_MINUS_X;
break;
case Surface.ROTATION_0:
default:
break;
}
SensorManager.remapCoordinateSystem(sensorEvent.values, x, y, new float[] {});
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}, sm.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_NORMAL);
Run Code Online (Sandbox Code Playgroud)
byt*_*der 12
当前不工作的所有30多行代码都可以替换为AndroidManifest.xml
文件中的某些XML值.
我们都见过
<activity android:name=".YourActivity" android:screenOrientation="portrait" ></activity>
Run Code Online (Sandbox Code Playgroud)
我们都知道,对于具有默认横向方向的平板电脑,它不能很好地工作.但是你们有多少人见过这个?
<activity android:name=".YourActivity" android:screenOrientation="nosensor" ></activity>
Run Code Online (Sandbox Code Playgroud)
基本上它使得设备的方向不响应传感器.因此,如果您的默认值是横向或纵向,则不会更改.我已经在我的Droid X和Xoom上测试了它,它的工作方式与我预期的一样.
我希望这有助于其他人.
归档时间: |
|
查看次数: |
3869 次 |
最近记录: |