本系列为《Android 第一行代码第三版》读书笔记
由上面可见,Android的主要市场是在Android5.0版本以上。
Android的四大组件:
需要的基本条件:jdk、sdk、Android Studio
启动AS一路创建项目即可,选取创建一个空项目,注意选取语言为Kotlin,因为Google简易采用Kotlin来进行开发,同时指定Minimum SDK的版本为21,查找上面的版本表可以发现版本为21的为Android 5版本
创建一个空项目之后,AS已经默认生成了一个Hello World的Demo,只需要将程序进行打包运行即可,这里选择外部模拟器MuMu模拟器进行模拟运行。下载安装好MuMu模拟器,进入到如下目录
使用命令行命令:
adb_server.exe connect 127.0.0.1:7555
那么这就将AS与MuMu模拟器连接起来了,在AS中点击运行键即可连接运行!
那么程序运行成功!如上是我修改了Hello world为Hello,Android!之后的界面
熟悉过Java Web开发便可知,项目核心部分在app部分,也是需要我们编写代码的部分,因为此项目是采用gradle进行搭建的,所以有一些编译型的文件,这里不过多介绍,值介绍一些非常核心的目录
分析一个Android项目,首先是从AndroidManifest.xml开发的,因为这是整个项目的配置文件
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.hellowrold">
<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/Theme.HelloWrold">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
intent-filter>
activity>
application>
manifest>
activity表示对MainActivity进行注册,而.表示省略包名,因为package中已经定义,其中intent-filter非常重要,看名字为一个拦截器,而其中定义了整个项目的主Activity,也就是项目的入口
接着分析MainActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
虽然语言是kotlin,但是不影响阅读,首先MainActivity是继承AppCompatActivity的,AppCompatActivity是AndroidX中提供的一种向下兼容的Activity,使得Activity在不同版本中的功能保持一致。
Activity类时Android系统提供的一个基类,项目中所有定义的Activity都必须继承它或者它的子类才具有一个Activity的特性,然后onCreate是一个其中的方法,相当于生命周期的方法
接着方法里面调用了setContentView方法,Android讲究逻辑与视图分离,所以在Activity是不写界面的,界面是放在局部文件里面的。可以看到setContentView中引入了一个activity_main布局
那么切换到布局文件夹layout,果然有一个activity_main.xml
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
androidx.constraintlayout.widget.ConstraintLayout>