天天看點

[android]AndroidInject架構——我的第一個android小型架構

作為一個移動應用開發者,随着需求的日益增多,Android項目的越來越臃腫,代碼量越來越大,

現在冷靜下來回頭看看我們的代碼,有多少代碼跟業務邏輯沒什麼關系的

是以,本人自不量力,在github上建了個開源項目,希望能一定程度地簡化我的代碼-。-

現在第一個版本完成,希望有興趣的朋友能加入一起完善。

本人才疏學淺,代碼中有寫得不妥的地方希望大家不吝賜教哈!

github位址:

<a href="https://github.com/wangjiegulu/androidInject">https://github.com/wangjiegulu/androidInject</a>

androidInject_1.0.jar:

<a href="http://pan.baidu.com/s/1rcSiy">http://pan.baidu.com/s/1rcSiy</a>

主要的思想就是通過注解的方式,把我們要做的事情直接注入進來給我們,“不是我去調用對象,而是對象自己來找我”

現在剛寫完了10個注解:

@AINoTitle, @AIFullScreen, @AILayout, @AIView, @AIBean, @AISystemService, @AIClick, @AIItemClick, @AILongClick, @AIItemLongClick

使用方法如下:

Activity中使用:

[android]AndroidInject架構——我的第一個android小型架構
[android]AndroidInject架構——我的第一個android小型架構

View Code

Fragment中使用:

[android]AndroidInject架構——我的第一個android小型架構
[android]AndroidInject架構——我的第一個android小型架構

具體注解如下:

@AINoTitle: 類注解, 隻适用于Activity(需繼承于AIActivity), 設定Activity不顯示Title

@AIFullScreen: 類注解, 隻适用于Activity(需繼承于AIActivity), 設定Activity全屏

@AILayout: 類注解

value[int]: 用于設定該Activity的布局 ---- setContentView(resId);

@AIView: 屬性注解

id[int]: 用于綁定控件 ---- findViewById(resId);(default identifier[R.id.{field name}] if did not set id)

clickMethod[String]: 用于設定控件點選事件的回調方法, 可選, 方法名稱任意, 參數必須為(View view)

longClickMethod[String]: 用于設定控件長按的回調方法, 可選, 方法名任意, 參數必須為(View view)

itemClickMethod[String]: 用于設定控件item點選的回調方法, 可選, 方法名任意, 參數必須為(AdapterView, View, int, long)

itemLongClickMethod[String]: 用于設定控件item長按的回調方法, 可選, 方法名任意, 參數必須為(AdapterView, View, int, long)

@AIBean: 屬性注解, 為該屬性生成一個對象并注入, 該對象必須有個預設的不帶參數的構造方法

@AISystemService: 屬性注解,為該屬性注入系統服務對象

@AIClick: 方法注解

value[int[], 所要綁定控件的id]: 用于綁定控件點選事件的回調方法, 方法名稱任意, 參數必須為(View view)

@AIItemClick: 方法注解

value[int[], 所要綁定控件的id]: 用于綁定控件item點選事件的回調方法, 方法名稱任意, 參數必須為(AdapterView, View, int, long)

@AILongClick: 方法注解

value[int[], 所要綁定控件的id]: 用于綁定控件長按事件的回調方法, 方法名稱任意, 參數必須為(View view)

@AIItemLongClick: 方法注解

value[int[], 所要綁定控件的id]: 用于綁定控件item長按事件的回調方法, 方法名稱任意, 參數必須為(AdapterView, View, int, long)

繼續閱讀