XUtils框架基本使用

框架需要添加的權(quán)限

<uses-permission android:name="android.permission.INTERNET"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

XUtils框架的四大模塊

ViewUtils的模塊

(1)查找UI控件:@ViewInject(R.id.textView)

eg: ? ? ? ?@ViewInject(R.id.tv1Id) ? ? ? ?private TextView tv1;

(2)注冊UI控件的事件: @OnClick(R.id.test_button)

eg: ? ? ? ?@OnClick(R.id.btn1Id) ? ??public void aa(View v){}

說明:

1) ? 方法的訪問范圍一般為public ,但如果為private也會正常執(zhí)行稼虎,因為通過反射機制獲取的方法是所有方法麦牺。

2) ? 方法無返回類型

3) ? 方法的參數(shù)必須是View類型的污筷。

(3)注冊ListView控件的事件:@OnItemClick(R.id.listViewId)

(4)注冊CheckBox控件的事件:@OnCompoundButtonCheckedChange(R.id.enableDiscovereId)

(5)查找資源:@ResInject(id = R.string.label, type = ResType.String)

(6)解析UI注解:ViewUtils.inject(this)

(一)在Activity中注入

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

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

ViewUtils.inject(this); //注入view和事件

...

}

(二)在Fragment中注入

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

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.bitmap_fragment, container, false); // 加載fragment布局

ViewUtils.inject(this, view); //注入view和事件

...

}

(三)在BaseAdapter中注入

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

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder vHolder=null;

if(convertView==null){

convertView=LayoutInflater.from(context).inflate(R.layout.item_jx, null);

vHolder=new ViewHolder();

ViewUtils.inject(vHolder, convertView);

...

}

...

}

(四)在PreferenceFragment中注入

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

public void onActivityCreated(Bundle savedInstanceState) {

super.onActivityCreated(savedInstanceState);

ViewUtils.inject(this, getPreferenceScreen()); //注入view和事件

...

}

ViewUtils.inject()的重載方法

// inject(View view);

// inject(Activity activity)

// inject(PreferenceActivity preferenceActivity)

// inject(Object handler, View view)

// inject(Object handler, Activity activity)

// inject(Object handler, PreferenceGroup preferenceGroup)

// inject(Object handler, PreferenceActivity preferenceActivity)

HttpUtils的模塊

支持同步和異步方式的網(wǎng)絡(luò)請求,支持大文件上傳嘲恍,上傳大文件不會oom,支持GET订雾、POST晶默、PUT、MOVE、COPY呕屎、DELETE让簿、HEAD、OPTIONS秀睛、TRACE尔当、CONNECT請求。

(1)一般使用步驟方法

使用場景: 獲取Json/xml的網(wǎng)絡(luò)接口數(shù)據(jù)

a琅催、實例化HttpUtils->new HttpUtils()

b居凶、調(diào)用實例的send(HttpMethod,String url,RequestCallback)方法,發(fā)送請求,并返回HttpHandler對象

第一個參數(shù):HttpMethod(GET,POST),第二個參數(shù): http的網(wǎng)絡(luò)請求接口藤抡,第三個參數(shù):請求回調(diào)ResponseCallback,需要指定返回數(shù)據(jù)的泛型,一般為String

c抹估、RequestCallback 回調(diào)接口的抽象類

必須實現(xiàn)

onSuccess(ResponseInfo responseInfo)請求成功的回調(diào)方法

onFailure(HttpException error, String msg)請求失敗的回調(diào)方法

不必須實現(xiàn)

onStart() 開始執(zhí)行之前的回調(diào)方法

onLoading(long total, long current, boolean isUploading) 正在執(zhí)行的回調(diào)方法

onCancelled() ?取消請求的回調(diào)方法

d缠黍、HttpHandler類

cancel(); 取消請求

cancel(true) 取消請求時,是否中斷線程

(2)文件下載的步驟方法

使用場景:下載非圖片的網(wǎng)絡(luò)位置的文件 ?, 特點:支持斷點續(xù)傳药蜻,隨時停止下載任務(wù)瓷式,開始任務(wù)

a、實例化HttpUtils->new HttpUtils()

b语泽、調(diào)用實例的download(String url,String target,boolean autoResume,boolean autoRename,RequestCallback)RequestCallback接口類同上

