基于Android-Studio的APP开发学习笔记(二)

有些内容是从网上查的,部分未经验证,如有错误还望联系我

尺寸单位

  • dp (dip): 即设备无关像素(device independent pixels),这种尺寸单位在不同设备上的物理大小相同。

  • px:即像素(pixel)

  • pt:通常用来作为字体的尺寸单位,1 pt相当于1/72英寸。

  • inch:英寸,1 英寸约等于2.54厘米,主要用来描述手机屏幕的大小。

  • sp:大部分人只知道它通常用作字体的尺寸单位,实际大小还与具体设备上的用户设定有关

布局

LinearLayout

LinearLayout:线性布局,提供了控件水平垂直排列的模型

例如:

1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">

<xx控件... />
</LinearLayout>

布局相关的属性如下

orientation

android:orientation="vertical" 时, 只有水平方向的设置才起作用,垂直方向的设置不起作用。即:left,right,center_horizontal 是生效的。

android:orientation="horizontal" 时, 只有垂直方向的设置才起作用,水平方向的设置不起作用。即:top,bottom,center_vertical 是生效的。

不设定这个属性时,默认情况为水平排列

layout_width/layout_height、layout_weight

wrap_content:是layout_widthlayout_height的属性值之一,表示和自身内容一样的长度。

match_parent:是layout_widthlayout_height的属性值之一,表示和父组件一样的长度。

layout_weight:是布局文件的一个属性,它的值表示线性分割原本应有长度的权重,要和wrap_content和match_parent配合使用,不同情况列举如下:

  • wrap_content配合:先按照内容的多少去设定空间大小,然后按照权重的比例分配剩余控件。即当控件没有内容或内容未超出按照权重比例分配的空间时,就按照layout_weight设定的权重比例分配空间,当内容大小超过这样分配的空间时,控件就会扩张,其实就是按照wrap_content来占用空间了,剩下的空间仍然按照本段定理来分配。

  • match_parent配合:空间计算公式:空间大小=父容器大小+权重比例*剩余空间大小,比如两个同级控件A,B都是match_parent,A的layout_weight为1,B的layout_weight为2(总空间为1match_parent,所需空间为2match_parent,剩余空间为两者之差),空间A=1match_parent+1/(1+2)*(1match_parent-2match_parent)=2/3match_parent,同理,空间B=1/3match_parent。这个现象和正常情况有些相反,但是可以有效保证空间分配到的比例固定,不会被内容撑大。

  • 0dp配合:将layout_weight或者layout_height设为0dp,将直接按照layout_weight权重的比例分配空间,且不会被内容撑大

gravity、layout_gravity

两者都设置对齐方式的属性

gravity是设置自身内部元素的对齐方式,layout_gravity是设置自身相当于父容器的对齐方式

找色tint

有些纯色图片,如果需要显示别的颜色效果,这就用到了tint属性;

如果是背景,则设置android:backgroundTint,如果是图标,设置android:tint就行了