4.0上设备屏幕旋转依赖设备的探索

前端之家收集整理的这篇文章主要介绍了4.0上设备屏幕旋转依赖设备的探索前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

开发一个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这个属性

猜你在找的设计模式相关文章