第一個參數(shù)url:網(wǎng)絡(luò)資源地址

第二個參數(shù)target: 本地存儲位置贸典,如/mnt/sdcard/aa.mp3

第三個參數(shù)autoResume:是否繼續(xù)下載(斷點續(xù)傳)

第四個參數(shù)autoRename:從請求返回信息中獲取文件名,下載完成后是否重命名

第五個參數(shù):異步請求的回調(diào)接口

c踱卵、HttpHandler類

通過HttpHandler.cancel()方法可以取消本次下載

(3)表單數(shù)據(jù)/文件上傳的步驟方法

使用場景:上傳基本數(shù)據(jù)或圖片等文件

a廊驼、實例化HttpUtils->new HttpUtils()

b、實例化RequestParamsRequestParams params=new RequestParams()

params.addHeader("name", "value") 增加請求頭參數(shù)

params.addQueryStringParameter("name", "value") 增加查詢字符參數(shù)

params.addBodyParameter("name", "value") 增加只包含字符串參數(shù)

//?只包含字符串參數(shù)時默認使用BodyParamsEntity惋砂,

//?類似于UrlEncodedFormEntity("application/x-www-form-urlencoded")妒挎。

params.addBodyParameter("file", new File("path")) 增加文件參數(shù)

// 加入文件參數(shù)后默認使用MultipartEntity("multipart/form-data"),

// 如需"multipart/related"西饵,xUtils中提供的MultipartEntity支持設(shè)置subType為"related"酝掩。

// 使用params.setBodyEntity(httpEntity)可設(shè)置更多類型的HttpEntity(如:

// MultipartEntity,BodyParamsEntity,FileUploadEntity,InputStreamUploadEntity,StringEntity)。

// 例如發(fā)送json參數(shù):params.setBodyEntity(new StringEntity(jsonStr,charset));

c眷柔、調(diào)用HttpUtils實例的send(HttpMethod,String url,RequestParams params,RequestCallback)方法開始上傳

第一個參數(shù):請求方法期虾,在此使用HttpMethod.POST

第二個參數(shù):上傳請求的網(wǎng)絡(luò)路徑

第三個參數(shù):上傳的數(shù)據(jù),包含基本信息和上傳文件信息

第四個參數(shù):請求的回調(diào)接口

BitmapUtils的模塊

加載bitmap的時候無需考慮bitmap加載過程中出現(xiàn)的oom和android容器快速滑動時候出現(xiàn)的圖片錯位等現(xiàn)象驯嘱,

支持加載網(wǎng)絡(luò)圖片和本地圖片镶苞,內(nèi)存管理使用lru算法,更好的管理bitmap內(nèi)存宙拉,

可配置線程加載線程數(shù)量宾尚,緩存大小,緩存路徑,加載顯示動畫等...

a煌贴、實例化BitmapUtils

BitmapUtils bUtils=new BitmapUtils(getApplicationContext(),"/mnt/sdcard/");

第一個參數(shù):Context 應(yīng)用上下文對象 ? ? ? ? 第二個參數(shù): 擴展緩存路徑

bUtils.configThreadPoolSize(5); //配置線程池大小

bUtils.configDiskCacheEnabled(true); //啟用擴展存儲緩存

加載網(wǎng)絡(luò)圖片:bUtils.display(imageView,?"http://www.baidu.com/logo.png")

加載本地圖片:bitmapUtils.display(imageView, "/sdcard/a.jpg")

加載assets中的圖片:加載本地圖片:bitmapUtils.display(imageView, "assets/a.jpg")

在使用ListView顯 示圖片時御板,可以通過PauseOnScrollListener控制滑動和快速滑動過程中時暫停加載圖片

//僅處理與圖片相關(guān)的事件,第二個參數(shù):滾動時是否暫停牛郑,第三個參數(shù):快速滑動時是否暫停

listView.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true));

//同時處理ListView.OnScrollListener事件

listView.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true, customListener));

b怠肋、了解config打頭的方法

BitmapGlobalConfig配置

線程加載線程數(shù)量 ? ? bUtils.configThreadPoolSize(5); //配置線程池大小

配置緩存 ? ? 路徑:/data/data/{package}/cache/xx

bUtils.configMemoryCacheEnabled(true)

bUtils.configDefaultCacheExpiry(100*1024); //配置最大的內(nèi)存緩存100k

