Android_Studio学习笔记-01
一、尺寸与单位
1. px(像素)
-
定义:屏幕上的物理像素点。
-
特点:
-
与实际屏幕像素一一对应。
-
在不同密度的屏幕上,相同
px值的元素显示的实际物理尺寸可能不同(高密度屏上更小)。
-
-
使用场景:通常不建议直接用于布局,除非处理自定义视图或精确像素操作。
2. dp(密度无关像素)
-
定义:虚拟像素单位,基于屏幕密度自动缩放。
-
换算:
-
在基准密度 160 dpi 的屏幕上,1 dp = 1 px。
-
换算公式:

-
dpi(Dots Per Inch,每英寸点数),dpi 是 屏幕物理密度的度量单位,表示每英寸长度上包含的物理像素点数量。
-
Android 将屏幕密度分为几个标准档位(称为 密度桶),方便开发者适配:
| 密度名称 | dpi范围 | 比例因子 | 示例设备 |
|---|---|---|---|
| ldpi | ~120 dpi | 0.75x | 已淘汰的老旧设备 |
| mdpi | ~160 dpi | 1x | 基准密度 |
| hdpi | ~240 dpi | 1.5x | 中低端设备 |
| xhdpi | ~320 dpi | 2x | 主流设备(如早期1080P) |
| xxhdpi | ~480 dpi | 3x | 主流设备(如多数1080P+) |
| xxxhdpi | ~640 dpi | 4x | 高端设备(2K/4K屏) |
-
特点:
-
使元素在不同密度的屏幕上保持相近的物理尺寸。
-
系统根据屏幕密度自动转换。
-
-
使用场景:推荐用于布局尺寸(宽度、高度、边距等),但不包括文字。
3. sp(缩放无关像素)
-
定义:基于
dp,但额外考虑用户的字体缩放偏好。 -
特点:
-
默认情况下,1 sp ≈ 1 dp。
-
当用户在系统设置中调整字体大小时,使用
sp的文本会随之缩放。
-
-
使用场景:专用于文字大小,以尊重用户可访问性设置。
总结
| 单位 | 全称 | 特点 | 使用场景 |
|---|---|---|---|
| px | Pixels(像素) | 物理像素,不随密度变化 | 不推荐常规布局 |
| dp | Density-independent Pixels | 根据屏幕密度缩放,保持物理尺寸一致 | 布局尺寸(宽高、边距等) |
| sp | Scale-independent Pixels | 在 dp 基础上叠加用户字体缩放设置 | 字体大小 |
二、常用UI控件
1.TextView(文本显示)
1.1 基本结构
android:id="@+id/text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="显示文本"
android:textColor="#FF0000"
android:textSize="16sp"
android:textStyle="bold"
android:gravity="center"
android:maxLines="2"
android:ellipsize="end" />
1.2 尺寸控制
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_width="200dp"
android:minWidth="100dp"
android:maxWidth="300dp"
android:minHeight="50dp"
android:maxHeight="150dp"
1.3 文本控制
android:text="直接文本"
android:text="@string/app_name"
android:textColor="#FF0000"
android:textColor="#80FF0000"
android:textColor="@color/colorPrimary"
android:textSize="16sp"
android:textStyle="bold"
android:textStyle="italic"
android:textStyle="bold|italic"
android:fontFamily="sans-serif"
android:fontFamily="sans-serif-condensed"
android:fontFamily="monospace"
android:fontFamily="serif"
1.4 对齐与布局
android:gravity="center"
android:gravity="center_horizontal"
android:gravity="center_vertical"
android:gravity="top|left"
android:gravity="bottom|right"
android:lineHeight="20sp"
android:lineSpacingExtra="4dp"
android:lineSpacingMultiplier="1.2"
android:padding="16dp"
android:paddingLeft="8dp"
android:paddingTop="8dp"
android:paddingRight="8dp"
android:paddingBottom="8dp"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:autoSizeTextType="uniform"
android:autoSizeMinTextSize="12sp"
android:autoSizeMaxTextSize="20sp"
android:autoSizeStepGranularity="1sp"
1.5 多行文本处理
android:singleLine="false"
android:maxLines="3"
android:minLines="1"
android:ellipsize="none"
android:ellipsize="start"
android:ellipsize="middle"
android:ellipsize="end"
android:ellipsize="marquee"
2.EditText(文本输入)
2.1 基本结构
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入内容"
android:text=""
android:inputType="text"
android:maxLines="1"
android:imeOptions="actionDone"
android:background="@android:drawable/editbox_background" />
2.2 文本相关属性
android:text="默认文本"
android:hint="请输入..."
android:textColorHint="#999999"
android:textColor="#000000"
android:textSize="16sp"
android:textStyle="normal"
android:typeface="normal"
android:fontFamily="sans-serif"
android:cursorVisible="true"
android:textCursorDrawable="@drawable/cursor"
android:textColorHighlight="#FF4081"
android:textSelectHandle="@drawable/select_handle"
2.3 布局与尺寸
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp"
android:minWidth="100dp"
android:minEms="10"
android:padding="8dp"
android:paddingLeft="8dp"
android:paddingTop="8dp"
android:paddingRight="8dp"
android:paddingBottom="8dp"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:layout_margin="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
2.4 输入限制
android:singleLine="true"
android:maxLines="3"
android:minLines="1"
android:maxLength="100"
android:minEms="5"
android:maxEms="20"
android:scrollHorizontally="true"
android:scrollbars="vertical"
android:overScrollMode="always"
2.5 inputType 类型大全
android:inputType="text"
android:inputType="textCapCharacters"
android:inputType="textCapWords"
android:inputType="textCapSentences"
android:inputType="textAutoCorrect"
android:inputType="textAutoComplete"
android:inputType="textMultiLine"
android:inputType="textImeMultiLine"
android:inputType="textNoSuggestions"
android:inputType="textUri"
android:inputType="textEmailAddress"
android:inputType="textEmailSubject"
android:inputType="textShortMessage"
android:inputType="textLongMessage"
android:inputType="textPersonName"
android:inputType="textPostalAddress"
android:inputType="textPassword"
android:inputType="textVisiblePassword"
android:inputType="textWebEditText"
android:inputType="textFilter"
android:inputType="textPhonetic"
android:inputType="number"
android:inputType="numberSigned"
android:inputType="numberDecimal"
android:inputType="phone"
android:inputType="datetime"
android:inputType="date"
android:inputType="time"
android:inputType="textCapWords|textAutoCorrect"
android:inputType="text|textMultiLine"
android:inputType="number|numberDecimal"
3.Button(按钮)
3.1 基本结构
3.2 尺寸与布局
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_width="100dp"android:layout_height="wrap_content"
android:layout_height="match_parent"
android:layout_height="48dp"
android:layout_margin="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:layout_marginRight="8dp"
android:layout_marginBottom="8dp"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:padding="12dp"
android:paddingLeft="16dp"
android:paddingTop="12dp"
android:paddingRight="16dp"
android:paddingBottom="12dp"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:minWidth="88dp"
android:minHeight="36dp"
3.3 文本属性
android:text="按钮文本"
android:text="@string/button_text"
android:textColor="#FFFFFF"
android:textColor="@color/white"
android:textSize="16sp"
android:textStyle="bold"
android:textStyle="italic"
android:textStyle="bold|italic"
android:fontFamily="sans-serif"
android:fontFamily="sans-serif-medium"
android:typeface="normal"
android:typeface="bold"
android:typeface="italic"
android:typeface="monospace"
android:gravity="center"
android:gravity="center_horizontal|center_vertical"
android:gravity="start|center_vertical"
android:gravity="end|center_vertical"
android:shadowColor="#80000000"
android:shadowDx="2"
android:shadowDy="2"
android:shadowRadius="3"
3.4 图标按钮
android:drawableLeft="@drawable/ic_add"
android:drawableStart="@drawable/ic_add"
android:drawableRight="@drawable/ic_arrow"
android:drawableEnd="@drawable/ic_arrow"
android:drawableTop="@drawable/ic_icon"
android:drawableBottom="@drawable/ic_icon"
android:drawablePadding="8dp"
android:drawableTint="@color/white"
4.ImageView(图片显示)
4.1 基本结构
android:id="@+id/image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/image"
android:scaleType="centerCrop"
android:adjustViewBounds="true"
android:maxWidth="300dp"
android:maxHeight="300dp"
android:contentDescription="@string/image_desc" />
4.2 尺寸与布局
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_width="100dp"android:layout_height="wrap_content"
android:layout_height="match_parent"
android:layout_height="100dp"
android:minWidth="50dp"
android:minHeight="50dp"
android:maxWidth="300dp"
android:maxHeight="300dp"
android:adjustViewBounds="true"
android:padding="8dp"
android:paddingLeft="8dp"
android:paddingTop="8dp"
android:paddingRight="8dp"
android:paddingBottom="8dp"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:layout_margin="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:layout_marginRight="8dp"
android:layout_marginBottom="8dp"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
4.3 图片源
android:src="@drawable/image"
android:src="@mipmap/icon"
android:src="@color/colorAccent"
android:src="@android:drawable/ic_menu_add"
android:background="@drawable/bg_image"
app:placeholder="@drawable/placeholder"
app:error="@drawable/error_image"
4.4 图片着色
android:tint="#FF4081"
android:tint="@color/colorAccent"
android:tintMode="src_in"
android:tintMode="multiply"
android:tintMode="screen"
android:tintMode="src_atop"
4.5 无障碍支持
android:contentDescription="@string/image_description"
android:contentDescription="商品主图"
android:importantForAccessibility="yes"
android:importantForAccessibility="no"
4.6 其他属性
android:cropToPadding="true"
android:baselineAlignBottom="true"
android:saveEnabled="true"
android:duplicateParentState="true"
5.CheckBox & RadioButton(选择控件)
基本属性
android:id="@+id/check_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="同意协议"
android:checked="false"
android:button="@null"
android:drawableStart="@drawable/custom_checkbox"
android:drawablePadding="8dp"
android:buttonTint="@color/colorPrimary"
android:checkedIcon="@drawable/checked_icon"
android:uncheckedIcon="@drawable/unchecked_icon"
android:textColor="@color/black"
android:textSize="16sp"
android:focusable="true"
android:clickable="true" />
RadioButton 通常需要与 RadioGroup 一起使用,以实现单选功能。
android:checkedButton="@+id/radio_button1"
android:buttonTint="@color/colorPrimary">









