首先在AndroidManifest.xml中,对需要设置的Activity加上如下两条属性:
- android:configChanges="orientation|keyboard"?(转屏时不重置Activity,??
- 置了此项,则无法为横向和纵向分别设置不同的布局。因为转屏时不会删除并重新加载)??
- ?android:screenOrientation="sensor"?(开启重力传感器)???
?转屏函数:
- import?android.content.pm.ActivityInfo;??
- ??
- setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);???
- //强制指定纵向?value为5??
- ??
- setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);???
- //强制指定反方向纵向?value为9??
?重力传感器监测:
- import?android.app.Activity;??
- import?android.content.Context;??
- import?android.hardware.Sensor;??
- import?android.hardware.SensorEvent;??
- import?android.hardware.SensorEventListener;??
- import?android.hardware.SensorManager;??
- import?android.os.Bundle;??
- ??
- public?class?asd?extends?Activity{??
- ????SensorManager?mManager;??
- ????Sensor?mSensor;??
- ????SensorEventListener?mListener;??
- ????@Override??
- ????protected?void?onCreate(Bundle?savedInstanceState)?{??
- ????????super.onCreate(savedInstanceState);??
- ??????????
- ????????setRequestedOrientation(5);//初始化屏幕方向??
- ???????????mManager?=?(SensorManager)?getSystemService(Context.SENSOR_SERVICE);???
- ???????????mSensor?=?mManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);???
- ???????????mListener?=?new?SensorEventListener()?{???
- ????????????public?void?onAccuracyChanged(Sensor?sensor,?int?accuracy)?{???
- ??????????????};??
- ????????????public?void?onSensorChanged(SensorEvent?event)?{???
- ?????????????float?x?=?event.values[SensorManager.DATA_X];???
- ?????????????float?y?=?event.values[SensorManager.DATA_Y];???
- ?????????????float?z?=?event.values[SensorManager.DATA_Z];???
- ?????????????setCustomOrientation(x,?y,?z);???
- ????????????};???
- ???????????};???
- ???????????mManager.registerListener(mListener,?mSensor,?SensorManager.SENSOR_DELAY_GAME);??
- ????}??
- ??????
- ????public?void?setCustomOrientation(float?x,?float?y,?float?z)?{???
- ???????????
- ?????????if(y?>?1.5)??
- ?????????{??
- ??????????//setRequestedOrientation(??
- ??????????//????ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);??
- ???????????setRequestedOrientation(5);??
- ?????????}??
- ?????????else?if(y?<?-1.5)??
- ?????????{??
- ?????????????setRequestedOrientation(9);??
- ?????????}??
- ????????};??
- ????????@Override????
- ????????protected?void?onResume()?{?????
- ????????????super.onResume();???
- ?????????mManager.registerListener(mListener,?mSensor,???
- ????????SensorManager.SENSOR_DELAY_GAME);???
- ????????};??
- ??
- ????????@Override????
- ????????protected?void?onPause()?{?????
- ????????????super.onPause();???
- ?????????mManager.unregisterListener(mListener);???
- ????????};??
- }??
更多android学习资料
?