android 横屏和竖屏切换总结(特别是Javacode部分)
来源:互联网 发布:西安市干部网络培训 编辑:程序博客网 时间:2024/06/08 15:11
网上很多的横屏竖屏部分类容很零散,现在我来总结一下
一、利用配置文件布局
layout-land 横屏
layout-port 竖屏
二、在Javacode中的onConfigurationChanged部分手动布局
1、 编写了横屏竖屏的配置文件后
2、然后把layout中的xml文件分别考到以上目录,修改布局就可以了代码中不做任何更改。
在 AndroidManifest.xml文件中的 主Activity中加入
android:configChanges="orientation|keyboardHidden"
3、 然后在主Activity中的onConfigurationChanged里面做自己想要的设置
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
// 横屏内容
} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
// 竖屏内容
}
}
例如
@Override
public void onConfigurationChanged(Configuration config) {
super.onConfigurationChanged(config);
if (config.orientation == Configuration.ORIENTATION_PORTRAIT) {
setContentView(R.layout.main); //布局
tv = (TextView) findViewById(R.id.EditText01); //控件
}
if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
setContentView(R.layout.main); //布局
tv = (TextView) findViewById(R.id.EditText01); //控件
}
}
三、动态更改屏幕方向
/如果是竖排,则改为横排
if(getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
//如果是横排,则改为竖排
else if(getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
四、关于 android:configChanges属性
在android中每次屏幕的切换动会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次Create的时候载入配置。在activity加上android:configChanges="keyboardHidden|orientation"属性,就不会重启activity.而只是调用onConfigurationChanged(Configuration newConfig).这样就可以在这个方法里调整显示方式.
一般认为有以下几点:
1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法
VALUE DESCRIPTION
"mcc" 国际移动用户识别码所属国家代号是改变了----- sim被侦测到了,去更新mcc mcc是移动用户所属国家代号
"mnc" 国际移动用户识别码的移动网号码是改变了------ sim被侦测到了,去更新mnc MNC是移动网号码,最多由两位数字组成,用于识别移动用户所归属的移动通信网
"locale" 地址改变了-----用户选择了一个新的语言会显示出来
"touchscreen" 触摸屏是改变了------通常是不会发生的
"keyboard" 键盘发生了改变----例如用户用了外部的键盘
"keyboardHidden" 键盘的可用性发生了改变
"navigation" 导航发生了变化-----通常也不会发生
"screenLayout" 屏幕的显示发生了变化------不同的显示被激活
"fontScale" 字体比例发生了变化----选择了不同的全局字体
"uiMode" 用户的模式发生了变化
"orientation" 屏幕方向改变了
"screenSize" 屏幕大小改变了
"smallestScreenSize" 屏幕的物理大小改变了,如:连接到一个外部的屏幕上
- android 横屏和竖屏切换总结(特别是Javacode部分)
- Android横竖屏切换总结
- Android横竖屏切换总结
- Android横竖屏切换总结
- Android横竖屏切换总结
- Android横竖屏切换总结
- Android横竖屏切换总结
- android 横竖屏切换总结
- Android横竖屏切换总结
- Android横竖屏切换总结
- Android横竖屏切换总结
- Android横竖屏切换总结
- Android横竖屏切换总结
- Android横竖屏切换总结
- Android横竖屏切换总结
- Android横竖屏切换总结
- Android横竖屏切换总结
- Android横竖屏切换总结
- 输出最短字符串
- PKU C++程序设计实习 学习笔记3 多态与虚函数
- 优化R程序性能
- 自然语言处理的一些工具文档介绍
- How to grant a user have root priviledge on Ubuntu12
- android 横屏和竖屏切换总结(特别是Javacode部分)
- JVM-GC总结-分代垃圾回收详解--第一发
- 图解CSS的padding,margin,border属性(详细介绍及举例说明)
- Mac 下利用 FileMerge 进行代码合并教程
- C++类构造函数初始化列表
- js获取当前服务器时间并动态刷新
- 构建OpenStack的云基础架构:ManageIQ(转)
- 【ExtJs】带日期组件的文本输入框、容器与Ext.Msg.alert告警框告警两次
- Cocos2d-x 屏幕适配解决方案