編輯:關於android開發
開發者必備自學工具:
谷歌搜索:www.yundou.info
Android原版開發文檔 (英文) Doc http://www.phoned.cn/docs/reference/android/view/View.html
Android原版開發文檔 (英文) Doc 下載地址 http://www.phoned.cn/docs.zip 由於谷歌被封殺網頁相關谷歌API無法調用打開會非常卡建議斷網或FQ後使用。
2015-12-24
View 組件:
絕大多數的android基礎控件都存在包android.widget,android.view 及其子包中。
所有的UI基礎組件都繼承了View類,view是一個空白的panel 板。
ViewGroup 具有view的功能,通常用作view的容器,而其又是抽象類,為了減少方法復寫通常使用ViewGroup的子類作為容器。
ViewGroup通過它自身的內部類LayoutParams,MarginLayoutParams的XML方法來控制放在其容器內部的組件布局。
開發者可以通過繼承View類並實現其方法,自定義個性化的UI組件。通常重寫View構造函數這種基本的方式實現。
繼承自View的類重寫其方法,該類生成的對象將按照重寫的方法來生成相應的形狀或者效果。
如果使用R引用控件或文件時無法找到已經創建的控件時,查看引入的R文件是否是當前包的R文件。
//////////////////////////////////////////////////////////////////////////////////////////////////////
2015年12月25日
再探布局:
LinearLayout 流式布局,組件可按照橫向或縱向先後順序排列,組件之間會相互推擠,由於屏幕大小有限,有時有的控件會推擠到屏幕外而無法看到該控件。
GridView網格布局,指定行列後添加View控件、。
TableLayout 表格布局,無需事先指定行列,添加行數後,在行控件中添加子控件。
FrameLayout 幀布局,各個控件會按照加載順序會疊加在一起。
RelativeLayout 關系布局,各個控件的位置由其他控件的位置作為參考來擺放。
AbsoluteLayout 絕對布局,控件的位置由開發者自己決定,嚴格的按照x,y坐標來擺放控件。
//////////////////////////////////////////////////////////////////////////////////////////////////////
2015年12月26日
深入Activity
眾多的Activity組成Activity棧,當前活動的Activity處於棧頂。
通過繼承關系圖可知:Activity間接的繼承了context,contextwrapper,contextthemewrapper等基類。
什麼是回調:在特定時刻會發生的調用行為,例如回調函數。A調用B去處理相關事務,B在處理事務時需要A提供一個處理事務的函數C,C則稱為回調函數,為什麼A不直接去處理而讓B去處理,在處理過程中B可能不只是處理A的事務,還處理其它類型的事務,在處理各種類型的事務的過程中底層某些實現邏輯是一致的,所以封裝了B,減少了冗余的底層實現代碼,對於一個具有通用性質的程序架構來說,程序完成整個應用的通用功能,流程,但是在特定的點上,需要執行開發者自定義的與軟件業務相關的代碼,這段代碼”因人而異”而通用程序構架無法完成這段代碼。
程序內部邏輯執行完成後需要調用該段由開發者自定義的函數或代碼來實現特定的功能,通常有兩種方式完成這段功能代碼的編寫:一種是以接口的新式,復寫其回調方法以嵌入自己的代碼。另一種是通過繼承基類的抽象或非抽象的類方法,復寫其抽象或非抽象類方法完成代碼嵌入。
//////////////////////////////////////////////////////////////////////////////////////////////////////2015年12月27日
理解intent相關
Android使用同一的intent模型來封裝模塊間的啟動,為各個模塊組件提供了統一的編程模型。
ComponentName(A1,A2);A
參數A1代表A1所對應的包,A1可以是String、Context。
參數A2代表組件,A2可以是String、class。
Intent屬性 action和category是一個設置靜態字符串的方法,action方法代表intent需要完成的行為(打開,查看等),category方法為action提供附加信息。
Intent設置了category和action結合的方法後只是定義了intent的行為和該行為附加信息,並沒有指定執行這一行為的對象,通過intent-filter來控制執行對象,在Manifest中配置Activity的Intent-filter,該Activity就有可能被啟動。
通過intent-filter來指定動作的執行者,從而切斷了行為與執行者之間的粘合,行為和執行者之間是可插拔的關系,如此設計降低程序的耦合度。
//////////////////////////////////////////////////////////////////////////////////////////////////////
2015年12月29日(補一章)
Android資源操作
Android目錄下的res目錄中存放的資源會自動在R文件中生成索引,在代碼中可以直接引用。Assets也是存放資源的目錄,存放的是android無法直接訪問的原生資源,需要使用AssetsManager已二進制流讀取。
在XML代碼中使用@符號引用的標識符號除了系統定義的資源名稱還外可以在XML資源文件中使用name標簽自定義資源名稱。
尺寸,顏色,字符串資源,定義在res下的value文件夾中,使用@符號引用資源時格式為例如:@string/title即引用了value下的string文件下name為title的item的值。
XML資源中的數組,在XML根標簽<resource>下定義的三種數組形式:<array>普通型<string-array>字符串型<integer-array>整形數組。
根標簽<layer-list>是LayerDrawable的XML聲明格式,其內部包含的是Drawable對象(drawable=XXX),可以包含多個Drawable。繪制順序根據索引大小依次繪制。
五大資源特效控件 StateListDrawable, LayerDrawable, ShapeDrawabe, ClipDrawable, AnimationDrawable。
StateListDrawable 根標簽<seloctor>設置控件事件發生變化時起作用。
LayerDrawable 根標簽<Layer>根據Drawable對象繪制圖形。
ShapeDrawable 根標簽<Shape>設置控件視覺效果,例如 圓角,填充,邊線,漸變。
ClipDrawable 根標簽<Clip>截取圖片特定位置的片段。
AnimationDrawable 根標簽<set>設置一個動畫資源。
原始XML:保存一些初始化參數或者小量的配置信息,大量信息可以考錄使用SQLite。
要求:是一份語法符合XML規范的文件。
通過XML解析類XmlResourceParser的方法getXml(int id)獲取XmlPullParser對象來進行XML相關操作。
使用InputStream類的方法openRawResource方法可獲取XML輸入流。
菜單資源./res/menu 根標簽<menu>通過設置其內嵌的元素項來設置菜單的內容。
通過重寫上下文菜單方法onCreateContextMenu可以將菜單資源文件載入作為一個上下文菜單,也可以用於其他地方,手法類似。
Android中定義theme主題資源。
控件風格控制:根標簽<resource>通過子標簽<style>添加屬性。子標簽<style>可通過name指定樣式名稱,parent指定繼承項。
Activity主題控制:Activity主題XML格式類似風格控制的寫法,item項多采用系統函數android:WindowXXX書寫的形式。
通過activity的setTheme方法可為單個activity設置主題,統一設置主題可在manifest中設置。
Attribute屬性資源,根標簽<resource>,attr為子元素,declare-styleable為屬性的集合。
代碼中通過AttributeSet方法獲取屬性。
Attribute對對象的屬性進行托管,規范化對象屬性。
使用屬性時通過在項目XML布局中導入attribute所在的包。命名空間:xmlns:xxx.android.com/apk/res/packge
Android程序國際化的主要類:ResourceBundle,locale,翻譯文件以KEY-VAR鍵值對形式存放,通過native2veascii將其轉化為Unicode格式。
Android程序國際化也可以通過res下建立不同語言命名的文件夾(value-zh-rCN)的String.xml鍵值對(<string name=”ok”>好</string>)來實現。、
//////////////////////////////////////////////////////////////////////////////////////////////////////
圖形與圖像處理(主要靠動手)
Bitmap代表一張位圖,BitmapDrawable封裝了Bitmap對象。
訪問android程序自身以外的路徑中的圖像需要需要使用BitmapFactory來解析創建bitmap對象。
創建bitmap對象往往需要占用設備內存,bitmap對象方法isRecycle()方法判斷是否已經回收recycle()方法則強制回收。
繼承view組件重寫onDraw方法即可實現繪畫。
Canvas代表畫布,paint代表畫筆。使用它們各自的方法可以實現繪畫不同效果。
Path代表任意多條子線鏈接而成的任意圖形。它可以預先在view上將N個點鏈接成一條路徑,然後使用canvas的drawPath方法沿路徑繪制圖形。
PathEffect定義繪制的效果。
Matrix是android提供的一個矩陣工具類,結合其它API來控制圖形組件的變換。
//////////////////////////////////////////////////////////////////////////////////////////////////////
2016年1月1日(補兩章)
Android數據存儲於IO流
SharedPreferences 接口以鍵值對的形式:用於保存少量信息,例如配置信息,軟件相關外存。
SharedPreferences提供了一系列對外存文件的讀寫操作。
SharedPreferences內部接口Editor提供了數據的寫入和清除方法。
SharedPreferences本身是一個接口,無法使用new方法生成其對象,強行使用new方法生成其對象則會寫成內部類形式。使用context.getSharedPreferences();獲取對象。
Context提供了一組讀取當前應用程序的數據文件夾下文件的IO文件流:openFileInput openFileOutput。
讀寫SD卡文件:Environment getExternalStorageState();判斷SD卡狀態。
GetExternalStorageDirectory()獲取SD卡目錄。
使用FileInputStream FileOutputStream FileReader FileWriter方法對文件進行讀寫。
後記:學習至此只看書然而並沒有什麼卵用,光領會內容是不夠的,工科資料需要邊領會邊實戰,還有如果不能堅持的話前面干得再多也將會很快忘記。2016年1月2日
Android ShareSDK快速實現分享功能,androidsharesdk第一步 :獲取ShareSDK 為了集成ShareSDK,您首先需要到ShareSDK
Android逆向之旅---解析編譯之後的AndroidManifest文件格式 一、前言 今天又是周六了,閒來無事,只能寫文章了呀,今天我們繼續來看逆向的相關知識,我們
我的Android進階之旅------)Android編譯錯誤java.util.zip.ZipException: duplicate entry的解決方法 今天在An
Android View事件分發機制 最近在開發中遇到view滑動沖突的問題,由於一開始就知道這個問題與view事件分發有關,之後在網上看了幾篇關於事件分發的資料後,開發