当前位置: 代码迷 >> Android >> Android的screenOrientation设立
  详细解决方案

Android的screenOrientation设立

热度:75   发布时间:2016-04-28 07:30:56.0
Android的screenOrientation设置

首先在AndroidManifest.xml中,对需要设置的Activity加上如下两条属性:

Java代码??收藏代码
  1. android:configChanges="orientation|keyboard"?(转屏时不重置Activity,??
  2. 置了此项,则无法为横向和纵向分别设置不同的布局。因为转屏时不会删除并重新加载)??
  3. ?android:screenOrientation="sensor"?(开启重力传感器)???

?转屏函数:

Java代码??收藏代码
  1. import?android.content.pm.ActivityInfo;??
  2. ??
  3. setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);???
  4. //强制指定纵向?value为5??
  5. ??
  6. setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);???
  7. //强制指定反方向纵向?value为9??

?重力传感器监测:

Java代码??收藏代码
  1. import?android.app.Activity;??
  2. import?android.content.Context;??
  3. import?android.hardware.Sensor;??
  4. import?android.hardware.SensorEvent;??
  5. import?android.hardware.SensorEventListener;??
  6. import?android.hardware.SensorManager;??
  7. import?android.os.Bundle;??
  8. ??
  9. public?class?asd?extends?Activity{??
  10. ????SensorManager?mManager;??
  11. ????Sensor?mSensor;??
  12. ????SensorEventListener?mListener;??
  13. ????@Override??
  14. ????protected?void?onCreate(Bundle?savedInstanceState)?{??
  15. ????????super.onCreate(savedInstanceState);??
  16. ??????????
  17. ????????setRequestedOrientation(5);//初始化屏幕方向??
  18. ???????????mManager?=?(SensorManager)?getSystemService(Context.SENSOR_SERVICE);???
  19. ???????????mSensor?=?mManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);???
  20. ???????????mListener?=?new?SensorEventListener()?{???
  21. ????????????public?void?onAccuracyChanged(Sensor?sensor,?int?accuracy)?{???
  22. ??????????????};??
  23. ????????????public?void?onSensorChanged(SensorEvent?event)?{???
  24. ?????????????float?x?=?event.values[SensorManager.DATA_X];???
  25. ?????????????float?y?=?event.values[SensorManager.DATA_Y];???
  26. ?????????????float?z?=?event.values[SensorManager.DATA_Z];???
  27. ?????????????setCustomOrientation(x,?y,?z);???
  28. ????????????};???
  29. ???????????};???
  30. ???????????mManager.registerListener(mListener,?mSensor,?SensorManager.SENSOR_DELAY_GAME);??
  31. ????}??
  32. ??????
  33. ????public?void?setCustomOrientation(float?x,?float?y,?float?z)?{???
  34. ???????????
  35. ?????????if(y?>?1.5)??
  36. ?????????{??
  37. ??????????//setRequestedOrientation(??
  38. ??????????//????ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);??
  39. ???????????setRequestedOrientation(5);??
  40. ?????????}??
  41. ?????????else?if(y?<?-1.5)??
  42. ?????????{??
  43. ?????????????setRequestedOrientation(9);??
  44. ?????????}??
  45. ????????};??
  46. ????????@Override????
  47. ????????protected?void?onResume()?{?????
  48. ????????????super.onResume();???
  49. ?????????mManager.registerListener(mListener,?mSensor,???
  50. ????????SensorManager.SENSOR_DELAY_GAME);???
  51. ????????};??
  52. ??
  53. ????????@Override????
  54. ????????protected?void?onPause()?{?????
  55. ????????????super.onPause();???
  56. ?????????mManager.unregisterListener(mListener);???
  57. ????????};??
  58. }??

更多android学习资料

?

  相关解决方案