屏幕旋转

原创 2016年08月31日 13:25:23

播放器支持手机上下翻转

楼主百度了好久,始终没有得到合理的方法,最后看到了同事写的瞬间豁然大开

 OrientationEventListener orient = null;
 orient = new OrientationEventListener(mContext) {


            @Override
            public void onOrientationChanged(int orientation) {
                //right land
                if (orientation >= 45 && orientation < 135) {
                    setPlayBarViewRotation(Surface.ROTATION_180);


                //left land
                } else if (orientation >= 225 && orientation < 315) {
                    setPlayBarViewRotation(Surface.ROTATION_0);
                }
            }
        };
        orient.enable();
    }


private void setPlayBarViewRotation(int rotation) {
        if (playBarView == null)
            return;
        if (rotation == Surface.ROTATION_0)
            playBarView.setRotation(0);
        else if (rotation == Surface.ROTATION_180)
            playBarView.setRotation(180);
    }

今天在此总结一些关于屏幕旋转的方法

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函数不会被调用。


版权声明:版权所有,请勿侵权

Android屏幕旋转

  • 2017年08月01日 15:05
  • 399KB
  • 下载

旋转屏幕测试例子

  • 2017年08月24日 11:00
  • 2.07MB
  • 下载

Android6.0 旋转屏幕(四)应用强制设置方向

有时候我们也可以强制应用横频,这又是如何做到的? 就是调用了AMS的setRequestedOrientation接口,这个接口先是调用WMS的setAppOrientation函数设置这个Acti...

openGL拆分屏幕与图形旋转

  • 2015年08月04日 16:09
  • 5.81MB
  • 下载

Android开发--教你巧妙应对屏幕旋转

Android手机支持屏幕旋转功能,手机屏幕旋转直接引发了我们的App视图变化,我们选择怎样去处理手机的翻转以及当我们的手机屏幕发生了旋转的时候我们选择何种策略去进行处理视图直接影响了我们的App的用...
  • smbroe
  • smbroe
  • 2015年03月11日 15:42
  • 2556

屏幕自动旋转和调节大小

  • 2012年07月01日 17:10
  • 134KB
  • 下载

ios禁止屏幕旋转的几种方法

一般的应用,只会支持竖屏正方向一个方向,支持多个屏幕方向的应用还是比较少的。  不过我在工作的项目中,跟这个屏幕方向接触比较多,因为我们是一个有界面的 SDK,要让接入方接入的,一开始做没什么经验,考...
  • lklmr
  • lklmr
  • 2015年03月19日 15:29
  • 5914

旋屏软件-旋转屏幕的绿色小程序

  • 2010年03月31日 19:04
  • 441KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:屏幕旋转
举报原因:
原因补充:

(最多只允许输入30个字)