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学习资料

 

首先在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学习资料

 

猜你喜欢

转载自htmlunit26.iteye.com/blog/1963707