本系列為《Android 第一行代碼第三版》讀書筆記
一、Android的版本與組件

由上面可見,Android的主要市場是在Android5.0版本以上,
Android的四大組件:
- Activity:是Android應用程式的門面,在應用中可見的東西都是放在Activity里的
- Service:在后臺默默運行的組件
- BroadcastReceiver:允許應用接收各處的廣播訊息,比如電話、短信等
- ContentProvider:為應用程式之間共享資料提供幫助
二、Hello World
需要的基本條件: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進行搭建的,所以有一些編譯型的檔案,這里不過多介紹,值介紹一些非常核心的目錄

- mipmap系:用來放置圖示的,有多個版本的檔案夾,是為了適應不同的設備,介紹為了兼容性
- values系:存放字串、樣式、顏色等配置的
- layout系:存放布局檔案的
- drawable系:存放圖片的
- AndroidManifest.xml:整個專案的組態檔,在程式中定義的組件都需要在這個檔案中注冊
四、專案運行流程
分析一個Android專案,首先是從AndroidManifest.xml開發的,因為這是整個專案的組態檔
<?xml version="1.0" encoding="utf-8"?>
<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
<?xml version="1.0" encoding="utf-8"?>
<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">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello ,Android!" //這就是顯示的欄位
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
五、Android的日志工具Log
- Log.v() ,用于列印那些最為瑣碎的、意義最小的日志資訊,對應級別verbose,是Android日志里面級別最低的一種,
- Log.d() ,用于列印一些除錯資訊,這些資訊對你除錯程式和分析問題應該是有幫助的,對應級別debug,比verbose高一級,
- Log.i() ,用于列印一些比較重要的資料,這些資料應該是你非常想看到的、可以幫你分析用戶行為資料,對應級別info,比debug高一級,
- Log.w() ,用于列印一些警告資訊,提示程式在這個地方可能會有潛在的風險,最好去修復一下這些出現警告的地方,對應級別warn,比info高一級,
- Log.e() ,用于列印程式中的錯誤資訊,比如程式進入到了catch陳述句當中,當有錯誤資訊列印出來的時候,一般都代表你的程式出現嚴重問題了,必須盡快修復,對應級別error,比warn高一級,
出現警告的地方,對應級別warn,比info高一級, - Log.e() ,用于列印程式中的錯誤資訊,比如程式進入到了catch陳述句當中,當有錯誤資訊列印出來的時候,一般都代表你的程式出現嚴重問題了,必須盡快修復,對應級別error,比warn高一級,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/281670.html
標籤:其他
