android 經典筆記總結

pro  android  media  developing  graphics,music,video and  rich media  apps  for  smartphones  and  tablets
博客園經典推薦
http://blog.csdn.net/android_tutor/article/details/5772285
第一章  android  introduction
    platform  include  4  part:操作系統、中間件、用戶界面和應用軟件。基於Java並運行在Linux內核上的操作系統。google公司內置了很多有用的軟件,如打電話、發短信等





  開發手機聯盟:  Open  Handset Alliance


模擬器:
  不支持呼叫和接聽實際來電,但可以通過控制檯模擬電話呼叫。
  模擬器不支持USB連接
  模擬器不支持相機/視頻捕捉
  模擬器不支持音頻輸入(捕捉),但支持輸出(重放)
  模擬器不支持擴展耳機
  模擬器不能確定連接狀態
  模擬器不能確定電池電量水平和充電狀態
  模擬器不能確定SD卡的插入和彈出。
  模擬器不支持藍牙。


   debug:a  c盤空間不足  清理 C:\Documents and  Settings\“用戶名”\Local  Settings\Temp\AndroidEmulator 文件夾的內容。
   在eclipse裏可以直接單擊運行提高速度。
   資源  android.com 
   中文資源  eoeandroid.com


第二章  環境搭建
   Emulator 模擬器   apk文件 運行在Android平臺


諧音記憶   android  愛pk aapt  (apk) 運行在Android
  


AVD(Android  Vitual Device)
cmd    android list targets  列出可用平臺


linux安裝:sudo  apt-get  install  sun-java6-bin


  apt-get是一條linux命令,適用於deb包管理式的操作系統,主要用於自動從互聯網的軟件倉庫中搜索、安裝、升級、卸載軟件或操作系統。   apt-get命令一般需要root權限


執行,所以一般跟着sudo命令 






第三章  android  SDK介紹
  Dalvik  Debug Monitor Service  調試監視服務  ddms.bat
   Android  Debug  Bridge(adb)  調試橋
   aapt.exe   android  Asset  Packaging Tool  aapt工具創建apk文件,這些文件包含了Android應用程序的二進制文件和資源文件。
   Android 接口描述語言  aidl.exe
  sqllite3.exe  Android應用程序可以創建和使用SQLite數據文件


   android.jar  是包含全部API的壓縮包。
   samples      目錄下是SDK附帶的一些例子
API結構的劃分  app  content  database  graphics  hardware
Traceview.bat  跟蹤顯示工具
dx.bat  將class字節碼重寫爲Android字節碼  存儲在dex文件中。
activityCreator.bat   生成Ant構建文件
Android  Virtual  Devices AVD




android.util  包含一些底層輔助類,例如,特定的容器類、xml輔助工具類等。
android.os  提供基本的操作服務,消息傳遞和進程間通信IPC
android.graphics 作爲核心渲染包,提供圖形渲染功能。
android.text  文本處理工具,富文本
android.database  底層API處理數據庫
android.content  提供各種服務訪問數據在手機設備上元素 
android.view  核心用戶界面框架
android.widget 提供標準用戶界面  lists  buttons  layout managers (你爸奶媽)
android.app  提供高層應用程序模型,實現使用Activity
android.provider  提供方便調用系統提供的content  providers的接口
android.telephony  提供包含API交互和手機設備的通話接口。
android.webikit  包含一系列工作在基於Web內容的API


GOOGLE基於基站的定位技術——MyLocation


第4章   Android  Market及應用發佈


第5章    HelloWorld


第6章  Android  應用程序結構介紹


Android  本身提供了桌面(Home)、聯繫人(Contact)、電話(Phone)和瀏覽器(Browers)等衆多的核心應用。


Android的核心繫統服務依賴於Linux2.6內核,如安全性、內存管理、進程管理 、網絡協議棧和驅動模型。Linux內核也同時作爲硬件和軟件棧之間的抽象層。


Android程序主要由下列4部分組成:
Activity  一般代表手機屏幕的一屏。如果把手機比作個瀏覽器,它就相當於一個網頁。Activity 之間的跳轉有可能返回值。
        Android 會把每個應用的開始到當前的每一個屏幕保存在堆棧中。
Broadcast Intent  Receiver
Service
Content Provider


(諧音:愛把CS)


BroadcastReceiver通過NotificationManager來通知用戶這些事情發生了。既可以在AndroidManifest.xml中註冊,也可以在運行時的代碼中使用Context.registerReceiver()進行注



