二、
2.1 View 与用户交互的一个对象
安卓sdk 文档 https://developer.android.google.cn/reference/packages
Android Platform: API Level 25
android.view.View View 是其他视图的基类 ;View类的子类一般位于android.widget包中
常用属性:
android:id ,android:background , android:padding 属性
2.2 ViewGroup 布局容器
常用子类
LayoutParams adnroid:layout_height ,android:layout_width
MarginLayoutParams 外边距 大小layout_marginTop ,layout_marginBottom Left,Start 外边距设置 API17
依赖关系:容器能存放对象或者容器
ViewGroup
丨 丨 丨
View View ViewGroup
丨 丨 丨
View View ViewGroup
3.1使用XML 布局文件控制UI界面
res/layout/activity_main.xml(任意java命名规范命名文件都可以)
默认自动生成
Java 代码:setContentView(R.layout.activity_main);
3.2.2 自定义View
开发步骤: 1.XML 帧布局管理器:FrameLayout
2.创建自定义View 继承View
3. 实例化View ,添加到Activity中
属性带有margin的是外边距
属性带有padding 是内边距
属性带有layout_gravity 例如 layout 的是相对于 父容器的布局
没有layout的属性是相对于这个view的布局
3.2.1 xml方式布局
通常采用<FrameLayout>帧布局方式
设置背景图片,设置文本大小,设置文本引用字符串
3.2.2 自定义view
拖拽一个小兔子
1.xml 布局文件 :设置帧布局管理器id="@+id/mylayout"
2.java自定义view
3.MainActivity实例化view并添加到帧布局管理器中
实例:小兔子移动
指明了所有的布局管理器格式,才能采用里面的属性
3.3.1相对布局管理器----RelativeLayout
子组件摆放方式 gravity=center
忽略此id的位置摆放 ignoreGravity=@id/user ,id=@+id/user
实例:软件更新界面
RelativeLayout.LayoutParams 几个重要的属性
同一个容器,组件之间的位置关系
layout_below 相对于其他组件下方;layout_toLeftOf 在其他组件左侧
layout_alignRight 相对于其他组件右对齐; layout_alignTop 在其他组件上方对齐
相对于父容器的位置关系
layout_alignParentTop 在父容器的上方对齐
layout_centerInParent 在父容器的中间
wrap_content :自己包裹的大小
match_parent: 和父组件一样长度
实例:
3.3.2线性布局管理器
LinearLayout
android:orientation="vertical"
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男"
/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女"
/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="未知"
/>
垂直方向线性排列
3.3.3帧布局管理器----FrameLayout
后面添加的是叠在最上方的视图效果
<TextView
android:layout_width="280dp"
android:layout_height="280dp"
android:layout_gravity="center"
android:background="#FF0000FF"
android:textColor="#FFFFFF"
android:text="蓝色背景TextView!"
/>
<TextView
android:layout_width="230dp"
android:layout_height="230dp"
android:layout_gravity="center"
android:background="#FF0077FF"
android:textColor="#FFFFFF"
android:text="天蓝色背景TextView!"
/>
<TextView
android:layout_width="180dp"
android:layout_height="180dp"
android:layout_gravity="center"
android:background="#FF00B4FF"
android:textColor="#FFFFFF"
android:text="水蓝色背景TextView!"
/>
前景图片:位于所有图形的最上方,不被其他覆盖
属性:foreground 表示为前景图片 ,foregroundGravity图片位置
实例:居中层叠正方形
3.3.4表格布局管理器
表格布局管理器:行列的形式管理添加的组件
TableRow行组件: 内部添加一个元素,即默认添加了一列
collspseColumns=”1,2”隐藏属性,隐藏第2,3列,多列采用逗号隔开
stretchColumns=”1”设置第二列被拉伸,拉伸宽度为屏幕剩余宽度
shrinkColums=”1”,设置第二列可以被收缩:比如第三列很长,如果不使用收缩,那么第三列会有信息被截断,使用收缩,则牺牲第二列的宽度以完整显示第三列
实例: 喜马拉雅登录界面
左右两侧留着2个空白列,使得中间的内容可以被拉伸
3.3.5网格布局管理器
- 表格布局管理器 只能跨列,网格可以跨行跨列
- 当一行超出显示,表格管理器无法显示;网格布局管理器自动换行
- 行,6列