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

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

转屏函数:

import android.content.pm.ActivityInfo;setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); //强制指定纵向 value为5setRequestedOrientation(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;@Overrideprotected 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); };}

更多相关文章

  1. android EditText设置不可写
  2. android“设置”里的版本号
  3. 在Fragment中设置控件点击方法,执行失败。
  4. Android(安卓)闹钟管理类的使用
  5. Android设置通知栏/状态栏透明改变通知栏颜色和app最上部分颜色
  6. android 设置中划线 下划线等
  7. Andorid Dialog 示例【慢慢更新】
  8. android图表ichartjs
  9. Android(安卓)闹钟管理类的使用

随机推荐

  1. Android Tools集合下载
  2. [置顶] Android——4.2.2 源码目录结构分
  3. Flutter(三):实现Flutter代码调用Android
  4. Android(安卓)Context简介
  5. [置顶] Android ViewPager+Fragment超高
  6. 从头学Android之多媒体--使用MediaPlayer
  7. 转Android 安全攻防(二): SEAndroid bionic
  8. Android(安卓)ORM 数据库的使用
  9. Android sdcard文件读写操作
  10. Android(安卓)4.0 4.2 不能显示电池使用