無(wú)關(guān)技術(shù)
這段時(shí)間看了看Android權(quán)威指南這本書,想著把課后挑戰(zhàn)都做一遍.當(dāng)做練習(xí)的.然后在看書的過(guò)程中,復(fù)習(xí)了一遍基礎(chǔ)知識(shí),還是做一下記錄,就當(dāng)做筆記去復(fù)習(xí)吧.
所以,就寫一寫學(xué)習(xí)筆記吧.
第一章
知識(shí)概要
本章主要講了如何去新建一個(gè)android項(xiàng)目,以及Activity的命名規(guī)范,布局界面,視圖層級(jí),常用控件的基本屬性,字符串資源的創(chuàng)建,控件的初始化,以及監(jiān)聽(tīng)器的設(shè)置,模擬器的應(yīng)用等.
深入學(xué)習(xí)
android編譯過(guò)程
這個(gè)講得其實(shí)是將項(xiàng)目的源文件編譯打包成apk的過(guò)程.本書只是簡(jiǎn)單的介紹了一下,然后我就查了一些資料,放在這里,以便復(fù)習(xí).
過(guò)程流程圖:

流程圖中用到的工具有:
| 名稱 | 功能介紹 | 在操作系統(tǒng)中的路徑 |
|---|---|---|
| aapt | Android資源打包工具 | ${ANDROID_SDK_HOME}/platform-tools/appt |
| aidl | Android接口描述語(yǔ)言轉(zhuǎn)化為.java文件的工具 | ${ANDROID_SDK_HOME}/platform-tools/aidl |
| javac | Java Compiler | ${JDK_HOME}/javac或/usr/bin/javac |
| dex | 轉(zhuǎn)化.class文件為Davik VM能識(shí)別的.dex文件 | ${ANDROID_SDK_HOME}/platform-tools/dx |
| apkbuilder | 生成apk包 | ${ANDROID_SDK_HOME}/tools/opkbuilder |
| jarsigner | .jar文件的簽名工具 | ${JDK_HOME}/jarsigner或/usr/bin/jarsigner |
| zipalign | 字節(jié)碼對(duì)齊工具 | ${ANDROID_SDK_HOME}/tools/zipalign |
總結(jié)來(lái)說(shuō)就是:
首先將.java文件編譯成.class文件
(這個(gè)java文件包括我們寫的java源代碼,還有資源文件被appt編譯成的R.java文件 和aidl工具將aidl文件生成的.java文件)
然后把.class文件轉(zhuǎn)成.dex文件
(因?yàn)閍ndroid虛擬機(jī)只能執(zhí)行dex文件)
再然后通過(guò)apkbuild工具將打包后的資源文件,.dex文件,lib文件(.so等)生成未簽名的.apk文件
然后對(duì)未簽名的.apk文件進(jìn)行簽名
最后對(duì)簽名的apk文件進(jìn)行對(duì)齊處理
了解這些可以對(duì)開發(fā)應(yīng)用流程有一個(gè)整體的認(rèn)知,知道apk怎么來(lái)的.
挑戰(zhàn)練習(xí)
定制Toast消息
這個(gè)練習(xí)比較簡(jiǎn)單,主要是想讓我們盡早養(yǎng)成查閱android官方文檔的習(xí)慣.
Toast的類官網(wǎng)
https://developer.android.google.cn/reference/android/widget/Toast
按照提示,找到setGravity方法
`
setGravity(int gravity, int xOffset, int yOffset)
Set the location at which the notification should appear on the screen.
`
很多情況都是英文解釋的,建議養(yǎng)成閱讀英文的習(xí)慣,有時(shí)候翻譯成中文讀起來(lái)很別扭.
方法的解釋是設(shè)置消息在屏幕中的位置.
后面的兩個(gè)int參數(shù),表示的是偏移量.
所以要使Toast在上面顯示,可以
`
Toast toast = Toast.makeText(context, resId, Toast.LENGTH_SHORT);
toast.setGravity(Gravity.TOP, 0, 10);
toast.show();
`
默認(rèn)吐司是在底部顯示的,Gravity.Top點(diǎn)擊進(jìn)去,發(fā)現(xiàn)還有一些Left,right,常量.
所以嘗試著改一下,發(fā)現(xiàn),屏幕可以居中左邊(右邊)顯示Toast.
封裝一個(gè)工具類如下:
`
public static void showTopShortMessage(Context context, @StringRes int resId) {
Toast toast = Toast.makeText(context, resId, Toast.LENGTH_SHORT);
toast.setGravity(Gravity.TOP, 0, 10);
toast.show();
}
public static void showLeftShortMessage(Context context, @StringRes int resId) {
Toast toast = Toast.makeText(context, resId, Toast.LENGTH_SHORT);
toast.setGravity(Gravity.LEFT, 0, 0);
toast.show();
}
public static void showRightShortMessage(Context context, @StringRes int resId) {
Toast toast = Toast.makeText(context, resId, Toast.LENGTH_SHORT);
toast.setGravity(Gravity.RIGHT, 0, 0);
toast.show();
}
`