R文件對下邊即將介紹的資源進行全局索引。在下面介紹的res文件夾中,內容發生任何變化.R.java都會重新編譯,同步更新。
AndroidManifest.xml  應用的配置文件。


第7章  Android 基本組件介紹
  Activith是一個UI的容器
  視圖組件View
  視圖容器組件Viewgroup
  佈局組件Layout
  佈局參數LayoutParams






setContentView(R.layout.main) 負責當前的Activity與main.xml文件相關聯。
Android:layout_width="fill_parent"填充滿父容器的空間,wrap_content 只需要將bg.jpg包裹起來即可。
dip device  independentpixels  依賴於設備的像素。
px  pixels 像素
sp  scaled  pixels-best  for  text  size 帶比例的像素
pt 




LayoutInflater  inflate=(LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE)
得到一個LayoutInflater對象。這個對象可以對XML的佈局文件進行解析,並且生成一個VIEW.
所有的LayoutParams都是繼承Android.view.ViewGroup.LayoutParams


widget:
   Spinner  下拉列表  wrap_content  高度自適應
   AutoCompleteTextView   自動完成文本 
   日期選擇器  DatePicker 介紹與應用
   時間選擇器 TimePicker的介紹與應用
   滾動視圖  ScrollView的介紹與應用
   ProgressBar 進度條
   SeekBar  拖動條
   RatingBar  評分組件
   ImageView 介紹與應用
   ImageSwithcher&Gallery  切換圖片  在使用ImageSwitcher之前,一定要調用setFactory方法,否則,setImageResource這個方法會出現空指針異常。
   GridView 網格視圖
   Tab  標籤的介紹與應用
   menu


  Android應用的靈魂——intent 和Activity
intent  一次即將操作的抽象描述
  3個作用 a  啓動一個新的Activity並且可以攜帶數據
          b  通過intent來啓動一個服務service
          c  通過intent來廣播一個事件
    Bundle類型使用起來有點像HashMap    類型安全的容器。它是對HashMap做了一層封裝。但Bundle存入的只能是基本類型。


  ListView  列表
——————————————————————————————————
ArrayAdapter是ListAdapter直接子類
————————————————————————————————————


  
  ArrayAdapter
  SimpleAdapter
  SimpleCursorAdapter




 Dialog   對話框
AlertDialog
ProgressDialog




Toast和Notification應用
Toast雖然也是提醒用戶的一種方式,但是在實現上和Notification不一樣,後者需要NotificationManager所管理。而Toast是作爲Android中的Widget存在的。
  首先實例化一個Toast  Toast  toast=new  Toast(this)來實現
  第二  每一個Toast都可以和一個View相關,如toast.setView(view)
  第三  Toast的顯示長途有長有短,
  第四 設置好屬性後,就可以Toast顯示出來,通過Toast.show()系統就會顯出這個Toast。
  最後  當寫完代碼後需要在AndroidManifest.xml文件中加入對振動的權限控制。要不然程序會因爲沒有振動權限而報錯。實現代碼如下:
<uses-permission Android:name="Android.permission.VIBRATE" />




第8章  移動信息倉庫——Android的數據存儲操作
Android中,可供選擇的存儲方式有SharedPreferences、文件存儲、SQLite數據庫方式、內容提供器、網絡。  preferences是參數


如何使用Android提供的工具File  explore,來查看和刪除模擬器當中的數據庫表。
如果使用LogCat來看程序當中的打印的日誌。
SQLiteDatabase  db=mOpenHelper.getWritableDatabase() 這條語句負責得到一個可寫的SQLite數據庫。如果這個數據庫還沒有建立,那麼mOpenHelper輔助類負責建立這個數據庫。
db.execSQL(sql1)  語句對SQL語句進行執行。
Android支持5種打印級別  vwide  Verbose  Warning Info Debug  Error   (諧音:威武我的衣)




ContentValues類和Hashtable比較類似,也是負責存儲一些名值對,名是一個String類型,而值都是基本類型。


對單機menu裏邊按鈕的處理邏輯全部放在onMenuItemSelected函數裏。


Content Provider
一個程序可以通過實現一個Content Provider的抽象接口將自己的數據暴漏出去。




如果需要訪問外部網絡,則需要在AndroidManifest.xml文件中加入如下代碼申請權限許可;
<uses-permission Android:name="Android.permission.INTERNET"  />


webservice  網絡存儲




