1,學(xué)習(xí)目標(biāo)
a, android的發(fā)展歷史,以及android和java的關(guān)系
b,掌握android開發(fā)環(huán)境搭建
c,創(chuàng)建第一個android apk
d,android 工程結(jié)構(gòu)分析
c,android的調(diào)試方法的使用
2,學(xué)習(xí)內(nèi)容
android的發(fā)展歷史和特點(diǎn):
特點(diǎn)
1.手機(jī)OS
2.嵌入式電子設(shè)備 廣泛采用android系統(tǒng) 以前 wince ,qt
3.google移動開發(fā)平臺 競爭對手:IOS,WP 半封閉
4.最大特點(diǎn):開源免費(fèi)
3, android開發(fā)環(huán)境搭建:
1.下載JDK---提供java代碼編譯和運(yùn)行的環(huán)境
2.下載android SDK ---提供android應(yīng)用程序所必須的開發(fā)包,文檔,例子等等
3.下載 Eclipse IDE ---提供程序編寫和編譯的集成開發(fā)環(huán)境
4.下載 ADT Eclipse插件 ---提供android應(yīng)用程序的必要工具,比如打包,數(shù)字驗證等
google 為方便開發(fā)者集成了工具包 adt-bundle-windows-x86 開發(fā)工具包 2,3,4
5,版本
食物版本: API版本
1.x
2.x
3.x
4.x
5.0 (最新版本api22-- lollipop 棒棒糖)
7,建立一個helloworld
0,MiniMum Required SDK:最低支持的android api版本,低于這個版本的android手機(jī)不能安裝你的應(yīng)用
Target SDK:你的應(yīng)用最高支持android api版本
Compile With:哪個版本的android SDK(1.5~4.2)編譯你的工程,也就是最適合的,
最原生支持你的應(yīng)用的android版本。
Theme :這個隨意,主題選擇
1,apk產(chǎn)生的過程
.java->.class->.dex->.apk
1) 所有的資源文件,都會被aapt進(jìn)行處理。解析的結(jié)果最后會被aapt通過一個R.java保存一個二進(jìn)制樹的索引,編程時可通過這個R.java文件進(jìn)行XML的訪問。
2) 所有的Java文件,都會被JDK里的javac工具編譯成bin目錄下按源代碼包結(jié)構(gòu)組織的.class文件(.class是標(biāo)準(zhǔn)的Java可解析執(zhí)行的格式),
比如我們這個例子里生成的bin/classes/com/hello/*.class文件。然后這些文件,會通過SDK里提供的一個dx工具轉(zhuǎn)換成classes.dex文件。
這一文件,就是會被Dalvik 虛擬機(jī)所解析執(zhí)行的
3) 最后我們得到的編譯過的二進(jìn)制資源文件和classes.dex可執(zhí)行文件,會通過一個apkbuilder工具采用zip壓縮算法打包到一個文件里,
生成了我們所常見的.apk文件。
4) 最后.apk文件,會通過jarsigner工具進(jìn)行校驗,這一校驗值會需要一個數(shù)字簽名。如果我們申請了Android開發(fā)者帳號,這一數(shù)字簽名就是
Android所分發(fā)的那個數(shù)字證書;如果沒有,我們則使用debug模式,使用本地生成的一個隨機(jī)的數(shù)字證書,這一文件位于
~/.android/debug.keystore。
8,如何android設(shè)備運(yùn)行程序
1)ADT 模擬器
2)真實(shí)設(shè)備 裝驅(qū)動
9,apk文件包含了什么? 通過壓縮包文件都可以看到??
AndroidManifest.xml 清單文件
classes.dex //代碼的二進(jìn)制,android虛擬機(jī)執(zhí)行的不是*.class代碼而是dex文件,由dx工具產(chǎn)生
resources.arsc//編譯后的二進(jìn)制資源文件
res
META-INF //數(shù)字簽名信息
10,工程結(jié)構(gòu)分析
APK文件其實(shí)是zip格式,但后綴名被修改為apk,通過UnZip解壓后,可以看到Dex文件,Dex即Android Dalvik執(zhí)行程序
src:源文件
gen:ADT插件幫我們自動生成的文件,里面包括一個重要文件R.java
android.jar:Java 歸檔文件,包含構(gòu)建應(yīng)用程序所需的所有的Android SDK 庫(如Views、Controls)和APIs
有了這個,就可以import各種包和類了
assets: 資源目錄,放一些html,txt mp3、視頻類文件等等
res:放資源文件,比如圖片,布局文件和字符串,菜單等文件
drawable-x:包含一些你的應(yīng)用程序可以用的圖標(biāo)文件(*.png、*.jpg)
layout:布局文件,每一個activity都有對應(yīng)的布局文件xml,控制這個activity各種控件的位置和大小
values:軟件上所需要顯示的各種文字。可以存放多個*.xml文件,還可以存放不同類型的數(shù)據(jù)。
比如arrays.xml、colors.xml、dimens.xml、styles.xml string.xml, 鍵值對在R.java中會生成id
Androidmanfest.xml:Android工程的系統(tǒng)清單文件,控制應(yīng)用的圖標(biāo),名稱,訪問權(quán)限等屬性并配置四大組件
default.properties:記錄項目中所需要的環(huán)境信息,比如Android的版本等。
libs: android-support-v4,保證來高版本sdk開發(fā)的向下兼容性
R.java是根據(jù)res目錄下的資源信息而自動創(chuàng)建的文件,Android程序開發(fā)過程中為你統(tǒng)一管理資源,添加ID、
有了這個文件,在代碼中就可以訪問各種資源
包括四個靜態(tài)內(nèi)部類,靜態(tài)類的名字都與res中的一個名字對應(yīng),即R類定義該項目所有資源的索引
drawable:圖片類,添加一張圖片就產(chǎn)生一個類
layout:布局類,對應(yīng)layout中的界面文件
string:字符串類
11,xml文件--eXtensible Markup Language)即可擴(kuò)展標(biāo)記語言,很類似 HTML
一種簡單的數(shù)據(jù)存儲文檔描述語言,語法簡單,采用樹形數(shù)據(jù)結(jié)構(gòu),語法更加嚴(yán)格從而保證數(shù)據(jù)的安全和唯一
XML 的設(shè)計宗旨是存儲或傳輸數(shù)據(jù),而非顯示數(shù)據(jù),html主要用于顯示
1)封閉 xxx自定義
<xxx 屬性1=值1 屬性2=值2 ... />
2)開放
<xxx 屬性1=值1 屬性2=值2 ... >
<xxx 屬性1=值1 屬性2=值2 ... />
</xxx>
3)區(qū)分大小寫
比如:
書
四大名著
三國
西游
紅樓
xml的例子:
<book>
<four_books>
<sanguo category="Class">
<title lang="en">Three Kingdoms </title>
<author>羅</author>
<year>985</year>
<price>30.00</price>
</sanguo>
</four_books>
</book>
xml文件僅僅是純文本而已,XML 被設(shè)計用來結(jié)構(gòu)化、存儲以及傳輸信息,XML 不會做任何事情
<?xml version="1.0" encoding="utf-8"?> <!-- 第一行是 XML 聲明。它定義 XML 的版本 (1.0) 和所使用的編碼 -->
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
上面的這條便簽具有自我描述性。它擁有標(biāo)題以及留言,同時包含了發(fā)送者和接受者的信息。
但是,這個 XML 文檔仍然沒有做任何事情。它僅僅是包裝在 XML 標(biāo)簽中的純粹的信息,這些信息必須由程序員按照
一定的方式進(jìn)行解析
12,android工程中主要的xml文件:
androidmanifest.xml 清單文件 告訴系統(tǒng)我有哪些東西,可以參考Android SDK文檔中解釋
<!-- 必須包含一個<application>元素并且指定xlmns:android和package屬性 -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
<!-- xlmns:android指定了Android的命名空間 -->
package="com.test" //包名,也是一個應(yīng)用進(jìn)程的默認(rèn)名稱,一般會以應(yīng)用的域名來作為包名
android:versionCode="1" //給設(shè)備程序識別版本用的,必須是一個整數(shù)值代表app更新過多少次
android:versionName="1.0" > //給用戶查看版本用的,需要具備一定的可讀性,比如“1.0.0”這樣的
<uses-sdk android:minSdkVersion="9" /> //指定Android應(yīng)用中所需要使用的SDK的版本,最小能夠運(yùn)行的api版本
<application //應(yīng)用配置的根標(biāo)記,位于<manifest>下層 容器:放android程序組件 四大組件
android:icon="@drawable/ic_launcher" //應(yīng)用圖標(biāo)
android:label="@string/app_name" > //應(yīng)用名,安裝后在系統(tǒng)中的名字
<activity //代表定義的Activity的子類
android:name=".MyhelloActivity" //類名
android:label="@string/app_name" > //窗口的標(biāo)題
android:theme="@style/AppTheme" >
//主題 若改成:android:theme="@android:style/Theme.Dialog" 就會變成對話框形式的activity
<intent-filter> //過濾器,該程序組件能干什么
<action android:name="android.intent.action.MAIN" /> //應(yīng)用啟動的入口,多個activity存在時先啟動該activity
<category android:name="android.intent.category.LAUNCHER" /> //表示該程序可以顯示在桌面上
</intent-filter>
</activity>
</application>
</manifest>
============================================================================
layout_hello.xml:
<TextView
android:id="@+id/textView1" //給這個控件設(shè)置一個id號碼,在代碼中就可以找到
//自動的在R.java中產(chǎn)生一個id號碼
// class R{ class id{ textView1 =0x70e0e0e0e } }
//在代碼中就可以直接找到該控件
// R.id.textView1
android:layout_width="wrap_content" // 該控件的寬度, 控件的大小是隨著內(nèi)容變化的
android:layout_height="wrap_content" // 該控件的高度
android:text="@string/hello_world" /> //該控件的顯示內(nèi)容
values/strings.xml
<resources>
<string name="test">好奇紙尿褲</string>
</resources>
在其他的地方去使用:
1,另外的xml文件中會使用:
布局xml:
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/test" /> //在這個地方引用
2,在代碼中用到:在Activity子類中采用調(diào)用
String str = getResources().getString(R.string.test);
values/dimens.xml: 表示大小尺寸的資源
<dimen name="mySize">32dp</dimen>
在其他的地方:
1,另外的xml文件中會使用:
布局xml:
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/mySize"
android:text="@string/test" />
values/styles.xml
<style name="myStyle">
<item name="android:textColor">#22ff22</item>
<item name="android:textSize">32dp</item>
</style>
使用:
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/myStyle"
android:text="@string/test" />
menu/hello.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
<item
android:id="@+id/item2"
android:title="@string/test"/>
</menu>
在Android中打印調(diào)試信息:
1, java中System.out
2, Log函數(shù)
private final String TAG = "HelloActivity";
Log.i(TAG, "str = " + str);
========================================================================
14,如果Activity要操作UI組件對象?
MVC模式
1.UI 交給main.xml完成
2.業(yè)務(wù)邏輯 交給activity子類重寫onCreate()
3.程序組件有哪些交清單
MVC架構(gòu)起始于一個GUI(graphical user interface designpatter,圖型用戶界面設(shè)計原型)原型,其目的是
實(shí)現(xiàn)動態(tài)程序設(shè)計,使日后對于程序修改及擴(kuò)展更加便利,并使某些程序代碼可重復(fù)利用。另外通過對復(fù)雜度的
簡化,使程序結(jié)構(gòu)更加直觀。
軟件系統(tǒng)通過對自身基本部份分離的同時也給予各部分應(yīng)有的功能,如同一所大公司一樣,將工作區(qū)分做到專業(yè)化,
專業(yè)人員可以通過自身的專長分組:
View -視圖層能夠?qū)崿F(xiàn)數(shù)據(jù)有目的的顯示,視圖需要訪問它監(jiān)視的數(shù)據(jù)模型(Model)
美工或UI設(shè)計人員可以獨(dú)立進(jìn)行圖形接口設(shè)計及美化。
Model -數(shù)據(jù)模型”(Model)用于封裝與應(yīng)用程序的業(yè)務(wù)邏輯相關(guān)的數(shù)據(jù)以及對數(shù)據(jù)的處理方法
模型不關(guān)心它會被如何顯示或是如何被操作,比如數(shù)據(jù)庫專家進(jìn)行數(shù)據(jù)管理和數(shù)據(jù)庫的實(shí)現(xiàn)算法
Controller -控制器起到不同層面間的組織作用,用于控制應(yīng)用程序的流程
在Android中,程序設(shè)計師利用Java撰寫程序邏輯及架構(gòu),
美工設(shè)計則使用xml來撰寫用戶界面,
數(shù)據(jù)庫人員則針對SQL數(shù)據(jù)庫進(jìn)行設(shè)計及優(yōu)化。
------------------------------------------------------------------------------------------------------------
資源文件的簡單使用:
res:
strings.xml: 一:是為了國際化 二:為了減少應(yīng)用的體積,降低數(shù)據(jù)的冗余
定義字符串
<string name="hello_world">Hello world!</string>
獲取對應(yīng)的值:
1, 在Activity中使用
String appName=(String) this.getResources().getString(R.string.hello_world);
2,在其他xml中,比如布局文件
android:text="@string/hello_world"
arrays.xml定義數(shù)組
定義:
<!--通用的array-->
<array name="common">
<item>@drawable/ic_launcher</item>
<item>@drawable/ic_launcher</item>
<item>@drawable/ic_launcher</item>
<item>@drawable/ic_launcher</item>
<item>@drawable/ic_launcher</item>
</array>
<string-array name="countries">
<item >中國</item>
<item >美國</item>
</string-array>
獲取:
java代碼:
---------------------------------------------------------------------------------------------------------------
adb和ddms的使用, E:\adt-bundle-windows-x86-20130522\sdk\platform-tools放進(jìn)環(huán)境變量
adb:
adb device 顯示當(dāng)前有效的avd或是真實(shí)機(jī)器
adb push上傳文件至SD卡
adb push 001.jpg /sdcard(復(fù)制文件到/sdcard目錄下)
adb push pictures /sdcard(復(fù)制pictures目錄到/sdcard目錄下)
adb shell (進(jìn)入命令行模式)
#cd /sdcard(進(jìn)入/sdcard目錄)
#ls (列出SD卡中的文件)
adb pull /sdcard/001.jpg .(下載/sdcard的文件到PC)
adb install filename.apk(安裝filename.apk)
adb install-r filename.apk(保留已設(shè)定數(shù)據(jù),重新安裝filename.apk)
adb uninstall package (移除 APK)
adb uninstall -k package(移除程序時,保留數(shù)據(jù))
注意package名稱不是安裝APK套件時的文件名,可以去/data/data或data/app目錄查看
logcat的使用
DDMS調(diào)試環(huán)境:Dalvik Debug Monitor Service
設(shè)備面板:當(dāng)前運(yùn)行的模擬器,模擬器內(nèi)的所有進(jìn)程信息.
信息輸出面板:類似java控制臺
線程跟蹤面板:
Heap內(nèi)存跟蹤面板
模擬器控制面板
文件管理面板
Android SDK包全覽和查詢方法
sdk/docs/reference
3,總結(jié)
1, 配置sdk
2,編寫第一個Helloworld
3,創(chuàng)建avd
4,使用logcat查看調(diào)試信息和DDMS控制臺
5,修改各種xml文件
第一天
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
推薦閱讀更多精彩內(nèi)容
- 第一次來到簡書,第一次在這兒碼字記錄分享hin緊張,跟今天第一天實(shí)習(xí)一毛一樣的心情。已經(jīng)不是千萬頭“小毛驢”穿過心...
- D84 5月21日今天上了一天的班,腳都不是自己的腳了,全起泡了,還有明天休息,希望不要腫,這次大家全力幫我吃的...
- 前段時間我們抓取了京東商城上面的文胸數(shù)據(jù),共計80萬條,這份數(shù)據(jù)已經(jīng)躺了好久了,今天我們就來進(jìn)行一次簡單地分析。 ...
- 本文從 這里 翻譯過來的。 2048這個游戲有一段時間特別火,Github上有其原始版本,游戲看起來很簡單,但是...