一、Android的程序结构
(1)app:用于存放程序的代码和资源等内容,它有很多子目录如下:
- libs: 用于存放第三方jar包
- src/androidTest:存放调试的代码
- src/main/java:用于存放程序的代码
- src/main/res:用于存放程序的资源文件、
- src/main/AndroidMainfest.xml: 整个程序的配置文件,可以配置程序所需要的权限和注册程序中用到的四大组件
- app/build.gradle: 文件时App的gradle构建脚本,在该文件中有四个重要属性:
- complieSdkVersion: SDK版本
- buildToolsVersion: 编译的Tools版本,
- minSdkVersion: 最低支持的Sdk版本,
- targetSdkVersion: 支持的目标SDK版本
(2)build.gradle:是Android程序的gradle构建脚本
(3)local.properties: 改文件用于指定Android程序中所使用的SDK路径,如:sdk.dir=C\:\\Users\\28652\\AppData\\Local\\Android\\Sdk
(4)settings.gardle: 该文件用于配置在Android程序中使用到的子项目
二、资源的管理与使用
在Android程序中的资源指的是可以带代码中使用的外部文件,这些文件作为程序的一部分,被编译到App中,Android中所有资源文件都保存在res目录下
1.图片资源
通过java代码调用图片资源,也就是MainActivity
文件中
getResources().getDrawable(R.mipmap.ic_launcher);
getResources().getDrawable(R.drawable.ic_launcher_background)
通过XML代码也就是在layout目录下的activity_main文件中,这里是调用在前景
android:foreground="@mipmap/ic_launcher"
2.主题和资源的样式
资源的样式在res/value目录下的theme.xml
,在老版本中可能是style.xml
,其中style
标签中用于定义主题,name
用于定义主题的名字,parent
用于定义Android自带提供的父主题,然后item
用于设置主题的样式,这里在item会报错,是因为在color下没有找到目标,不用管,在后面解决
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Base.Theme.HelloWorld" parent="Theme.Material3.DayNight.NoActionBar">
<!-- Customize your light theme here. -->
<!-- <item name="colorPrimary">@color/my_light_primary</item> -->
</style>
<style name="Theme.HelloWorld" parent="Base.Theme.HelloWorld" />
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>=
</resources>
在XML文件中调用主题
android:theme="@style/AppTheme"
在java中调用主题
setTheme(R.style.AppTheme);
主题可以改变整个窗口的样式,而通过样式可以改变单独控件的样式,name
设置名字,而item
可以设置控件的样式等
<resources>
<style name="textViewStyle">
<item name="android:layout_width">100dp</item>
<item name="android:layout_height">100dp</item>
<!-- <item name="android:background">#f54e39</item>-->
</style>
</resources>
在xml文件在控件里面可以通过style来调用
<TextView
...
style="@style/textViewStyle"
/>
3.布局资源
在layout
目录下有个activiy_main.xml
文件,这个文件的名字不是唯一可以修改,而且还可以在layout目录下在创建其他的布局文件,在Android开发中需要调用布局文件的方式有两种,一种是Java一种是Xml文件调用,
在java中调用布局文件
setContentView(R.layout.activity_main);
在xml文件中调用
<include layout="@layout/activity_main"/>
4.字符串资源
在Android开发中可以使用映射的方式来定义字符串的名字,在res/value/strings.xml
文件中,下面文件就是将app_name设置为HelloWorld
这个字符串
<resources>
<string name="app_name">HelloWorld</string>
</resources>
在XML文件中调用它
android:text="@string/app_name"
在java中调用
getResources().getString(R.string.app_name);
5.颜色资源
在我们主题定义了几个颜色,在color中找不到所以会报错,现在我们在color.xml文件创建这些颜色
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
</resources>
在java中调用
getResources().getColor(R.color.colorPrimary);
6.尺寸资源
在value
没有创建dimens.xml
文件需要手动自己创建,右键点击values文件夹然后New--->XML--->Vaules XML File,输入dimens.xml文件名字,随后就可以在文件中定义尺寸的大小了
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
</resources>
在java中调用
getResources().getDimension(R.dimen.activity_horizontal_margin);
在xml文件中调用
android:layout_width="@dimen/activity_horizontal_margin"
Android中的尺寸单位:
- px:像素
- dp: 设备独立像素
- sp: 比例像素,主要处理字体的大小
- in: 英寸,一英寸等于2.54cm
- pt: 磅,屏幕物理长度单位
- mm: 毫米