这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
wiki:book:notes:android:第一行代码-android-第2版-郭霖 [2022/04/06 11:27] 博丽幻月 [第2章 先从看得到的入手——探究活动] |
— (当前版本) | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== 第一行代码:Android(第2版) - 郭霖 读书笔记 ====== | ||
- | ===== 第1章 开始启程——你的第一行Android代码 ===== | ||
- | **Android四层架构**\\ Linux内核层、系统运行库层、应用框架层、应用层。\\ | ||
- | ---- | ||
- | **系统运行库层**\\ C/ | ||
- | ---- | ||
- | **ART运行环境**\\ Android5.0,使用ART运行环境替代了Dalvik虚拟机。\\ | ||
- | ---- | ||
- | **四大组件**\\ 活动、服务、广播接收器、内容提供器。(Activity、Service、Broadcast Receiver、Content Provider)。\\ | ||
- | ---- | ||
- | **res目录**\\ | ||
- | * drawable - 图片 | ||
- | * layout - 布局 | ||
- | * values - 字符串 | ||
- | |||
- | ---- | ||
- | **AndroidManifest.xml**\\ 整个安卓项目的**配置文件**,四大组件都需要在这个文件里**注册**,另外还可以在这个文件中给应用程序**添加权限声明**。\\ | ||
- | ---- | ||
- | **主活动,首先启动的活动**\\ | ||
- | <code java> | ||
- | <action android: | ||
- | < | ||
- | </ | ||
- | 上面两句表示这个Activity是此项目主活动,启动应用首先启动的就是这个活动。\\ | ||
- | ---- | ||
- | **当前活动引入一个布局**\\ | ||
- | <code java> | ||
- | setContentView(R.layout.hello_world_layout); | ||
- | </ | ||
- | ---- | ||
- | **字符串的引用** | ||
- | - 代码中,通过'' | ||
- | - XML中,通过'' | ||
- | ---- | ||
- | **build.gradle文件**\\ | ||
- | Android Studio是采用Gradle来**构建项目**的。Gradle是一个非常先进的项目构建工具。\\ | ||
- | dependencies闭包中使用classpath声明了一个Gradle插件,因为Gradle并不是专门为构建Android项目而开发的,因此如果我们要想使用它来构建Android项目,则需要声明'' | ||
- | ---- | ||
- | **app下的build.gradle文件**\\ | ||
- | '' | ||
- | **应用程序模块**和**库模块**的最大区别在于,一个是可以直接运行的,一个只能作为代码库依附于别的应用程序模块来运行。\\ | ||
- | '' | ||
- | 通过Android Studio直接运行项目生成的都是测试版安装文件。\\ | ||
- | ---- | ||
- | **debug日志**\\ | ||
- | logd,然后按下Tab键,就会帮你自动补全一条完整的打印语句。\\ | ||
- | ===== 第2章 先从看得到的入手——探究活动 ===== | ||
- | **活动Activity**\\ | ||
- | 主要用于和用户进行交互。\\ | ||
- | ---- | ||
- | **启动的主活动**\\ | ||
- | 在''< | ||
- | <code xml> | ||
- | <action android: | ||
- | < | ||
- | </ | ||
- | ---- | ||
- | **通知消息Toast**\\ | ||
- | 用途:将一些短小的信息通知给用户,这些信息会在一段时间后自动消失,并且不会占用任何屏幕空间。\\ | ||
- | <code java> | ||
- | Button button1 = (Button) findViewByid(R.id.button_1); | ||
- | button1.setOnClicklistener(new View.OnClicklistener() { | ||
- | @Override | ||
- | public void onClick(View v) { | ||
- | Toast.makeText(FirstActivity.this, | ||
- | } | ||
- | }); | ||
- | </ | ||
- | 可以通过'' | ||
- | '' | ||
- | ---- | ||
- | **活动中使用Menu**\\ | ||
- | '' | ||
- | ---- | ||
- | **销毁一个活动**\\ | ||
- | '' | ||
- | ---- | ||
- | **Intent交互**\\ | ||
- | Intent是Android程序中各组件之间**进行交互**的一种重要方式,它不仅可以指明当前组件**想要执行的动作**,还可以在不同组件之间**传递数据**。\\ | ||
- | Intent一般可被用于**启动活动**、**启动服务**、**发送广播**等场景。\\ | ||
- | Intent分两种:显示Intent、隐式Intent。\\ | ||
- | ---- | ||
- | **使用隐式Intent**\\ | ||
- | <code java> | ||
- | intent.addCategory(" | ||
- | </ | ||
- | <code xml> | ||
- | < | ||
- | < | ||
- | <action android: | ||
- | < | ||
- | < | ||
- | </ | ||
- | </ | ||
- | </ | ||
- | ---- | ||
- | **更多隐式Intent用法**\\ | ||
- | 不仅可以启动自己程序内的活动,还可以启动其他程序的活动。\\ | ||
- | <code java> | ||
- | // | ||
- | Intent intent = new Intent(Intent.ACTION_VIEW); | ||
- | intent.setData(Uri.parse(" | ||
- | </ | ||
- | <code java> | ||
- | // | ||
- | Intent intent = new Intent(Intent.ACTION_DIAL); | ||
- | intent.setData(Uri.parse(" | ||
- | </ | ||
- | ---- | ||
- | **向下一个活动传递数据**\\ | ||
- | 使用'' | ||
- | <code java> | ||
- | String data = "Hello SecondActivity"; | ||
- | Intent intent = new Intent{FirstActivity.this, | ||
- | intent.putExtra(" | ||
- | </ | ||
- | 使用'' | ||
- | <code java> | ||
- | Intent intent = getIntent(); | ||
- | String data = intent.getStringExtra(" | ||
- | </ | ||
- | ---- | ||
- | **返回数据给上一个活动**\\ | ||
- | FirstActivity按钮onClick()中添加:\\ | ||
- | <code java> | ||
- | Intent intent = new Intent(FirstActivity.this, | ||
- | startActivityforResult(intent, | ||
- | </ | ||
- | '' | ||
- | SecondActivity按钮onClick()中添加:\\ | ||
- | <code java> | ||
- | Intent intent = new Intent(); | ||
- | intent.putExtra(" | ||
- | setResult(RESULT_OK, | ||
- | </ | ||
- | 调用了'' | ||
- | SecondActivity销毁后,在FirstActivity中判断:\\ | ||
- | <code java> | ||
- | @Override | ||
- | protected void onActivityResult(int requestCode, | ||
- | switch (requestCode) { | ||
- | case 1: | ||
- | if (resultCode == RESULT_OK) { | ||
- | String returnedData = data.getStringExtra(" | ||
- | Log.d(" | ||
- | break; | ||
- | default: | ||
- | } | ||
- | } | ||
- | </ | ||
- | 如果使用'' | ||
- | ---- | ||
- | **TBD**\\ | ||
- | ===== 第5章 全局大喇叭——详解广播机制 ===== | ||
- | |||
- | |||
- | |||