加載顯示動畫 ? ? ? bUtils.configDefaultImageLoadAnimation(Animation)

BitmapDisplayConfig配置

圖片寬高 ? ? ?bUtils.configDefaultBitmapMaxSize(int w,int h)

bUtils.configDefaultBitmapMaxSize(BitmapSize bs)

new BitmapSize(int w,int h) 指定寬和高

BitmapCommonUtils.getScreenSize(context) 依據(jù)屏幕尺寸

默認顯示圖片 ? ? ? bUtils.configDefaultLoadingImage(int resId)

bUtils.configDefaultLoadingImage(Bitmap b)

bUtils.configDefaultLoadingImage(Drawable d)

下載失敗圖片 ? ? ? ?bUtils.configDefaultLoadFailedImage(int resId)

bUtils.configDefaultLoadFailedImage(Bitmap b)

bUtils.configDefaultLoadFailedImage(Drawable d)

圖片保存質(zhì)量 ? ? ? ?bUtils.configDefaultBitmapConfig(Bitmap.Config.RGB_565);

圖片加載動畫 ? ? ? ?bUtils.configDefaultImageLoadAnimation(Animation)

eg:

//實例化圖片顯示的配置

BitmapDisplayConfig bdConfig=new BitmapDisplayConfig();

//設(shè)置顯示圖片特性

bdConfig.setBitmapConfig(Bitmap.Config.ARGB_4444);

bdConfig.setBitmapMaxSize(BitmapCommonUtils.getScreenSize(context)); //圖片的最大尺寸

bdConfig.setLoadingDrawable(context.getResources().getDrawable(R.drawable.ic_default)); //加載時顯示的圖片

bdConfig.setLoadFailedDrawable(context.getResources().getDrawable(R.drawable.ic_default)); //加載失敗時顯示的圖片

bdConfig.setAutoRotation(true); //自動旋轉(zhuǎn)

bdConfig.setShowOriginal(false); //不顯示源圖片

bdConfig.setAnimation(AnimationUtils.loadAnimation(context, R.anim.slide_in_from_top)); //顯示圖片執(zhí)行的動畫

bUtils.configDefaultDisplayConfig(bdConfig); //將顯示圖片的配置設(shè)置到圖片工具類中

DBUtils的模塊

模塊說明:android中的orm框架(Object Relation Mapping),一行代碼就可以進行增刪改查淹朋,支持事務(wù)笙各,默認關(guān)閉

可通過注解自定義表名、列名础芍、外鍵杈抢、唯一性約束、NOT NULL約束仑性、CHECK約束等(需要混淆的時候請注解表名

和列名)惶楼,支持綁定外鍵,保存實體時外鍵關(guān)聯(lián)實體自動保存或更新诊杆,自動加載外鍵關(guān)聯(lián)實體歼捐,支持延時加載,

支持鏈式表達查詢晨汹,更直觀的查詢語義豹储,參考下面的介紹或sample中的例子

a、實體類聲明及注解

注:必須提供無參的構(gòu)造方法注:必須提供無參的構(gòu)造方法

@Table(name="t_class") 作用于類淘这,修改的類與表建立ORM

@Id(column="_id") 作用于類中id成員屬性剥扣,代表:主鍵

@Column(column="name") 作用于類中成員,代表:屬性對應(yīng)的列名

@NotNull 作用于類中成員慨灭,代表:不為空約束

@Unique 作用于類中成員朦乏,代表:唯一約束

@Check(value="numbers>20") 作用于類中成員,代表:檢查約束氧骤,即numbers列值必須在于20

@Foreign(column="parentId",foreign="id") 作用于類中成員呻疹,代表:外鍵約束,column為屬性對應(yīng)的列

名,foreign為外表的主鍵

@Finder(valueColumn="id",targetColumn="cid") 作用于類成員筹陵,探測當(dāng)前表與其它表之間的關(guān)聯(lián)

b刽锤、DBUtils實例化->dUtils

create(Context context)

create(Context context, String dbName)

create(Context context, String dbDir, String dbName)

create(Context context, String dbName, int dbVersion, DbUpgradeListener)

create(Context context, String dbDir, String dbName, int dbVersion, DbUpgradeListener )

c、通過DaoConfig配置App全局數(shù)據(jù)庫信息

dUtils.getDaoConfig().setDbDir(String dir)

