跟着动脑学院up主学习Android开发,记录学习笔记
2022 最新 Android 基础教程,从开发入门到项目实战,看它就够了,更新中_哔哩哔哩_bilibili
(弱弱地说一句,绝大部分内容都是up主为我们准备好的资料里摘抄下来的)
下面正式开始我们初学者之旅
2.2 App的工程结构
2.2.1 App工程目录结构
App工程分为两个层次,第一个层次是项目;
另一个层次是模块,为模块对应实际的App,模块依附于项目,每个项目至少有一个模块,也能拥有多个模块
该项目下面有两个分类:一个是app(代表app模块);另一个是Gradle Scripts
app下面又有3个子目录
- manifests子目录,下面只有一个XML文件,即AndroidManifest.xml,它是App的运行配置文 件。
- java子目录,下面有3个com.example.myapp包,其中第一个包存放当前模块的Java源代码,后 面两个包存放测试用的Java代码。
- res子目录,存放当前模块的资源文件。res下面又有4个子目录:
- drawable目录存放图形描述文件与图片文件。
- layout目录存放App页面的布局文件。
- mipmap目录存放App的启动图标。
- values目录存放一些常量定义文件,例如字符串常量strings.xml、像素常量dimens.xml、颜色常 量colors.xml、样式风格定义styles.xml等。
Gradle Scripts下面主要是工程的编译配置文件,主要有:
(1)build.gradle,该文件分为项目级与模块级两种,用于描述App工程的编译规则。
(2)proguard-rules.pro,该文件用于描述Java代码的混淆规则。
(3)gradle.properties,该文件用于配置编译工程的命令行参数,一般无须改动。
(4)settings.gradle,该文件配置了需要编译哪些模块。初始内容为include ':app',表示只编译app模 块。
(5)local.properties,项目的本地配置文件,它在工程编译时自动生成,用于描述开发者电脑的环境 配置,包括SDK的本地路径、NDK的本地路径等。
2.2.2 编译配置文件build.gradle
新创建的App项目默认有两个build.gradle,一个是Project项目级别的build.gradle;另一个是Module 模块级别的build.gradle。
- 项目级别的build.gradle指定了当前项目的总体编译规则
- 模块级别的build.gradle对应于具体模块,每个模块都有自己的build.gradle,它指定了当前模块的详细 编译规则
- 注意每个版本的Android Studio都有对应的Gradle版本,只有二者的版本正确对应,App工程才能成功编译。
2.2.3 运行配置文件AndroidManifest.xml (清单文件)
manifest下 面有个application节点,简单说说这几个属性如下:
android:allowBackup,是否允许应用备份。
允许用户备份系统应用和第三方应用的apk安装包和应用数据,
以便在刷机或者数据丢失后恢复应用,用户即可通过adb backup和adb restore来进行
对应用数据的备份和恢复。为true表示允许,为false则表示不允许。
android:icon,指定App在手机屏幕上显示的图标。
android:label,指定App在手机屏幕上显示的名称。
android:roundIcon,指定App的圆角图标。
android:supportsRtl,是否支持阿拉伯语/波斯语这种从右往左的文字排列顺序。为true表示支
持,为false则表示不支持。
android:theme,指定App的显示风格。
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
application下面还有个activity节点,它是活动页面的注册声明,只有在AndroidManifest.xml中 正确配置了activity节点,才能在运行时访问对应的活动页面。
<!-- activity节点指定了该App拥有的活动页面信息,其中拥有
android.intent.action.MAIN的activity说明它是入口页面 -->
<activity android:name=".Main2Activity"></activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
初始配置的MainActivity正是App的默认 主页,之所以说该页面是App主页,是因为它的activity节点内部还配置了以下的过滤信息:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
例如:活动DetailActivity不是主页面(入口页面),MainActivity是主页面
<activity
android:name=".DetailActivity"
android:exported="false" >
</activity>
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Android Studio采用Log工具打印日志
有别于System.out.println,Log工具将各类日志划分为5个等级,每个等级的重要性是不一样的,这些 日志等级按照从高到低的顺序依次说明如下:
Log.e:表示错误信息,比如可能导致程序崩溃的异常。
Log.w:表示警告信息。
Log.i:表示一般消息。
Log.d:表示调试信息,可把程序运行时的变量值打印出来,方便跟踪调试。
Log.v:表示冗余信息。
2.3 书写规范
Android Studio每次创 建新项目,除了生成默认的首页布局activity_main.xml之外,还会生成与其对应的代码文件 MainActivity.java,用于实现复杂的业务逻辑。
在XML文件中定义界面布局,只是静态界面,XML文件自身无法动态刷新某个控件。倘若要求在App运行时修改 文字内容,动态变更网页内容,就需要交给App后台的Java代码实现业务逻辑。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
- 应用程序启动时,系统创建
MainActivity
的实例。- 调用
MainActivity
的onCreate
方法。- 在
onCreate
方法中,通过super.onCreate
进行初始化。- 通过
setContentView
设置Activity的布局。- Activity根据
activity_main.xml
布局文件创建相应的UI。
这里就先简单的了解一下这些信息。
2.4App的活动页面
2.4.1 快速生成页面源码
点击app,右键菜单中依次选择New→Activity→Empty View Activity
一旦创建好新页面,就得在合适的时候跳到该页面,假设出发页面为A,到达页面为B,那么跳转动作是 从A跳到B。由于启动App会自动打开默认主页MainActivity,因此跳跃的起点理所当然在MainActivity, 跳跃的终点则为目标页面的Activity。
如果目标页面名为MainCompatActivity,跳转代码便是下面这样的:
// 活动页面跳转,从MainActivity跳到MainCompatActivity
startActivity(new Intent(MainActivity.this, MainCompatActivity.class))
创建一个意图实例,使用setClass()方法,由当前的页面跳转到MainCompatActivity.class