安卓【Android studio】超全超详细的保姆级开发笔记
一、环境配置
1. Gradle系统环境变量
变量名:GRADLE_USER_HOME
变量值:E:\software\Android\gradle(根据自己的路径配置)

2. 设置Gradle镜像,下面以阿里云镜像为例(不设置会等超长时间)
1. 给Gradle bin文件下载,设置阿里云镜像
路径:项目根目录/gradle/wrapper/gradle-wrapper.properties文件
distributionUrl=https://mirrors.aliyun.com/macports/distfiles/gradle/gradle-版本号-bin.zip
2. 给Gradle依赖下载,设置阿里云镜像
路径:项目根目录/settings.gradle文件,按照下面设置镜像:
pluginManagement {
repositories {
// 使用阿里镜像源
maven {
url 'https://maven.aliyun.com/repository/google' }
maven {
url 'https://maven.aliyun.com/repository/central' }
maven {
url 'https://maven.aliyun.com/repository/gradle-plugin' }
google {
content {
includeGroupByRegex("com\\.android.*")
includeGroupByRegex("com\\.google.*")
includeGroupByRegex("androidx.*")
}
}
mavenCentral()
gradlePluginPortal()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
// 使用阿里镜像源
maven {
url 'https://maven.aliyun.com/repository/google' }
maven {
url 'https://maven.aliyun.com/repository/central' }
google()
mavenCentral()
}
}
二、Hello World(开始新建项目,研究语法、代码)
1. 项目目录结构
- project
– .gradle:Gradle构建脚本目录;
– app:主模块目录,存放应用程序的主要代码文件和资源文件,项目开发的核心区域;
– build:编译,打包目录;
– gradle:Gradle构建配置目录,包含 Gradle Wrapper 配置文件,用于自动化下载Gradle;
– build.gradle :模块级构建脚本,用于配置依赖库、编译选项等,需根据项目需求调整;
– settings.gradle:模块配置,指定项目包含的模块或子项目;
drawable目录通常位于项目的res文件夹中,用于存放应用中使用的图形资源。根据屏幕密度不同,可能包含以下子目录:
drawable-ldpi:低密度屏幕(如320 DPI)
drawable-mdpi:中等密度屏幕(如480 DPI)
drawable-hdpi:高密度屏幕(如640 DPI)
drawable-xhdpi:更高密度屏幕(如720 DPI)
drawable-xxhdpi:更高密度屏幕(如1080 DPI)
2. Activity生命周期

3. Activity语法
| 序号 | 语法 | 注释 |
|---|---|---|
| 1 | setContentView() | 加载布局文件(如 XML 定义的界面)或动态创建视图,将内容展示在 Activity 窗口中,入参示例:R.layout.activity_main |
| 2 | findViewById() | 根据ID查找标签,返回标签,入参是XML文件中设置的ID |
| 3 | setText() | 标签设置文本的方法 |
| 5 | Intent | 意图对象,有多个构造方法可以指定跳转视图 |
| 6 | startActivity() | 触发入参的意图对象 |
| 7 | setTextSize() | 设置文本大小,单位是sp(专门用来设置字体大小,关联系统字体大小) |
| 8 | finish() | 结束当前Activity的生命周期并释放其资源 |
| 8 | setVisibility(Int isVisible) | 是否可见,View.VISIBLE(可见),View.GONE(不可见) |
Intent
(1)Intent组成部分
| 设置方法 | 注释 |
|---|---|
| setComponent | 指定意图的来源和目标 |
| setAction | 指定意图的动作 |
| setData | Uri,指定动作要操作的数据路径 |
| addCategory | 指定意图的操作类别 |
| setType | 指定消息的数据类型 |
| putExtras | 指定扩展信息 |
| setFlags | 指定活动的启动标志 |
(2)显式Intent:
直接指定来源活动和目标活动,属于精确匹配
// 1. 构造方法中直接指定
Intent intent = new Intent(this, NextActivity.class);
// 2. 调用意图对象的setClass指定
Intent intent = new Intent();
intent.setClass(this, NextActivity.class);
// 3. 调用意图对象的setComponent方法指定
Intent intent = new Intent();
ComponentName component = new ComponentName(this, NextActivity.class);
intent.setComponent(component);
(3)隐式Intent:
| Intent类的系统动作常量名 | 常量值 | 注释 |
|---|---|---|
| ACTION_MAIN | android.intent.action.MAIN | App启动入口 |
| ACTION_VIEW | android.intent.action.VIEW | 向用户显示数据 |
| ACTION_SEND | android.intent.action.SEND | 分享内容 |
| ACTION_CALL | android.intent.action.CALL | 直接拨号 |
| ACTION_DIAL | android.intent.action.DIAL | 准备拨号 |
| ACTION_SENDTO | android.intent.action.SENDTO | 发送短信 |
| ACTION_ANSWER | android.intent.action.ANSWER | 接听电话 |
注意:使用隐式Intent跳转Activity时,目标Activity的android:exported属性要为true
(4)数据传递、接收
// SendActivity,向ReceiveActivity传递数据
intent.setClass(this,ReceiveActivity.class);
Bundle bundle = new Bundle();
bundle.putString("send_data","send_data");
intent.putExtras(bundle);
startActivity(intent);
// ReceiveActivity,接收SendActivity传递的数据
Bundle extras = getIntent().getExtras();
String send_data = extras.getString("send_data");
(5)结果反馈
// 发送请求的Activity
public class ActRequestActivity extends AppCompatActivity implements View.OnClickListener {
private ActivityResultLauncher<Intent> register;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_act_request);
// 按钮绑定点击事件
findViewById(R.id.request_btn).setOnClickListener(this);
// 接收响应
register = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
/**
* 接收响应的方法
* @param res
*/
@Override
public void onActivityResult(ActivityResult res) {
// 响应状态码
int resultCode = res.getResultCode();
if(resultCode == Activity.RESULT_OK){
// 获取响应数据
Intent data = res.getData();
Bundle extras = data.getExtras();
String response = extras.getString("response");
}
}
});
}
@Override
public void onClick(View view) {
Intent intent = new Intent();
if(view.getId() == R.id.request_btn){
intent.setClass(this,ActResponseActivity.class);
Bundle bundle = new Bundle();
bundle.putString("request_content","How are you?");
intent.putExtras(bundle);
// 跳转界面,并传递数据
register.launch(intent);
}
}
}
// 返回响应的Activity
public class ActResponseActivity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_act_response);
// 按钮绑定点击事件
findViewById(R.id.response_btn).setOnClickListener(this);
// 获取传递来的消息
Bundle extras = getIntent().getExtras();
String requestContent = extras.getString("request_content");
}
@Override<

最低0.47元/天 解锁文章
2118

被折叠的 条评论
为什么被折叠?



