当前位置 博文首页 > 阿锋的专栏:4.0上设备屏幕旋转依赖设备的探索

    阿锋的专栏:4.0上设备屏幕旋转依赖设备的探索

    作者:[db:作者] 时间:2021-07-12 10:14

    ? ? 开发一个App,如果在手机上运行,我希望它能够竖屏显示,如果在一个平板上运行,我希望它可以横竖切换。那么如果判断设备是一个平板还是一个手机呢?可以根据获取设备的最短边(http://blog.csdn.net/yangyanfengjiayou/article/details/19082715)来判断是否是平板或者是手机。一般而言,平板的最短边会大于600dp.所以我们可以在values-sw600dp,value-sw720dp,values中添加bool.xml属性,其中values里面的值是false;

    ?<?xml version="1.0" encoding="UTF-8"?>
    ?<resources>
    ? ? <bool name="isOrientationChanged">true</bool>
    ?</resources>


    这样通过获取isOrientationChanged的值来判断是否是平板或者手机.true代表的是平板,false代表的是手机。ok,这里完成了第一步。接下来完成第二步,如何使手机运行这个app只保持竖屏?如何让平板运行这个app可以进行横竖屏切换。在你的onCreate里面添加如下代码,代码如下:

    // 配置文件决定该应用是否可以屏幕切换
    boolean isOrientationChange = getResources().getBoolean(R.bool.isOrientationChanged);
    ? ??

    ? ? ? ? //设置里面是否禁止横竖屏,若禁止了,设备也不能进行横竖屏切换了。

    ? ? ? ? ? boolean isRotate = (Settings.System.getInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0) != 0) ? true : false;
    if (isRotate) {
    if (isOrientationChange) {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
    } else {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }
    }else{
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
    }

    总之,上面的第一步适用于android 3.0以及以上的设备,因为在android3.0以及以上的时候才引入了sw这个属性。



    cs