UI 概览
定义布局的手段有几种?
- 两种声明布局的方式:
1.在 XML 布局文件 中声明 UI (建议采用)
2.运行时实例化布局元素 (动态创建),编程创建 View 和 ViewGroup 对象 (代码)
如何将布局文件设置为某个 activity 的布局?
- 清单文件中 activity 的 name 属性指定的 .java 文件中的 onCreate 回调方法中
setContentView(R.layout.布局文件名)
我们自定义的控件的 id 在哪个文件中?引用系统资源同引用自定义资源的 id 有什么区别?
- R.java
编译 app 时,SDK 工具使用 ID 名在 gen/R.java 文件中创建一个新的 资源ID 来引用该控件 android:id="@android:id/empty"
引用系统资源
android:id="@+id/my_button"
引用自定义资源,+
表示新建
如何通过 id 来引用布局中的对象?为什么通过 findViewById 这个方法得到的对象要进行类型强转?
- 引用 XML 中的资源对象,
符号 (@) + 资源类型(这里是id) + 斜线 + 资源名
(理解错误)
在程序中创建一个 view 对象,然后通过 ID 引用布局中的对象 (改)
如 Button myButton = (Button) findViewById(R.id.my_button)
- findViewById 方法获取的是 View 的引用
需要强制转换成指定的类型
wrap_content、match_parent 这两个值什么含义?
- wrap_content,将视图大小调整为其内容所需的尺寸
- match_parent,视图尽可能采用其父视图组所允许的最大尺寸
view 的坐标系是怎样的?
LinerLayout 中的子元素是如何排列的?方向是怎么确定的?一行排不下,会不会折行?实验测试一下
- 默认水平排列
- 通过
android:orientation
属性指定方向 - 不会,线性布局的所有子视图依次堆叠
测试结果,排不下的会在最后一个叠加到一起,高度为行高
如何设置子控件的宽度或者高度相同?原理是什么?
- 可以通过 设置宽度或高度 0dp 后,设置相等权重
- 剩余空间按照权重分配
盒子模型是什么?
android:gravity同android:layout_gravity什么区别?
android:gravity
,表示其内容的对齐方式
android:layout_gravity
,表示其在父 ViewGroup 中的对齐方式
RelativeLayout 是什么?它中的子控件怎么确定位置?注意这些子控件的属性可取什么值?什么是基线?
- 相对布局
- 子控件通过相对它的 兄弟view 或者它的 父view 来进行定位
- 基线 Baseline,四线格的第三条线
TableLayout 的父类是哪个?说明什么问题?
- LinearLayout 类
- 表格布局可以看做线性布局,可以指定水平方向或垂直方向
TableLayout 中有多少行是由什么确定的?列是由什么确定的?
- TableRow控件的个数确定
- 列数最多的TableRow确定
TableRow 的宽度和高度分别是什么?它中的子控件呢?
- 宽度定为 match_parent,高度定为 wrap_content
- 子控件宽度高度定为 wrap_content
TableRow 中的子控件在哪列怎么确定?如何跨列?
android:layout_column
,指定第几列,从0开始android:layout_span
,指定跨列的个数
GridLayout 是什么布局?
- 网格布局
用一组没有宽度的线将屏幕区域划分为纵横交错的格子,将子控件依次放在格子 (cell) 里
GridLayout 中的 orientation, rowCount 及 columnCount 属性是什么含义?
- 指定其中控件的排列主序 (行主还是列主)
- 指定总行数
- 指定总列数
如何确定GridLayout中子控件所在的网格?如何将子控件扩展到其他网格?
android:layout_column //确定列
android:layout_row //确定行
android:layout_columnSpan
android:layout_rowSpan //指定占据多少行 多少列
什么是帧布局?
- 为每个加入其中的控件创建一个空白区域(称为一帧,每个控件占据一帧)
帧布局中的子控件按什么顺序显示?
- 只能在屏幕左上角显示一个控件,
如果添加多个控件,这些控件会按照顺序在屏幕的左上角重叠显示 (后定义的在上)
绝对布局中的子控件怎么确定位置?它的坐标系是什么?
- 通过指定 x、y 坐标来控制每一个控件的位置
android:layout_x;android:layout_y; 单位 dp
- 坐标系的第四象限为正
显示度量单位
显示度量单位分几大类?每类中的都有哪些单位?
- 长度单位,in 英寸 (inch),pt 点 (Points),mm (毫米)
像素单位,px (Pixel),dp (Density-independent Pixels),sp (Scale-independent Pixels)
sp同dp什么区别?px同dp什么关系,针对不同的分辨率的屏幕如何换算?
- dip = dp,密度无关的像素,一种基于屏幕密度的抽象单位,
sp,和dp的概念相似,单独用于表示字体大小的单位,用户可设置 - px,对应屏幕上实际像素点
在160dpi (dots per inch) 的屏幕上,1dp = 1px
换算公式
px = dp * (dpi / 160)
设置大小的时候为什么dp优于px,什么原理?
- 建议不要使用绝对单位(如像素px)来指定布局宽度和高度,
而是使用相对测量单位,如 dp、wrap_content 或 match_parent,
这样有助于确保你的应用在各类尺寸的设备屏幕上正确显示
国际化
所谓国际化,就是指软件在开发时应该具备支持多种语言和国家或地区的功能
为什么要提供对不同语言的支持?
- 让不同的国家或者地区的用户看到不同的效果
怎么创建区域目录?怎么创建不同语言的表现?
- values > 右击 > New > Values Resource File
File name: strings
Available qualifiers: Locale
单击 >>
然后选择语言 (Language: zh 例如中文)最后单击 OK