android横屏旋转
❶ android开发 使用夜神模拟器 屏幕旋转问题
没想到在中演示时候遇到了崩溃,检查发现是Asdk关闭之后在Bsdk的onActivityResult 方法,B页面成员变量丢失。
最终发现有夜神模拟器有横竖屏切换,加上没有保存现场,由于页面都是竖屏,于是选择了最简单的在AndroidManifest 配置了
强制竖屏,但是还是在返回过程中 模拟器切换横屏页面一闪而过,debug验证确认。这种情况再正常情况下不会出现,考虑是不是夜神模拟器做了横屏的修改。
解决办法
1.页面做了保存现场,和现场恢复
2.夜神模拟器在后台直接配置成手机竖屏模式
如果还有其他解决方法,可以讨论一下
❷ droidcam怎么旋转屏幕
我们对android的屏幕旋转方法进行如下总结:
1. AndroidManifest.xml设置
如果单单想设置横屏或者竖屏,那么只需要添加横竖屏代码:
android:screenOrientation="landscape"横屏设置;
android:screenOrientation="portrait"竖屏设置;
这种方法的优点:即使屏幕旋转,Activity也不会重新onCreate。
缺点:屏幕只有一个方向。
2. 代码动态设置
如果你需要动态改变横竖屏设置,那么,只需要在代码中调用setRequestedOrientation()函数:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
//横屏设置
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
//竖屏设置
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
//默认设置
这种方法优点:可以随意动态设置,满足我们人为改变横竖屏的要求,同时满足横竖屏UI不同的设计需求;
缺点:如果改变设置,那么,Activity会被销毁,重新构建,即重新onCreate;
3. 重写onConfigurationChanged
如果你不希望旋转屏幕的时候Activity被不断的onCreate(这种情况往往会造成屏幕切换时的卡顿),那么,可以使用此方法:
首先,在AndroidMainfest.xml中添加configChanges:
<activity android:name=".Test"
android:configChanges="orientation|keyboard">
</activity>
注意,keyboardHidden表示键盘辅助功能隐藏,如果你的开发API等级等于或高于13,还需要设置screenSize,因为screenSize会在屏幕旋转时改变;
android:configChanges="keyboardHidden|orientation|screenSize"
然后,在Activity中重写onConfigurationChanged方法,这个方法将会在屏幕旋转变化时,进行监听处理:
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stubsuper.onConfigurationChanged(newConfig);
if (newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
// Nothing need to be done here
} else {
// Nothing need to be done here
}
}
这个方法的优点:我们可以随时监听屏幕旋转变化,并对应做出相应的操作;
缺点:它只能一次旋转90度,如果一下子旋转180度,onConfigurationChanged函数不会被调用。
4. 结合OrientationEventListener,自定义旋转监听设置
如果你想更加完美,更加完全的掌控监听屏幕旋转变化,比如,转屏时不想重新onCreate,尤其是在Camera界面,不想出现旋转preview时屏幕的卡顿、黑屏等问题,那么,可以尝试:
首先,创建OrientationEventListener对象:
private OrientationEventListener mOrientationListener;
// screen orientation listener
private boolean mScreenProtrait = true;
private boolean mCurrentOrient = false;
然后,自定义屏幕变化回调接口
abstract protected void OrientationChanged(int orientation);
//screen orientation change event
最后,自定义监听类
private final void () {
mOrientationListener = new OrientationEventListener(this) {
@Override
public void onOrientationChanged(int rotation) {
if (((rotation >= 0) && (rotation <= 45)) || (rotation >= 315)||((rotation>=135)&&(rotation<=225))) {//portrait
mCurrentOrient = true;
if(mCurrentOrient!=mScreenProtrait)
{
mScreenProtrait = mCurrentOrient;
OrientationChanged(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Log.d(TAG, "Screen orientation changed from Landscape to Portrait!");
}
}
else if (((rotation > 45) && (rotation < 135))||((rotation>225)&&(rotation<315))) {//landscape
mCurrentOrient = false;
if(mCurrentOrient!=mScreenProtrait)
{
mScreenProtrait = mCurrentOrient;
OrientationChanged(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Log.d(TAG, "Screen orientation changed from Portrait to Landscape!");
}
}
}
};
mOrientationListener.enable();
}
在onCreate()中调用:
();
这个方法的优点:你可以任意随时准确的监听屏幕旋转变化的状态,可以随时动态改变横竖屏状态;
注:对于Camera来说,你可以设置初始化为横屏或者竖屏,然后对外提供旋转监听,这样,既可以获得屏幕旋转状态,让你做出相应的操作,又不会出现重新onCreate当前Activity造成的卡顿与短暂的黑屏切换。
❸ Android只支持横屏旋转,监听自动旋转开关
设置横屏其实很简单,就是设置android:screenOrientation就可以。所以我们先来了解一下android:screenOrientation的属性都有哪些?
unspecified,默认值,由系统决定,不同手机可能不一致
landscape,强制横屏显示
portrait,强制竖屏显
behind,与前一个activity方向相同
sensor,根据物理传感器方向转动,用户90度、180度、270度旋转手机方向,activity都更着变化
sensorLandscape,横屏旋转,一般横屏游戏会这样设置
sensorPortrait,竖屏旋转
nosensor,旋转设备时候,界面不会跟着旋转。初始化界面方向由系统控制
user,用户当前设置的方向
而满足我们需求的属性,分别为
1 landscape :强制横屏,不管自动旋转开关是否开启,都只能是正方向横屏,不会180度旋转
2 sensorLandscape : 横屏旋转,不管自动旋转开关是否开启,都会180度旋转
这两个属性明显不满足我们的需求,这时候我们只能去监听自动旋转开关的状态,然后设置对应的screenOrientation,这样才能满足需求。
但是这只是一次获取,所以我们需求实时监听开关状态。
我们通过ContentObserver来监听自动开关状态的改变
了解了这些之后,我们就能完成需求了
1 初始化监听
2 注册监听
3 退出时取消监听
4 相关的类与方法
❹ android 屏幕旋转生命周期和setRequestedOrientation强制旋转
屏幕会根据当前传感器进行自动旋转,旋转之后,activity屏幕的 生命周期不会发生变化 ,在activity中只会回调onConfigurationChanged方法
可见每次旋转onDestory()方法都会被调用,如果要保存一些activity被销毁前的数据的可以在onSaveInstanceState()方法中通过Bundle去保存
当我们调用了:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
或者
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
之后屏幕不会再自动旋转回来的情况
关于这点:我在b站App端也发现相关问题,点进b站的播放视频界面,我们手机开启屏幕自动旋转,当我们横竖屏旋转的时候是可以正常横竖屏切换的,但是我们点击视频右下角的放大(就是横屏)之后,自动旋转就失效了,要竖屏的话需要再点击一次
关于这个问题,就是我们说的setRequestedOrientation之后重力传感失效的问题,处理的方法也很简单
在AndroidManifest.xml中设置了android:configChanges="orientation|keyboardHidden|screenSize的基础上,在onConfigurationChanged中调用 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR) 方法,使其恢复重力传感即可
❺ 安卓手机怎样换为横屏
方法一:在AndroidManifest.xml中配置
假设不想让软件在横竖屏之间切换,最简单的办法就是在项目的AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation属性。他有下面几个参数:
"unspecified":默认值 由系统来推断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向.
"landscape":横屏显示(宽比高要长)
"portrait":竖屏显示(高比宽要长)
"user":用户当前首选的方向
"behind":和该Activity以下的那个Activity的方向一致(在Activity堆栈中的)
"sensor":有物理的感应器来决定。假设用户旋转设备这屏幕会横竖屏切换。
"nosensor":忽略物理感应器。这样就不会随着用户旋转设备而更改了("unspecified"设置除外)。
方法二:在java代码中设置
设置横屏代码:setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//横屏
设置竖屏代码:setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏
由于横屏有两个方向的横法,而这个设置横屏的语句,假设不是默认的横屏方向,会把已经横屏的屏幕旋转180°。
所以能够先推断是否已经为横屏了。假设不是再旋转,不会让用户认为转的莫名其妙啦!代码例如以下:
if(this.getResources().getConfiguration().orientation ==Configuration.ORIENTATION_PORTRAIT){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
三:
1.直接新建两个布局文件,剩下的就什么也不用管了:右键单击‘res’文件夹 -> 'new' -> 'Android resource directory'; 将 Directory name 填写 layout-land,Resource type 选择layout,这是建立了一个横屏的布局文
❻ Android 横屏旋转180°监听方式
横屏180°旋转系统不会回调到到 onConfigurationChanged() ,只能使用其他的方案,目前有2个方案
1、使用 OrientationEventListener 监听屏幕的旋转,里面本质使用的是 TYPE_ACCELEROMETER 传感器,具体如下:
开启调用 mOrientationListener. enable() , 关闭调用 mOrientationListener. disable() ;这种方式对性能消耗比较大, 但是可以获取到手机当前的角度
2、使用监听 DisplayManager 方式,手机切换方向会导致UI 显示的改变,所以会回调到这里
这种方式不会耗性能
❼ 安卓手机如何开启横屏模式
1.先找到并打开设置
拓展资料
Android 设置横屏模式显示,横屏模式大部分情况能弥补竖屏的不足——字体小、键盘小、画幅比例不合适,而且横屏模式下能提供更华丽、更流畅的感官体验,android 横屏,android landscape mode ,android 强制横屏,android 强制竖屏,android 横屏布局,android 设置全屏模式。
❽ android怎么设置横竖屏切换
方法一:
1、首先在android手机打开“设置”这个选项的,点击“显示”这个功能;