① 安卓软件是怎么感知横屏竖屏。
智能手机里都具有陀螺仪,可以感知人的3D动作:
陀螺仪又叫角速度传感器,是不同于加速度计(G-sensor)的,他的测量物理量是偏转、倾斜时的转动角速度。在手机上,仅用加速度计没办法测量或重构出完整的3D动作,测不到转动的动作的,G-sensor只能检测轴向的线性动作。但陀螺仪则可以对转动、偏转的动作做很好的测量,这样就可以精确分析判断出使用者的实际动作。而后根据动作,可以对手机做相应的操作!
这些软件也是借助手机自身硬件的陀螺仪来变换的。
② android如何判断当前是横屏还是竖屏
用这个方法getActivity().getResources().getConfiguration().orientation
1竖屏0横屏
③ android 强制设置横屏 判断是横屏还是竖屏
判断activity 是横屏还是竖屏
方法 1: //根据设备配置信息
Configuration cf= this.getResources().getConfiguration(); //获取设置的配置信息
int ori = cf.orientation ; //获取屏幕方向
if(ori == cf.ORIENTATION_LANDSCAPE){
//横屏
}else if(ori == cf.ORIENTATION_PORTRAIT){
//竖屏
}
方法2: 通过设备分辨率还判断
DisplayMetrics dm = new DisplayMetrics();
mLauncher.getWindowManager().getDefaultDisplay().getMetrics(dm);
mWidth = dm.widthPixels;
mHeight = dm.heightPixels;
if (mHeight > mWidth){//layout port
// 竖屏 .......
}else{//layout land
// 横屏 .......
}
设置程序 横屏还是竖屏 有两种方法 1:通过配置实习 2: 代码实现
方法2://重写activity onResume方法
@Override protected void onResume() {
/** * 设置为横屏 */
if(getRequestedOrientation()!=ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
//ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE :横
//SCREEN_ORIENTATION_PORTRAIT:竖
}
super.onResume();
}
方法2: 配置androidManifest.xml实现
在activity 中加入 android:screenOrientation="landscape" 信息即可 该属性有两个值 portrait//竖 landscape//横
<activity android:name="MainActivity" android:label="@string/app_name" android:screenOrientation="landscape">
</activity>
搞定 快去试试 吧 不过细心的朋友 会发现 咦 当我屏幕的方向 发生变化的时候为啥 activity 的onCreate 怎么会重新加载呢
原因是: 由于屏幕的旋转会造出 当然的activity 元素关闭 从而造出activity重新加载 ,显然这有时候并不是我们要的效果 , 那我们 在看看 如果解决这个问题吧
我们在androidManifest.xml 文件中 activity 节点加入红色的 属性
<activity android:name="MainActivity" android:label="@string/app_name" android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden">
</activity>
1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法
同时在Activity的Java文件中重载onConfigurationChanged(Configuration newConfig)这个方法,这样就不会在布局切换或窗口切换时重载等方法。代码如下:
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
{
//land
}
else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
{
//port
}
}
//------------------------------------------------------
关于Android中Activity的横竖屏切换问题可以通过AndroidManifest.xml文件中的Activity来配置:
android:screenOrientation=["unspecified" | "user" | "behind" |
"landscape" | "portrait" |
"sensor" | "nonsensor"]
screenOrientation 用来指定Activity的在设备上显示的方向,每个值代表如下含义:
"unspecified" 默认值 由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向.
"landscape" 横屏显示(宽比高要长)
"portrait" 竖屏显示(高比宽要长)
"user" 用户当前首选的方向
"behind" 和该Activity下面的那个Activity的方向一致(在Activity堆栈中的)
"sensor" 有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换。
"nosensor" 忽略物理感应器,这样就不会随着用户旋转设备而更改了 ( "unspecified"设置除外 )。
④ android怎么设置横竖屏切换
方法一:
1、首先在android手机打开“设置”这个选项的,点击“显示”这个功能;
⑤ android 强制设置横屏 判断是横屏还是竖屏
@Overrideprotected void onResume() {
/** * 设置为横屏 */
if(getRequestedOrientation()!=ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} super.onResume();}
或者在配置文件中对Activity节点添加android:screenOrientation属性(landscape是横向,portrait是纵向)
android:launchMode="singleTask" android:screenOrientation="portrait">
/**
* 返回当前屏幕是否为竖屏。
* @param context
* @return 当且仅当当前屏幕为竖屏时返回true,否则返回false。
*/
public static boolean isScreenOriatationPortrait(Context context) {
return context.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT;
}
⑥ 如何检查Android手机是横向还是纵向
用于确定要检索哪些资源的当前配置可从资源的Configuration对象中获得:
getResources().getConfiguration().orientation;
可以通过查看方向值来检查方向:
int orientation = getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
// In landscape
} else {
// In portrait
}
⑦ android 强制设置横屏 判断是横屏还是竖屏
可以有两种方式:
动态设置,也就是在代码里
首先,判断语句是这样的:
if(getRequestedOrientation()!=ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE),这里判断是否为横屏,横竖屏在ActivityInfo里可以选择。
然后设置横竖屏:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
上面是第一种方法;
2.在配置文件中对Activity节点添加android:screenOrientation属性(landscape是横向,portrait是纵向)
android:launchMode="singleTask" android:screenOrientation="portrait">
要设置成竖屏设置成 SCREEN_ORIENTATION_PORTRAIT
⑧ Android项目中能否判断手机屏幕是 朝上 还是 朝下
// 获取手机横竖屏的方法
public boolean isScreenChange() {
Configuration mConfiguration = this.getResources().getConfiguration(); // 获取设置的配置信息
int ori = mConfiguration.orientation; // 获取屏幕方向
if (ori == Configuration.ORIENTATION_LANDSCAPE) {
// 横屏
return true;
} else if (ori == Configuration.ORIENTATION_PORTRAIT) {
// 竖屏
return false;
}
return false;
}
这个方法来判断是否是横竖屏
⑨ Android怎样判断当前屏幕是否为横屏状态
Configuration mConfiguration = this.getResources().getConfiguration(); //获取设置的配置信息int ori = mConfiguration.orientation; //获取屏幕方向if (ori == mConfiguration.ORIENTATION_LANDSCAPE) { //横屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//强制为竖屏} else if (ori == mConfiguration.ORIENTATION_PORTRAIT) { //竖屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//强制为横屏}