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

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

转屏函数:

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

重力传感器监测:

Java代码 收藏代码
  1. importandroid.app.Activity;
  2. importandroid.content.Context;
  3. importandroid.hardware.Sensor;
  4. importandroid.hardware.SensorEvent;
  5. importandroid.hardware.SensorEventListener;
  6. importandroid.hardware.SensorManager;
  7. importandroid.os.Bundle;
  8. publicclassasdextendsActivity{
  9. SensorManagermManager;
  10. SensormSensor;
  11. SensorEventListenermListener;
  12. @Override
  13. protectedvoidonCreate(BundlesavedInstanceState){
  14. super.onCreate(savedInstanceState);
  15. setRequestedOrientation(5);//初始化屏幕方向
  16. mManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
  17. mSensor=mManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
  18. mListener=newSensorEventListener(){
  19. publicvoidonAccuracyChanged(Sensorsensor,intaccuracy){
  20. };
  21. publicvoidonSensorChanged(SensorEventevent){
  22. floatx=event.values[SensorManager.DATA_X];
  23. floaty=event.values[SensorManager.DATA_Y];
  24. floatz=event.values[SensorManager.DATA_Z];
  25. setCustomOrientation(x,y,z);
  26. };
  27. };
  28. mManager.registerListener(mListener,mSensor,SensorManager.SENSOR_DELAY_GAME);
  29. }
  30. publicvoidsetCustomOrientation(floatx,floaty,floatz){
  31. if(y>1.5)
  32. {
  33. //setRequestedOrientation(
  34. //ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
  35. setRequestedOrientation(5);
  36. }
  37. elseif(y<-1.5)
  38. {
  39. setRequestedOrientation(9);
  40. }
  41. };
  42. @Override
  43. protectedvoidonResume(){
  44. super.onResume();
  45. mManager.registerListener(mListener,mSensor,
  46. SensorManager.SENSOR_DELAY_GAME);
  47. };
  48. @Override
  49. protectedvoidonPause(){
  50. super.onPause();
  51. mManager.unregisterListener(mListener);
  52. };
  53. }

更多android学习资料

更多相关文章

  1. Android源代码下载
  2. 2018-10-11【Android代码重构使用技巧】
  3. Android studio 删除无用代码
  4. apk安装法之二----一段Android实现应用下载并自动安装apk包的代
  5. Android 通知的基本用法示例代码
  6. Android使用代码实现RelativeLayout,LinearLayout布局
  7. Android 从代码中打开淘宝和亚马逊、facebook、Message
  8. 修改dialog背景以及代码扩展AlertDialog和tint的使用
  9. 【Android】Android 彩信发送的两种方式+源代码

随机推荐

  1. 知乎3000多人关注!27w+阅读开发者进阶难题
  2. Android新增一个音频类型及双音频输出的
  3. Objective C - 与Android交互时高低位转
  4. android 学习示例
  5. 集成Android免费语音合成功能(在线、离线
  6. Android上 PeerConnection 与 PeerConnec
  7. eclipse如何进行真机调试
  8. 【Android】TypedArray和obtainStyledAtt
  9. android应用程序跳转到系统的各个设置页
  10. Android实现调用系统相册和拍照的Demo示