安卓
View与GroupView
Android里的图形界面都是由View和ViewGroup以及他们的子类构成的: View:所有可视化控件的父类,提供组件描绘和时间处理方法 。 ViewGroup: View类的子类,可以拥有子控件,可以看作是容器 Android UI中的控件都是按照这种层次树的结构堆叠得。 创建UI布局的方式有两种, 自己在Java里写代码或者通过XML定义布局,后者显得更加方便和容易理解! 也是我们最常用的手段!另外我们一般很少直接用View和ViewGroup来写布局,更多的 时候使用它们的子类控件或容器来构建布局!以下是本篇文章正文内容,下面案例可供参考
布局是什么?
布局是摆放控件的规则,可以认为布局是一个透明的容器。
透明容器内部按照规则去摆放控件。
只关注android:开头的即可。
Android中有六大布局,分别是:
- LinearLayout(线性布局)
- RelativeLayout(相对布局)
- TableLayout(表格布局)
- FrameLayout(帧布局)
- AbsoluteLayout(绝对布局)
- GridLayout(网格布局)
而今天我们要讲解的就是前两个布局。
LinearLayout(线性布局),我们屏幕适配的使用 用的比较多的就是LinearLayout的weight(权重属性)。
线性布局
线性布局表示内部的控件横着或者竖着排成一排。
android:orientation=“vertical” 方向
可选值:horizontal(水平),vertical(垂直)
线性布局支持比例划分的。
//共同作用分宽度
android:layout_width="0dp"
android:layout_weight="2"
相对布局
在某个参照物的某个方向或位置,相对布局的第一步就是给参照物起一个名字(id).
相对布局中,如果不指定子控件的相对位置,默认都在左上角堆放。
例子:创建一个新的布局文件
- 选中res—layout文件夹,右键—New—Android XML File
- 在弹出的窗口中的File栏,输入要创建的布局文件的名称(全英文小写,单词间使用_分割)
- 在下方的Root Element栏目中选择要使用的布局后点击Finish按键完成创建
给某个布局或控件起一个id
android:id="@+id/text1"
在某个参照物的右边
android:layout_toRightOf="@id/text1"
在某个参照物的左边
ndroid:layout_toLeftOf="@id/text1"
在某个参照物的下面
android:layout_below="@id/text1"
在某个参照物的上面
android:layout_above="@id/text1"
在父控件的中间
android:layout_centerInParent="true"
在父控件的水平中心
android:layout_centerHorizontal="true"
在父控件的垂直中心
android:layout_centerVertical="true"
对齐父控件的左边
android:layout_alignParentLeft="true"
对齐父控件的右边
android:layout_alignParentRight="true"
对齐父控件的顶端
android:layout_alignParentTop="true"
对齐父控件的底部
android:layout_alignParentBottom="true"
对齐某个控件的左边/右边
android:layout_alignLeft="@id/btn1"
android:layout_alignRight="@id/btn1"
对齐某个控件的顶端/底部
android:layout_alignTop="@id/btn1"
android:layout_alignBottom="@id/btn1"
布局嵌套
布局之间可以嵌套,对于外层的布局而言,内层的布局也相当于一个控件。
理论上布局可以嵌套任意层次,但是为了性能起见,应该尽可能的少用嵌套。
常用控件
TextView 文本显示控件
设置显示文字
android:text="我今晚想吃卷饼"
如果给TextView设置比较大的宽度和高度时,文字默认在左上。
可以通过设置重力方向来控制文字的位置。
android:gravity="center"
设置文字大小(单位使用sp)
android:textSize="10sp"
设置为浏览器的超链接
android:autoLink="web"
Button 按钮 和 ImageButton
Button是TextView的子类,拥有TextView的绝大多数属性。
另外身为一个子类,Button也对其父类TextView做出了一些改动。
例如:文字默认居中,增加了按钮的点击效果。
ImageView 图片显示控件
功能用于显示图片
设置显示的图片
android:src="@drawable/xxx"
图片命名规则:
- 不允许数字开头
- 不允许大写英文
- 不允许中文和特殊的符号
drawable目录中有任何一个违规的都不行
GridView 网格视图
<GridView
android:id="@+id/grid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:horizontalSpacing="10dp"
android:numColumns="3"
android:verticalSpacing="30dp" >
</GridView>
效果如图:
监听器 Listener
类似于提前先设定好某个“约定”(某个达成的条件A→执行某段代码B·)。
如果在程序运行的过程中达成了这个条件A,则自动触发B。
如果在程序运行的过程中没有达成条件A,则永远不会触发B。
“万物皆对象”
xml中布置控件(控件必须有id) → .java中找到对象
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
//按钮绑定id
mBtn = (Button) findViewById(R.id.btn1)