android资源类型
在Android开发中,res/目录下的资源管理是核心基础。
1. 图片资源
图片资源通常存放在res/drawable目录及其密度变体目录(如drawable-hdpi、drawable-xhdpi等)中。
核心知识点:
- 屏幕适配:为了适应不同屏幕密度的设备,需要为同一张图片提供多个分辨率的版本,分别放入对应的
drawable-density文件夹。系统会根据设备屏幕密度自动加载最匹配的图片。 - 支持格式:主要支持
.png(无损,首选)、.jpg(有损)以及Android 5.0后引入的矢量图(.xml格式,基于VectorDrawable),矢量图可以无限缩放而不失真,有助于减小APK体积。 - 引用方式:
- (1)通过Java代码调用图片资源文件
- 在Activity中可以通过getResources().getDrawable()方法调用图片资源文件
//调用mipmap文件夹中资源文件 getResources().getDrawable(R.mipmap.ic_launcher);
//调用以drawable开头的文件夹中的资源文件 getResources().getDrawable(R.drawable.icon);
(2) 在XML布局文件中调用图片资源
@mipmap/ic_launcher //调用mipmap文件夹中的资源文件
@drawable/icon //调用以drawable开头的文件夹中的资源文件
2. 主题和样式资源
样式(Style)和主题(Theme)资源定义在res/values/styles.xml文件中,用于统一管理控件或界面的外观属性。
核心知识点:
- 样式(Style) :针对单个View控件的属性集合。例如,定义一个包含文字大小、颜色的样式,可以让多个TextView复用该样式,避免重复代码
- 主题(Theme) :针对整个Activity或应用的样式集合。主题不仅可以控制文字颜色、大小,还可以控制窗口背景、标题栏、状态栏等。
- 继承机制:支持样式继承,可以基于系统自带主题(如
Theme.AppCompat.Light)进行扩展,只需修改特定的属性值即可实现自定义外观 - 设置主题
- (1)在AndroidManifest.xml文件中设置主题 android:theme ="@style/AppTheme"
- (2)在Java代码中设置主题 setTheme(R.style.AppTheme);
- 设置样式
- (1)在XML布局文件,如res/layout文件夹中的activity_main.xml中引用样式 style="@style/textViewSytle"
3. 布局资源
布局资源是Android UI界面的“骨架”,存放在res/layout/目录下,通常以XML文件形式定义。
- 调用布局资源的方式有2种:
(1)通过Java代码调用布局资源文件
//在Activity的onCreate()方法中调用activity_main.xml布局文件 setContentView(R.layout.activity_main);
(2)在XML布局文件中调用布局资源文件
//在XML布局文件中调用activity_main.xml布局文件
<include layout="@layout/activity_main"/>
4. 字符串资源
字符串资源存放在res/values/strings.xml文件中。
字符串标签<string></string>定义字符串的标签
<resources> <string name="app_name">字符串</string> </resources>
- 调用字符串资源的方式有2种:
- (1)通过Java代码调用字符串资源 getResources().getString(R.string.app_name);
(2)在XML布局文件中调用字符串资源 @string/app_name
5. 颜色资源
颜色资源存放在res/values/colors.xml文件中。
- 颜色格式:支持RGB、ARGB格式(8位十六进制,如
#FF0000为红色,#FFFF0000为带透明度的红色) - 定义与引用:定义颜色值(
<color name="colorPrimary">#3F51B5</color>)。 - 颜色标签:
<color></color>:定义颜色的标签
<resources> <color name="colorPrimary">#3F51B5</color> </resources>
- 引用方式与字符串类似:(1)在XML布局文件中调用尺寸资源
@color/colorPrimary
(2)通过Java代码调用尺寸资源R.color.colorPrimary。
6. 尺寸资源
尺寸资源存放在res/values/dimens.xml文件中。
-
单位:
- dp(密度无关像素) :推荐用于控件宽度、高度、边距。保证在不同屏幕密度的设备上显示的物理尺寸大致相同。
- sp(缩放无关像素) :推荐用于文字大小。它会随着用户在系统设置中调整字体大小偏好而自动缩放,保证无障碍体验。
-
尺寸的标签:
<dimen></dimen>:定义尺寸的标签
<resources> <dimen name="activity_horizontal_margin">16dp</dimen> </resources>
- 引用方式:
(1)通过Java代码调用尺寸资源 getResources().getDimension(R.dimen.activity_horizontal_margin);
(2)在XML布局文件中调用尺寸资源
@dimen/activity_horizontal_margin。
二、四种常用布局资源详细介绍
1. 线性布局(LinearLayout)
核心特征:所有子控件按照单一方向(水平或垂直)依次排列,不会自动换行,是最基础、最常用的布局方式
核心属性:
android:orientation:设置排列方向,vertical(垂直)或horizontal(水平)android:layout_weight:设置权重,让子控件按比例分配父布局的剩余空间,可实现等比例自适应效果
适用场景:表单界面、列表项、导航栏、按钮组、简单的垂直/水平排版界面
示例代码:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="按钮1" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="按钮2" />
</LinearLayout>
2. 相对布局(RelativeLayout)
核心特征:通过指定子控件相对于父容器或其他兄弟控件的位置来进行定位,不限制固定的排列方向,灵活性极高
核心属性:
- 相对于父容器:
android:layout_centerInParent(居中)、android:layout_alignParentBottom(贴紧底部)等 - 相对于兄弟控件:
android:layout_below(在某控件下方)、android:layout_toRightOf(在某控件右侧)等
适用场景:登录页面、个人中心、详情页、需要灵活定位控件的复杂界面
示例代码:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="标题" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/title"
android:layout_alignLeft="@id/title"
android:text="描述信息" />
</RelativeLayout>
3. 帧布局(FrameLayout)
核心特征:最简单的布局容器,所有子控件默认堆叠在左上角,后添加的控件会覆盖在先添加的控件之上
核心属性:
android:layout_gravity:设置子控件在容器内的对齐方式(如居中、靠右等)
适用场景:作为Fragment的容器、图片叠加层、角标、加载动画、简单的叠加式界面
示例代码:
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
4. 表格布局(TableLayout)
核心特征:按照行和列的形式组织控件,结构类似于HTML中的<table>标签,排版整齐规范
核心功能:
stretchColumns:设置某些列为“可拉伸”,填满屏幕剩余宽度shrinkColumns:设置某些列为“可收缩”,防止内容溢出collapseColumns:隐藏指定的列
适用场景:计算器界面、数据统计表、日历、规整的网格类界面
示例代码:
xml
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stretchColumns="1">
<TableRow>
<TextView android:text="姓名:" />
<EditText android:hint="请输入姓名" />
</TableRow>
<TableRow>
<TextView android:text="年龄:" />
<EditText android:hint="请输入年龄" />
</TableRow>
</TableLayout>