第9章   Android的核心——Intent
   靈魂,程序跳轉和傳遞數據基本上是靠Intent   sbs
   三種形式
   startActivity    
   broadcast Intent
   startService


   啓動一個特定的Activity   只需要將當前的Context和這個Activity的class作爲參數構造一個Intent
   啓動一個未知名的Activity   讓系統去尋找和匹配合適的Activity來啓動。 
   處理一個Activity的返回值    startActivityForResult方法用於啓動一個Activity並且新的Activity執行完成後需要返回到啓動它的Activity來執行回調函數毀掉
  ACTION_MAIN   AndroidManifest.xml  標記當前Activity作爲一個程序的入口。
 
與動作(Action)相關聯的數據(Data)介紹
Android中採用指向數據的一個URI來表示data,例如  content://contacts/1


形成一種級別的語言規範。
Action
categrory   類別,它爲執行動作的附加信息
type         數據類型,顯示指定Intent的數據類型MIME
component   組件,指定Intent的目標組件的類名稱
extras   附加信息,是其它所有附加信息的集合。


兩種形式使用Intent
直接Intent   setComponet(ComponentName)
             setClass(Context,Class)
簡介Intent   沒有指定commonent屬性的Intent
Intent還有一個重要的機制就是作爲不同進程間傳遞數據和事件的媒介。


BroadCast Receiver ,並且一般的要給註冊的這個Broadcast Receiver設置一個Intent  Filter來制定當前的Broadcast Receiver是對哪些Intent進行監聽。在onReceive方法裏邊最


好不要有執行超過5s的代碼,如果這樣的話,Android系統就會彈出超時對話框,有比較耗時的方法,可以把這些方法寫在一個線程裏邊,單獨來執行。


兩種方式對BroadcastReceive進行註冊:
 a:AndroidManifest.xml文檔當中進行註冊。推薦
 b: 代碼當中直接註冊


第10章  一切爲用戶服務——Service應用實例
Service  服務,它不能自己運行,需要通過某一個Activity或者其它Context對象來調用。
Context.startService()    和 Context.bindService()  兩種方式啓動Service,如果在Service的onCreate或者onStart做一些很耗時的動作,最好是啓動一個新線程來運行


Service,因爲,如果Service是運行在主線程中,會影響到程序的UI操作或者阻塞主線程中的其它事情。
Local  Service  
interprocess communication  IPC 不同進程直接通信機制


Service  的生命週期方法比Activity要少一些,只有onCreate、onStart、onDestroy
  bindService是綁定一起共存亡。
關於BroadcastReceiver,可以這樣理解——
Activity是應用的“眼睛”,其展示給用戶,可以用來交互;
而BroadcastReceiver是“耳朵”,其接受發生的Intent;
Service則相當於“手”,其把事情做完。


Description Resource Path Location Type
The type R is already defined R.java /ServicesDemo/gen/com/iceskysl/servicesdemo line 10 Java Problem




第11章  開發Android應用的基本步驟
  a  項目有哪些功能;
  b  需要哪些必須的界面以及界面之間跳轉的流程
  c  需要的數據及數據來源和格式
  d  是否需要服務端支持
  e  是否需要本地數據庫支持
  f  是否需要特殊的權限
  g   是否需要後臺進程等
數據來源有多種   SharePreferences、文件系統、數據庫、Content  Provider、網絡 等方式


第12章  Android綜合實例——RSS閱讀器實例
RSS 是一個網絡站點用來和其它站點之間共享內容的。
RICH Site Summary
RDF  Resource  Description  Framework  新一代的語義網技術
SAX  Simple  API  for XML 通DOM一樣也是一個訪問XML文檔的接口。同DOM一樣,SAX並不是一個實際可以使用的XML文檔解析器,而是其它兼容SAX的解析器要實現的接口和幫助類的


集合。




DOM(文件對象模型),爲XML文檔的解析定義了一組接口。解析器讀入整個文檔,然後構建一個駐留內存的樹結構,然後代碼就可以使用DOM接口來操作整個樹結構。
優點:整個文檔樹在內存當中,便於操作:支持刪除、修改、重新排列等多種功能。
缺點:將整個文檔調入內存,浪費時間和空間。


SAX解析XML文檔爲事件驅動。不用事先調入整個文檔,佔用資源少,尤其在嵌入式環境,如Android,極力推薦採用SAX進行解析。




第13章  Android綜合實例2——基於Google Map開發個人移動地圖






