編輯:關於Android編程
標識符只能使用ASCII字母和數字
非常量字段名以LowerCamelCase風格編寫;
public static final 字段(常量) 全部大寫,並用下劃線連起來。
public class MyClass { public static final int SOME_CONSTANT = 42; public int pField; private static MyClass sSingleton; int mPackagePrivate; private int mPrivate; protected int mProtected; public static int gField; }
考慮到Android中使用很多UI控件,為避免控件和普通成員變量混淆以及更好達意,所有用來表示控件的成員變量統一加上控件名稱作為後綴,如標題的TextView,mTitleTextView;
對於普通變量一般不添加類型後綴,標題如mTitle;
臨時變量通常被取名為i,j,k,m和n,它們一般用於整型;如:for (int i = 0; i < len ; i++),並且它和第一個單詞間沒有空格。
全部小寫,采用下劃線命名法
* contentview命名
必須以全部單詞小寫,單詞間以下劃線分割,使用名詞或名詞詞組。
所有Activity或Fragment的contentView必須與其類名對應,對應規則為:
1)將所有字母都轉為小寫,將類型和功能調換(也就是後綴變前綴)。
例如:activity_main.xml
2) Dialog命名:dialog_描述.xml
例如:dialog_hint.xml
3) PopupWindow命名:ppw_描述.xml
例如:ppw_info.xml
4) 列表項命名:item_描述.xml
例如:item_city.xml
5) 包含項命名:模塊_(位置)描述.xml
例如:activity_main_head.xml、activity_main_bottom.xml
注意:通用的包含項命名采用:項目名稱縮寫_描述.xml
例如:xxxx_title.xml
全部小寫,采用下劃線命名法,加前綴區分
命名模式:可加後綴 _small 表示小圖, _big 表示大圖,邏輯名稱可由多個單詞加下劃線組成,采用以下規則:
用途模塊名邏輯名稱
用途模塊名顏色
用途_邏輯名稱
用途_顏色
說明:用途也指控件類型(具體見UI控件縮寫表)
例如:
btn_main_home.png 按鍵 divider_maket_white.png 分割線 ic_edit.png 圖標 bg_main.png 背景 btn_red.png 紅色按鍵 btn_red_big.png 紅色大按鍵 ic_head_small.png 小頭像 bg_input.png 輸入框背景 divider_white.png 白色分割線values中name命名
常量聲明區
UI控件成員變量聲明區
普通成員變量聲明區
內部接口聲明區
初始化相關方法區
事件響應方法區
普通邏輯方法區
重載的邏輯方法區
發起異步任務方法區
異步任務回調方法區
生命周期回調方法區(出去onCreate()方法)
內部類聲明區
按照發生的先後順序排列
常量按照使用先後排列
UI控件成員變量按照layout文件中的先後順序排列
普通成員變量按照使用的先後順序排列
方法基本上都按照調用的先後順序在各自區塊中排列
相關功能作為小區塊放在一起(或者封裝掉
建立標准的縮進大小(如四個空格),並一致地使用此標准對代碼進行格式化;
不要使用組合聲明,比如int a, b;。
需要時才聲明,並盡快進行初始化
不要在一個代碼塊的開頭把局部變量一次性都聲明了(這是c語言的做法),而是在第一次需要使用它時才聲明。 局部變量在聲明時最好就進行初始化,或者聲明後盡快進行初始化。
private:僅類的內部可獲取;
protected:類及其子類可獲取;
public:整個包名范圍內可獲取;
避免多余的代碼,注釋掉的代碼和沒有實際使用代碼都要刪掉,不要保留;
主要作用是便於其他人閱讀和理解代碼;
在每個程序的最開始部分,一般都用Javadoc注釋對程序的總體描述以及版權信息,之後在主程序中可以為每個類、接口、方法、字段添加Javadoc注釋,每個注釋的開頭部分先用一句話概括該類、接口、方法、字段所完成的功能,這句話應單獨占據一行以突出其概括作用,在這句話後面可以跟隨更加詳細的描述段落;
雖然為一個設計低劣的程序添加注釋不會使其變成好的程序,但是如果按照編程規范編寫程序並且為程序添加良好的注釋卻可以幫助你編寫出設計完美,運行效率高且易於理解的程序,尤其是在多人合作完成同一項目時編程規范就變得更加重要。
/** * * 設置用戶信息的提供者,供 RongIM 調用獲取用戶名稱和頭像信息。 * 設置後,當 sdk 界面展示用戶信息時,會回調 {@link io.rong.imkit.RongIM.UserInfoProvider#getUserInfo(String)} * 使用者只需要根據對應的 userId 提供對應的用戶信息。 * 如果需要異步從服務器獲取用戶信息,使用者可以在此方法中發起異步請求,只需要返回 null 信息。 * 在異步請求結果返回後,根據返回的結果調用 {@link #refreshUserInfoCache(UserInfo)} 刷新用戶信息。 * * * @param userInfoProvider 用戶信息提供者 {@link io.rong.imkit.RongIM.UserInfoProvider}。 * @param isCacheUserInfo 設置是否由 IMKit 來緩存用戶信息。 * 如果 App 提供的 UserInfoProvider。 * 每次都需要通過網絡請求用戶數據,而不是將用戶數據緩存到本地,會影響用戶信息的加載速度; * 此時最好將本參數設置為 true,由 IMKit 來緩存用戶信息。 */ public static void setUserInfoProvider(UserInfoProvider userInfoProvider, boolean isCacheUserInfo)
本節引言: 上一節,我們學習了Xfermode中的三兒子:PorterDuffXfermode構造方法中的為一個參數: PorterDuf
一、主線程和Looper我們知道android中可以使用Handler向主線程發送消息,來實現線程間的異步通信,AsyncTask內部其實也是使用Handler實現的。主
第一次見到ViewPager這個控件,瞬間愛不釋手,做東西的主界面通通ViewPager,以及圖片切換也拋棄了ImageSwitch之類的,開始讓ViewPager來做。
周三谷歌推出下一個流行的移動操作系統Android L。但是只提供了簡單地預覽版本,稍後將提供一個開發者預覽版,完整版計劃在今年秋天發布。 下面我們一起來看看如何