Android 学习笔记 -《基础概念科普》

本文约定

项目名:MyFirstApp
Android Studio 版本:3.0

清单文件 AndroidManifest.xml

https://developer.android.google.cn/guide/topics/manifest/manifest-intro
app > manifests > AndroidManifest.xml

  • 定义启动类 MainActivity.java
  • 声明应用所需的权限
  • 声明应用所需的软硬件功能
  • 声明应用所需的最低 API 级别
  • 声明应用需要链接的 API 库
  • 声明应用的:Activity、Service、ContentProvider 必须声明,不然用不了。BroadcastReceiver 可以代码中动态创建和注册
  • 设置要用:名称、图标、主题

四大组件

活动 Activity

Activity 就是一个页面(类似于一个HTML文件) 官网 Activity 开发者指南Activity 生命周期帖子
每个APP有一个或多个 Activity 组成,其它的APP也可以调用你 APP中的某个Activity,但并不是直接调用。而是通过广播,让系统来调度,大家你情我愿(你的APP安装时就要跟系统打招呼,以后有XXX活,可以找我XXXActivity。比如你调用相机功能时,会跳出来一堆接活的Activity等你选)。

服务 Service

服务用来执行不需要UI页面的后台工作。官方Service开发者指南

广播、接收器 BroadcastReceiver

系统和APP都可以发广播监听广播。通过定义好的协议做相应处理。(消息以Intent的形式打包)

内容提供程序 ContentProvider

ContentProvider 封装了数据CRUD,通过它操作数据,你不用操心那些数据从哪来。(当然如果从网上取,你的应该要能访问网络才行)。系统和别人的APP都可以提供 ContentProvider。我们也可以为自己的APP设计ContentProvider,这样我们还能设置权限,哪些数据可以让大家访问,哪些私有。
官方 ContentProvider 开发者指南

四大组件的小弟

通知 Notifications

可以在发生广播事件时创建状态栏通知提醒用户

意图 Intent

Intent 和 Intent 过滤器
组间之间发送消息,都打包成 Intent 再丢来丢去。四大组件中,除了内容提供程序,其它的都是通过发Intent 来启动的。
Intent分显式和隐式。(模拟环境零散劳动力市场,工人们都在等活)
显式就是明确的说:哪个谁谁谁出来干活。
隐式就是说:要个泥瓦匠,有人没人?(如果有多个人回答,就会给个列表让你选)

	public static final String EXTRA_MESSAGE = "一个当作KEY的字符串";
	// 原 Activity 中按钮点击事件
	/** 当用户点击【发送】按钮时调用 */
    public void sendMessage(View view) {
    	...
        // 创建 intent 用到了 当前 Activity 和 目标 Activity.class
        Intent intent = new Intent(this, DisplayMessageActivity.class);
        // 向 intent 中压入数据
        intent.putExtra(EXTRA_MESSAGE , "从当前Activity文本框中获取的字符串");
        // 打开新的 Activity 同时把 intent 传给它
        startActivity(intent);
    }
    // 目标 Activity onCreate事件
    @Override
    protected void onCreate(Bundle savedInstanceState) {
		...
        // 获取打开此活动的意图并提取字符串
        Intent intent = getIntent();
        String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE );
        ...
    }

文件中的大佬们

要看文件先看资源管理器,这里可以切换显示模式,常用的有【Project】【Android】
在这里插入图片描述

app > java > com.example.myfirstapp > MainActivity.java

APP的入口 。运行APP时,系统会启动此 Activity。

app > res > layout > activity_main.xml

布局文件, MainActivity.javaonCreate 事件中加载了它。它通过各种标签定义UI元素,有点像HTML。

Gradle Scripts > build.gradle

build.gradle 文件用于配置 Gradle 工具,指明编译和构建您的应用的方式。每个项目会有一个 build.gradle,项目下的每个模块也都会有一个自己的 build.gradle

布局文件

存放位置 MyFirstApp\app\src\main\res\layout
布局文件是个 XML, 通过各自类型的标签定义UI页面,类似HTML 。相当于 Android 读取这个XML配置文件,然后生成UI面。那这些标签就对应各种UI组件。

View

它提供了最基本的UI绘制和事件处理能力,是所有UI对象的基类。按钮、文本、图片等UI对象 包括布局对象ViewGroup 都是它的子类。大概看一下它的子类里还是有些熟悉面孔的。
https://developer.android.google.cn/reference/android/view/View

在这里插入图片描述

ViewGroup

它是所有布局对象的基类,继承于View 。作为布局对象通常是不可见的,能够嵌套其它 View 对象。
https://developer.android.google.cn/reference/android/view/ViewGroup
在这里插入图片描述
ViewGroup 嵌套关系:官网盗图

在这里插入图片描述


资源文件

资源文件的定义主要是为了防止硬编码。所以把这些值提取出来方便后期调整。

定义颜色

文件位置 : MyFirstApp\app\src\main\res\values\colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>
</resources>

定义字符串

文件位置 : MyFirstApp\app\src\main\res\values\strings.xml

<resources>
    <string name="app_name">My First App</string>
</resources>

定义样式

文件位置 : MyFirstApp\app\src\main\res\values\styles.xml

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
</resources>

资源类 R

系统会帮我们生成一个 R 类 ,里面给每个资源定义了一个整形id。 R.类型.id
https://developer.android.google.cn/guide/topics/resources/accessing-resources

<!-- "@+id/editText" 中的加号,表示创建一个资源id。没有加号是引用,有加号就是创建-->
<EditText
   android:id="@+id/editText2"
   android:layout_width="wrap_content"
   android:layout_height="20dp"
   android:hint="@string/edit_message"/>
//Java 中这样取文本框 
EditText editText = (EditText) findViewById(R.id.editText);
<!-- @+id 的加号,表示创建一个资源id,也就是没有加号是引用,有加号就是创建-->
<!-- android:text="@string/button_send" 这样设置按钮文本 -->
<Button android:id="@+id/button" android:text="@string/button_send"/>

Android Studio 常用热键

https://resources.jetbrains.com/storage/products/intellij-idea/docs/IntelliJIDEA_ReferenceCard.pdf

Alt + Enter : 自动修复

Alt + / : 智能提示


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑虾

多情黯叹痴情癫。情癫苦笑多情难

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值