Android經典實例筆記
————————————————————————————————————————————————————
findViewById(R.id.go)  根據資源的名稱加載View類型的資源;
getString(R.string.msg_dialog) 可以加載字符串資源;
AlertDialog.show()  是一個靜態方法。


Activity是一個非常重要的基礎類;類同=》J2ME中的Display類;Win32平臺的Form類;
如果把Activity看做MVC中的Control,它負責管理UI和接受事件(包括用戶輸入)


調轉功能用Intent來操作   函數 setClass() 設置跳轉前後兩個Activity類的實例,然後調用Activity自己的startActivity(intent)即可。  finish() 表示當前Activity關掉。
Android 用Activity  Stack來管理多個Activity,同一時刻只會有最頂上的那個Activity是處於active或者running狀態




intent 要定位事件的目的地。


種類(category)
類型(type)
組件(componet)
附加數據(extras)






debug----------------------------------------------------------------------------------------------------------------
1  用eclipse打開源碼時,出現“Unable to resolve target 'android-2'”提示
 
版本問題:
 
這是Android中打開一個低版本的工程出現的問題,我這邊以用android2.2打開android1.5的工程爲例。
 
把android1.5工程目錄下的default.properties文件中的"target=android-2"改成"target=android-8" 具體改成多少請參照Android SDK and AVD Manager裏模擬器的API Level,一


般3以上就能正常運行了。




---------------------------------------------------------------------------------------------------------------------






Android架構分4層  用框行li   (諧音:用框行禮) 
Android佈局有5種  架線絕對錶 (諧音:架電線絕對需要用表)
數據存儲5方式    下賤似C網   (諧音:下賤的就是聯通CDMA網  sharePreferences、文件、SQLite、ContentProvider、網絡存儲)
AICS             動意內務    (諧音 動意內務)
吾師哥           View, surfaceView, GLSurfaceView  (諧音 吾師哥 )
能適應Adapter          ABC,HLRSSSW (ABC,哈兒日思,思數萬) 一系列基本的光頭,列出的資源簡單簡單誘餌性包裝。
1.請談一下Android系統的架構。
答:Android系統採用了分層架構,從高層到低層分別是應用程序層、應用程序框架層、系統運行庫層和linux核心層。






android  愛pk aapt
佈局:架線絕對錶;
設想:用框行li;
數據:下賤似C網;
我有:吾師哥 ;
核心:動意內務;
能適應Adapter;
 一系列基本的光頭,列出的資源簡單簡單誘餌性包裝;
威武我的衣;
剛開始的時候,邦德保存實力狀態 onCreate(Bundle savedInstanceState)






2.談談android大衆常用的五種佈局。
答:在Android中,共有五種佈局方式,分別是:FrameLayout(框架佈局),LinearLayout (線性佈局),AbsoluteLayout(絕對佈局),RelativeLayout(相對佈局),TableLayout(表格


佈局)。
(1)FrameLayout  框架佈局,放入其中的所有元素都被放置在最左上的區域,而且無法爲這些元素指定一個確切的位置,下一個子元素會重疊覆蓋上一個子元素,適合瀏覽單張圖片。
(2)LinearLayout  線性佈局,是應用程序中最常用的佈局方式,主要提供控件水平或者垂直排列的模型,每個子組件都是以垂直或水平的方式來定位.(默認是垂直)
(3)AbsoluteLayout 絕對定位佈局,採用座標軸的方式定位組件,左上角是(0,0)點,往右x軸遞增,往下Y軸遞增,組件定位屬性爲android:layout_x 和 android:layout_y來確定


座標。
(4)RelativeLayout 相對佈局,根據另外一個組件或是頂層父組件來確定下一個組件的位置。和CSS裏面的類似。
(5)TableLayout 表格佈局,類似Html裏的Table.使用TableRow來佈局,其中TableRow代表一行,TableRow的每一個視圖組件代表一個單元格。
 
3.談談android數據存儲方式。
答:Android提供了5種方式存儲數據:
(1)使用SharedPreferences存儲數據;它是Android提供的用來存儲一些簡單配置信息的一種機制,採用了XML格式將數據存儲到設備中。只能在同一個包內使用,不能在不同的包之


間使用。
(2)文件存儲數據;文件存儲方式是一種較常用的方法,在Android中讀取/寫入文件的方法,與Java中實現I/O的程序是完全一樣的,提供了openFileInput()和openFileOutput()方