dUtils.getDaoConfig().setDbName(String dbName)

dUtils.getDaoConfig().setDbVersion(int dbVersion)

d朦佩、事務(wù)與調(diào)試

dUtils.configAllowTransaction(true)

dUtils.configDebug(true);

e并思、增、刪语稠、修改數(shù)據(jù)

save(Object entity) 保存單條記錄

saveAll(List entities) 批量保存

saveBindingId(Object entity) 關(guān)聯(lián)的對象自動保存 ? ? ? 目前測試結(jié)果: 不保存

saveBindingIdAll(List entities) 批量保存宋彼,同時保存關(guān)系對象 ? ? ? ?目前測試結(jié)果: 不保存

deleteById(Class entityType, Object idValue)

delete(Object entity)

delete(Class entityType, WhereBuilder whereBuilder)

deleteAll(List entities)

deleteAll(Class entityType)

update(Object entity, String... updateColumnNames)

update(Object entity, WhereBuilder whereBuilder, String... updateColumnNames)

updateAll(List entities, String... updateColumnNames)

updateAll(List entities, WhereBuilder whereBuilder, String... updateColumnNames)

f弄砍、查詢數(shù)據(jù)

T findById(Class entityType, Object idValue)

T findFirst(Selector selector)

List findAll(Selector selector)

List findAll(Class entityType)

DbModel findDbModelFirst(SqlInfo sqlInfo)

DbModel findDbModelFirst(DbModelSelector selector)鏈式查詢,DbModel是繼承HashMap類的

List list = dUtils.findDbModelAll(Selector.from(

Student.class).select("id", "name", "age")

List findDbModelAll(SqlInfo sqlInfo)

findDbModelAll(DbModelSelector selector)

g、統(tǒng)計

long count(Selector selector)

long count(Class entityType)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末输涕,一起剝皮案震驚了整個濱河市音婶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌莱坎,老刑警劉巖衣式,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異檐什,居然都是意外死亡碴卧,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門乃正,熙熙樓的掌柜王于貴愁眉苦臉地迎上來住册,“玉大人,你說我怎么就攤上這事烫葬〗缁。” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵搭综,是天一觀的道長。 經(jīng)常有香客問我划栓,道長兑巾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任忠荞,我火速辦了婚禮蒋歌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘委煤。我一直安慰自己堂油,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布碧绞。 她就那樣靜靜地躺著府框,像睡著了一般。 火紅的嫁衣襯著肌膚如雪讥邻。 梳的紋絲不亂的頭發(fā)上迫靖,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機與錄音兴使,去河邊找鬼系宜。 笑死,一個胖子當(dāng)著我的面吹牛发魄,可吹牛的內(nèi)容都是我干的盹牧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼汰寓!你這毒婦竟也來了口柳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤踩寇,失蹤者是張志新(化名)和其女友劉穎啄清,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俺孙,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡辣卒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了睛榄。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荣茫。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖场靴,靈堂內(nèi)的尸體忽然破棺而出啡莉,到底是詐尸還是另有隱情,我是刑警寧澤旨剥,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布咧欣,位于F島的核電站,受9級特大地震影響轨帜,放射性物質(zhì)發(fā)生泄漏魄咕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一蚌父、第九天 我趴在偏房一處隱蔽的房頂上張望哮兰。 院中可真熱鬧,春花似錦苟弛、人聲如沸喝滞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽右遭。三九已至,卻和暖如春荔睹,著一層夾襖步出監(jiān)牢的瞬間狸演,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工僻他, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留宵距,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓吨拗,卻偏偏與公主長得像满哪,于是被迫代替她去往敵國和親婿斥。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理哨鸭,服務(wù)發(fā)現(xiàn)民宿,斷路器,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法像鸡,類相關(guān)的語法活鹰,內(nèi)部類的語法,繼承相關(guān)的語法只估,異常的語法志群,線程的語...
    子非魚_t_閱讀 31,622評論 18 399
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,072評論 25 707
  • 一個有條理性的聚焦的人吁脱,與一個發(fā)散思維的社交型人桑涎,如何電話溝通? 一方漫無目的意氣風(fēng)發(fā)的說個不停兼贡,另一方心焦氣躁卻...
    心理彥究員閱讀 281評論 0 0
  • 淺昱閱讀 146評論 0 0