Android的screenOrientation设置
16lz
2021-01-23
首先在AndroidManifest.xml中,对需要设置的Activity加上如下两条属性:
Java代码- android:configChanges="orientation|keyboard"(转屏时不重置Activity,
- 置了此项,则无法为横向和纵向分别设置不同的布局。因为转屏时不会删除并重新加载)
- android:screenOrientation="sensor"(开启重力传感器)
转屏函数:
Java代码- importandroid.content.pm.ActivityInfo;
- setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
- //强制指定纵向value为5
- setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
- //强制指定反方向纵向value为9
重力传感器监测:
Java代码- importandroid.app.Activity;
- importandroid.content.Context;
- importandroid.hardware.Sensor;
- importandroid.hardware.SensorEvent;
- importandroid.hardware.SensorEventListener;
- importandroid.hardware.SensorManager;
- importandroid.os.Bundle;
- publicclassasdextendsActivity{
- SensorManagermManager;
- SensormSensor;
- SensorEventListenermListener;
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setRequestedOrientation(5);//初始化屏幕方向
- mManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
- mSensor=mManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
- mListener=newSensorEventListener(){
- publicvoidonAccuracyChanged(Sensorsensor,intaccuracy){
- };
- publicvoidonSensorChanged(SensorEventevent){
- floatx=event.values[SensorManager.DATA_X];
- floaty=event.values[SensorManager.DATA_Y];
- floatz=event.values[SensorManager.DATA_Z];
- setCustomOrientation(x,y,z);
- };
- };
- mManager.registerListener(mListener,mSensor,SensorManager.SENSOR_DELAY_GAME);
- }
- publicvoidsetCustomOrientation(floatx,floaty,floatz){
- if(y>1.5)
- {
- //setRequestedOrientation(
- //ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
- setRequestedOrientation(5);
- }
- elseif(y<-1.5)
- {
- setRequestedOrientation(9);
- }
- };
- @Override
- protectedvoidonResume(){
- super.onResume();
- mManager.registerListener(mListener,mSensor,
- SensorManager.SENSOR_DELAY_GAME);
- };
- @Override
- protectedvoidonPause(){
- super.onPause();
- mManager.unregisterListener(mListener);
- };
- }
更多android学习资料
更多相关文章
- Android源代码下载
- 2018-10-11【Android代码重构使用技巧】
- Android studio 删除无用代码
- apk安装法之二----一段Android实现应用下载并自动安装apk包的代
- Android 通知的基本用法示例代码
- Android使用代码实现RelativeLayout,LinearLayout布局
- Android 从代码中打开淘宝和亚马逊、facebook、Message
- 修改dialog背景以及代码扩展AlertDialog和tint的使用
- 【Android】Android 彩信发送的两种方式+源代码