法來讀取設備上的文件。
(3)SQLite數據庫存儲數據;SQLite是Android所帶的一個標準的數據庫,它支持SQL語句,它是一個輕量級的嵌入式數據庫。
(4)使用ContentProvider存儲數據;主要用於應用程序之間進行數據交換,從而能夠讓其他的應用保存或讀取此Content Provider的各種數據類型。
(5)網絡存儲數據;通過網絡上提供給我們的存儲空間來上傳(存儲)和下載(獲取)我們存儲在網絡空間中的數據信息。
 
4.Android中Activity, Intent, Content Provider, Service各有什麼區別。
答:Activity: 活動,是最基本的android應用程序組件。一個活動就是一個單獨的屏幕,每一個活動都被實現爲一個獨立的類,並且從活動基類繼承而來。
Intent: 意圖,描述應用想幹什麼。最重要的部分是動作和動作對應的數據。
Content Provider:內容提供器,android應用程序能夠將它們的數據保存到文件、SQLite數據庫中,甚至是任何有效的設備中。當你想將你的應用數據和其他應用共享時,內容提供


器就可以發揮作用了。
Service:服務,具有一段較長生命週期且沒有用戶界面的程序。
 
5.View, surfaceView, GLSurfaceView有什麼區別。
答:view是最基礎的,必須在UI主線程內更新畫面,速度較慢。
SurfaceView 是view的子類,類似使用雙緩機制,在新的線程中更新畫面所以刷新界面速度比view快
GLSurfaceView 是SurfaceView的子類,opengl 專用的
 
6.Adapter有什麼作用?常見的Adapter有哪些?
答:Adapter是連接後端數據和前端顯示的適配器接口。常見的Adapter有ArrayAdapter, BaseAdapter, CursorAdapter, HeaderViewListAdapter, ListAdapter, 


ResourceCursorAdapter, SimpleAdapter, SimpleCursorAdapter, SpinnerAdapter, WrapperListAdapter等
 
7.Manifest.xml文件中主要包括哪些信息?
答:manifest:根節點,描述了package中所有的內容。
uses-permission:請求你的package正常運作所需賦予的安全許可。
permission: 聲明瞭安全許可來限制哪些程序能你package中的組件和功能。
instrumentation:聲明瞭用來測試此package或其他package指令組件的代碼。
application:包含package中application級別組件聲明的根節點。
 activity:Activity是用來與用戶交互的主要工具。
 receiver:IntentReceiver能使的application獲得數據的改變或者發生的操作,即使它當前不在運行。
 service:Service是能在後臺運行任意時間的組件。
 provider:ContentProvider是用來管理持久化數據併發布給其他應用程序使用的組件。
 
8.請寫一段代碼(SAX, DOM, 或者pull )來解析XML文檔。
答:下面是要解析的XML文件:
<?xml version="1.0" encoding="UTF-8"?> 
<persons> 
<person id="1"> 
<name>張三</name> 
<age>22</age> 
</person> 
<person id="2"> 
<name>李四</name> 
<age>23</age> 
</person> 
</persons>
複製代碼
定義一個名爲Person的javaBean用於存放上面解析出來的xml內容
publicclass Person {
private Integer id;
private String name;
private Short age;


public Integer getId() {
return id;
}


public void setId(Integer id) {
this.id = id;
}


public String getName() {
return name;
}


publicvoid setName(String name) {
this.name = name;
}


public Short getAge() {
return age;
}


publicvoid setAge(Short age) {
this.age = age;
}
}
複製代碼
 (1)使用SAX讀取XML文件;它採用的是事件驅動,並不需要解析完整個文檔,速度快並且佔用內存少。需要爲SAX提供實現ContentHandler接口的類。
PersonDefaultHandler.java
import java.util.ArrayList;
import java.util.List;


import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;


import com.sinber.domain.Person;


publicclass PersonDefaultHandler extends DefaultHandler {
private List<Person> persons;
private Person person ; //記錄當前person
private String perTag; //記錄前一個標籤的名稱


/**
* 重寫父類的開始文檔方法。用於初始化
*/
@Override
publicvoid startDocument() throws SAXException {
persons =new ArrayList<Person>();
}


@Override
publicvoid startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
if("person".equals(localName)){
Integer id =new Integer(attributes.getValue(0)); //取id
person =new Person();
person.setId(id);
}
perTag = localName;
}


/**參數:
* ch 整個XML字符串
* start 節點值在整個XML字符串中的索引位置
* length 節點值的長度
*/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章