安卓基础学习笔记(二)

/ 0评 / 0

语言国际化自适应
--------------------------------
语言国际化自适应:当设备的使用者切换设备的语言环境时,APP上显示的字符串也会自动更换语言种类。即当用户设置为中文环境时,APP显示中文,当用户设置被英文环境时,APP显示英文。
语言国际化自适应的原理是:系统会根据语言环境,优先选取某些values-???文件夹下的string资源的配置,例如中文环境时,优先选取values-zh文件夹下的string资源,而英文环境时则优先选取values-en文件夹下的string资源。
实现语言国际化自适应的values文件夹名称的格式是:
values-小写语言简称-r大写地区简称
其中,“-r大写地区简称”可以忽略。
例如:values-zh-rCN

图片尺寸自适应
--------------------------------
图片尺寸自适应:系统根据设备的屏幕尺寸和分辨率,自动优先选取某drawable-???下的图片。
系统会根据设备的尺寸和分辨率得到设备的显示密度,不同的密度值则对应不同的?dpi,例如密度值在160则为ldpi,密度值在240时则为mdpi,密度值为320时为hdpi⋯⋯
实现过程:为不同的显示密度设计不同分辨率的图片,并把相同的图片使用相同的文件名存放在不同的drawable文件夹下即可,当APP运行时,系统会自动优先选取。

selector:背景选择器
--------------------------------
selector可以让控件在不同的状态(按下了、选中了、启用了⋯⋯)下显示不同的效果。
selector是在res\drawable下配置的XML文件。
应用selector时,需要将它设置在控件的图形相关属性上,例如背景属性。
【注意】在配置selector时,没有显式的定义state的能匹配所有状态,基于Android系统解析XML是从上之下,且懒汉式的解析,如果把这样的放在代码靠前的位置,则会导致后续配置的节点无效。所以,没有定义state的必须位于最后!

请详细描述“内存”的作用。
Cache -> 高速缓存:用于存储中间结果
ROM -> Read Only Memory
RAM -> Random Access Momory -> 随机存取存储器:内存条,用于存储正在执行的程序和数据,内存是CPU与所有外部设备交换数据的“桥梁”,断电以后数据将全部丢失!

ImageView:图片显示控件
----------------------------------
ImageView是用于显示图片的控件
属性:
android:src -> 需要显示的图片的来源,取值通常为 @drawable/???
android:contentDescription -> 使用文字对图片进行描述,如果不想设置,可以取值为 @null
android:scaleType -> 图片的缩放模式,当图片的尺寸与ImageView的尺寸不符时有效,取值为枚举类型

ImageButton:图片按钮控件
----------------------------------
参考ImageView

CheckBox:复选框
----------------------------------
CheckBox是可以在一组CheckBox勾选其中的若干项的控件。
CheckBox是TextView的间接子类。
属性:
android:checked -> 默认是否勾选,取值为true/false
监听器:
CompoundButton.OnCheckedChangedListener

RadioButton:单选按钮
----------------------------------
RadioButton用于在一组选项中能够选取有且仅有其中1项。
RadioButton是CompoundButton的子类,也是TextView的间接子类。
RadioGroup是RadioButton的容器,是LinearLayout的子类。
只有同一个RadioGroup的若干个子级RadioButton才是互斥的。
每一个RadioButton不可以通过反复点击取消选中,只能通过选中其它的互斥项才可以取消选中。
属性:
android:checked -> 默认是否勾选,取值为true/false

Eclipse的常用快捷键
----------------------------------
alt + / -> 自动提示,如果代码有错误,则可能无效
Ctrl + Shift + F -> 代码格式化(排版),如果使用中文输入法,则可能无效
Ctrl + Shift + O -> 整理import代码
alt + 向上/向下 -> 光标所在行的代码向上/向下移动1行
Ctrl + alt + 向上/向下 -> 将光标所在行的代码向上/向下复制
Ctrl + D -> 删除光标所在行的代码
Ctrl + 2, R -> 批量重命名
Shift + 回车 -> 向下产生新的空白行,并且光标移动到该行

仿团购APP的底部菜单
---------------------------------
1. 拖拽RadioGroup和RadioButton的组合到界面中
2. 确保RadioGroup中有4个RadioButton
3. 修改各控件的ID
4. 整理RadioGroup的属性,并设置为水平线性布局
5. 修改每一个RadioButton的android:text属性
6. 修改每一个RadioButton的android:layout_width为match_parent或者0dp,并且添加android:layout_weight="1"
7. 为每一个RadioButton添加android:button="@null"
8. 为每一个radioButton添加android:gravity="center|center"
9. 将素材图片复制,并粘贴到drawable-xhdpi下(粘贴到其它drawable-?dpi下也可以)
10. 为每一个RadioButton添加android:drawableTop属性,取值为@drawable/???
11. 删除界面根节点的4个padding属性
12. 其它设置,例如android:paddingTop、android:paddingBottom、android:drawablePadding、android:textSize
13. 为每一个RadioButton设计selector,设计完成后,修改android:drawableTop属性,取值为对应的selector
14. 创建文字颜色的selector,为每一个RadioButton添加android:textColor属性,取值为文字颜色的selector

关于layout_weight
layout_weight表示控件占据剩余宽度/高度的比重。
小结:
1. 把控件的宽度/高度设置为match_parent,则layout_weight属性值表现为控件实际占据宽度/高度的反比;
2. 把控件的宽度/高度设置为0dp,则layout_weight属性值表现为控件实际占据宽度/高度的正比。

评论已关闭。