`

Android的screenOrientation设置

 
阅读更多

首先在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 XML設置屏幕方向(android:screenOrientation)详解

    Android XML設置屏幕方向(android:screenOrientation)详解 注意:Android只支持270度旋转。 &lt;activity android:name=.MyActivity android:label=@string/app_name android:screenOrientation=portrait&gt; android...

    android 横竖屏限制的配置方法

    只需要在AndroidManifest.xml文件中加入android:screenOrientation属性限制。ndroid:screenOrientation=”landscape”是限制此页面横屏显示, ndroid:screenOrientation=”portrait”是限制此页面数竖屏显示。 例如...

    Android屏幕旋转适配

    代码解析 http://blog.csdn.net/leejizhou/article/details/51233342

    Android代码-仿微信app.rar

    android:screenOrientation="portrait" android:theme="@style/horizontal_slide" android:windowSoftInputMode="adjustResize"&gt; android:name=...

    Android禁止横屏竖屏切换的有效方法

    在AndroidManifest.xml的activity(需要禁止转向的activity)配置中加入android:screenOrientation=”landscape”属性即可(landscape是横向,portrait是纵向)。例如:  &lt;?xml version=1.0 encoding=utf-8?&gt; &...

    android视频旋转相关知识总结

    第一种:设置ScreenOrientation属性,通过属性设置可以避免在旋转时出现从新布局的情况: 如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的 AndroidManifest.xml中找到你所指定的Activity中加上android:...

    分享Android平板电脑上开发应用程序不能全屏显示的问题解决

    经过好几天的努力,才解决: 代码如下:” package=”myb.x2.app2″ android:versionCode=”1″ android:versionName=”1.0″&gt; &lt;android screenOrientation=”portrait” android:label=”@string/app_name”&gt;

    android 横竖屏切换生命周期

    为了避免activity 重新加载过程中有闪屏的现象,则需要再清单文件中配置该activity 的属性 android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation|screenSize",详细信息请参阅...

    Android实现固定屏幕显示的方法

    在Android开发中我们会碰到开发屏幕扭转的情况,如何固定住屏幕ScreenOrientation 呢? 在学习jetboy代码时,发现屏幕被旋转了,代查代码没有找到相关设置,在manifest.xml中找到了相关的代码: 找到这名代码: 代码...

    Android 屏幕横竖切换详解

    项目里面有一个横屏播放视频的PlayAcitivity,我和之前一样设置了android:screenOrientation=”landscape”。到这边都没有问题,后来加了一个需求,点击屏幕上面的”评论”按钮,弹出一个对话框,这个对

    fullSensor

    Expecting ‘android:screenOrientation=”unspecified”‘ or ‘”fullSensor”‘ for this activity so the user can use the application in any orientation and provide a great experience on Chrome OS ...

    Android横竖屏切换实例总结

    Android横竖屏切换在手机开发中比较常见,很多软件在开发过程中为了避免横竖屏切换时引发不必要的麻烦,通常禁止掉横竖屏的切换,即通过在AndroidManifest.xml中设置activity中的android:screenOrientation属性值来...

    Android之横竖屏切换

    android:screenOrientation属性,有以下几个参数: "landscape": 横屏显示 (宽比高长) "portrait": 竖屏显示 (高比宽长)

    Android app启动时黑屏或者白屏的原因及解决办法

    1、产生原因 其实显示黑屏或者白屏实属正常,这是因为还没加载到布局文件,就已经显示了window窗口背景,黑屏白屏就是window窗口背景。... &lt;item name=android:screenOrientation&gt;portrait &lt;item name=android:win

    关于Android Studio 页面翻转问题

    关于Android Studio 页面翻转问题 相信看到这篇文章的你 也在学习安卓的...android:screenOrientation=portrait 这里screenOrientation有很多属性值 portrait就是为锁定竖屏 另列出其他属性值的功能 “unspecified”-

    解析Android横竖屏切换的问题

    在竖屏时怎么显示),当然最简单的办法就是在项目的 AndroidManifest.xml中找到你所指定的activity 中加上 只竖屏显示的话(android:screenOrientation=”portrait”) 只横屏显示的话(android:screenOrienta

    宝石迷阵(android源码)

    import org.anddev.andengine.engine.options.EngineOptions.ScreenOrientation; import org.anddev.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy; import org.anddev.andengine.entity.scene....

    uCrop:Android图像裁剪库

    uCrop-Android图像裁剪库该项目旨在提供最终且灵活的图像裁剪体验。...activity android:name="com.yalantis.ucrop.UCropActivity" android:screenOrientation="portrait" android:theme="@style/Them

    Android Zxing 转换竖屏扫描且提高识别率的方法

    最近的一个Android需要用到扫码功能,用的是Zxing开源库。...android:screenOrientation=portrait 2&gt;. CameraManager类中的getFramingRectInPreview()方法,将left, right, top, bottom改变。 //竖屏 rect.l

Global site tag (gtag.js) - Google Analytics