Android小知识点整理
2016-03-17 11:20
330 查看
1、android中gravity和layoutgravity的区别
android:gravity:设置的是控件自身上面的内容位置
android:layout_gravity:设置控件本身相对于父控件的显示位置。
2、android:layout_weight的真实含义
设置了android:layout_weight属性(假设有效的情况下)的View的宽度=原有宽度(android:layout_width)+剩余空间的占比(android:layout_weight)。
3、android:configChanges属性
通过设置这个属性可以使Activity捕捉设备状态变化,属性包含以下几点:
1、不设置Activity的android:configChanges时,切屏会重新调用整个生命周期,切横屏时会执行一次,切竖屏时会执行两次
2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用整个生命周期,切横、竖屏时只会执行一次
3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用整个生命周期,只会执行onConfigurationChanged方法
但是,自从Android 3.2(API 13),在设置Activity的android:configChanges="orientation|keyboardHidden"后,还是一样会重新调用各个生命周期的。因为screensize也开始跟着设备的横竖切换而改变。所以在AndroidManifest.xml里设置的MiniSdkVersion和 TargetSdkVersion属性大于等于13的情况下,如果你想阻止程序在运行时重新加载Activity,除了设置"orientation", 你还必须设置"
screenSize",即android:configChanges="orientation|keyboardHidden|screenSize"。
后续会继续更新……
android:gravity:设置的是控件自身上面的内容位置
android:layout_gravity:设置控件本身相对于父控件的显示位置。
2、android:layout_weight的真实含义
设置了android:layout_weight属性(假设有效的情况下)的View的宽度=原有宽度(android:layout_width)+剩余空间的占比(android:layout_weight)。
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:background="@android:color/green" android:text="green" android:textSize="20sp" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="2" android:background="@android:color/red" android:text="red" android:textSize="20sp" />设屏幕宽度为L,在两个view的宽度都为match_parent的情况下,原有宽度为L,两个的View的宽度都为L,那么剩余宽度为L-(L+L) = -L,左边的View占比三分之一,所以总宽度是L+(-L)*1/3 = (2/3)L。事实上默认的View的weight这个值为0,一旦设置了这个值,那么所在view在绘制的时候会执行onMeasure两次。
3、android:configChanges属性
通过设置这个属性可以使Activity捕捉设备状态变化,属性包含以下几点:
VALUE | DESCRIPTION |
---|---|
"mcc" | 国际移动用户识别码所属国家代号是改变了----- sim被侦测到了,去更新mcc mcc是移动用户所属国家代号 |
"mnc" | 国际移动用户识别码的移动网号码是改变了------ sim被侦测到了,去更新mnc MNC是移动网号码,最多由两位数字组成,用于识别移动用户所归属的移动通信网 |
"locale" | 地址改变了-----用户选择了一个新的语言会显示出来 |
"touchscreen" | 触摸屏是改变了------通常是不会发生的 |
"keyboard" | 键盘发生了改变----例如用户用了外部的键盘 |
"keyboardHidden" | 键盘的可用性发生了改变 |
"navigation" | 导航发生了变化-----通常也不会发生 |
"screenLayout" | 屏幕的显示发生了变化------不同的显示被激活 |
"fontScale" | 字体比例发生了变化----选择了不同的全局字体 |
"uiMode" | 用户的模式发生了变化 |
"orientation" | 屏幕方向改变了 |
"screenSize" | 屏幕大小改变了 |
"smallestScreenSize" | 屏幕的物理大小改变了,如:连接到一个外部的屏幕上 |
2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用整个生命周期,切横、竖屏时只会执行一次
3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用整个生命周期,只会执行onConfigurationChanged方法
但是,自从Android 3.2(API 13),在设置Activity的android:configChanges="orientation|keyboardHidden"后,还是一样会重新调用各个生命周期的。因为screensize也开始跟着设备的横竖切换而改变。所以在AndroidManifest.xml里设置的MiniSdkVersion和 TargetSdkVersion属性大于等于13的情况下,如果你想阻止程序在运行时重新加载Activity,除了设置"orientation", 你还必须设置"
screenSize",即android:configChanges="orientation|keyboardHidden|screenSize"。
后续会继续更新……
相关文章推荐
- android 自定义标题栏
- Android系统开发之三:源码添加编译多个第三方jar包
- android开发——跨进程通讯数据传递(二)
- 设置Android studio 忽略项目路径
- 2016年3月17日Android学习笔记
- Android应对进程被杀死--Service(二)
- 为 Android 平台开发一个输入法
- Android多层级判断view是否被遮挡
- android MIPI屏 导航栏丢失
- android studio编写java8
- Android数据绑定框架DataBinding,堪称解决界面逻辑的黑科技
- Android验证码倒计时功能实现
- ANDROID安卓activity与fragment,activity之间互相传值(四)
- android环境搭建时出现各种问题时手动安装的方法
- android 通过eclipse混淆代码、签名
- android事件拦截处理机制详解
- 判断手机是否安装某程序的方法:
- android图像处理之Bitmap
- Android使用SharedPreferences实现登录帐号和密码的保存方法简介
- Android中控件TextView实现跑马灯只显示省略号问题