編輯:關於android開發
xutils的功能主要包括有四個部分:(1)布局視圖關聯;(2)圖片下載與緩存;(3)網絡請求;(4)數據庫;
1. 使用xutils進行視圖注入:
(1)在控件聲明上方添加@ViewInject()傳入控件的資源Id;
(2)OnCreate()中使用x.view().inject(),傳入上下文對象即可;
(3)設值點擊事件:
(3-1)自定義點擊事件方法;訪問權限為私有private void,傳入View參數;
(3-2)在方法上方加入注解@Event()傳入控件的資源Id;
注意:如果給多個控件設置在同一個點擊事件中,在@Event()中傳入int數組,數組中為不同的控件資源Id即可;
(3-3)在@Event()中傳入第二個參數為事件類型,默認type=OnClickListener.class,可以修改為type=AdapterView.OnItemClickListener.class;
3.網絡圖片下載:
(1)添加網絡訪問權限,讀、寫外存權限;
(2)聲明並實例化ImageView控件;
(3)在Activity或者Application的onCreate()中初始化xutils網絡請求:調用x.Ext.init(getApplication());
(3-1)在繼承Application的自定義類中onCreate()使用:
(3-2)onTerminate(),在程序退出時調用此方法;
(3-3)onLowMemeory(),在程序運行內存不足時調用此方法;
(4)設置圖片參數:
(4-1)創建ImageOptions.Builder對象圖片參數創建類,分別調用一下方法;
(4-2)setConfig(Bitmap.Config.RGB_565)設置圖片參數;
(4-3)setUseMemCache(true)設置是否圖片緩存; 注意:此處是3g緩存功能;
(4-4)setRadius(10)設置圖片圓角; 注意:慎用,是對圖片的處理,不是直接操作ImageView;
(4-5)setLoadingDrawableId()設置加載時的圖片資源Id;
(4-6)setFailureDrawableId()設置圖片下載失敗時的顯示資源Id;
(4-7)setIgnoreGif()設置是否忽略GIF格式的圖片;false為動態顯示;
(4-8)ImageOptions.Builder對象調用build(),返回ImageOptions對象,啟動創建的圖片參數對象;
(5)啟動圖片下載,調用x.image().bind()傳入兩個或三個參數:
參數1:要顯示的ImageView控件;
參數2:圖片下載路徑;
參數3:(可選)ImageOptions對象的圖片參數;
ImageView加載圖片過程:最開始會從內存裡加載圖片,如果找到圖片就會直接返回圖片,如果沒有就會從硬盤緩存裡面去取圖片,如果硬盤緩存還沒有就會從網絡加載圖片;從網絡加載圖片,會存一份在內存中,同時存一份在外存SDcard中;
4.網絡請求
(1)get下載請求:
(1-1)添加網絡訪問權限,讀、寫外存權限;
(1-2)設置請求參數:創建RequestParams對象,傳入網絡下載路徑;
(1-3)啟動下載數據:x.http().get(),傳入兩個參數,返回Callback.Cancelable對象:
參數1:RequestParams對象;
參數2:實現Callback.CommonCallback<String>接口的對象;
(1-4)實現Callback.CommonCallback<String>接口:重寫四個方法:
方法1:onSuccess(String result):下載成功之後調用此方法;
方法2:onError():下載失敗時調用此方法;
方法3:onCancelled():取消下載時調用此方法;
方法4:onFinished():下載結束時調用此方法;
(1-5)在onDestroy()中,判斷Cancelable對象不為空,而且可以取消時,取消網絡下載任務:Cancelable對象調用cancel()即可;
(2)post上傳請求:
(2-1)清單文件中添加網絡訪問權限,讀、寫外存權限;
(2-2)設置請求參數:創建RequestParams對象,傳入網絡上傳路徑;
(2-3)RequestParams對象調用addBodyParameter(),傳入鍵值對形式的數據;
(2-4)發送請求:x.http().post(),傳入兩個參數,返回Callback.Cancelable對象:
參數1:RequestParams對象;
參數2:回調監聽實現Callback.CommonCallback<String>接口,在該實現該接口的類中重寫四個方法:
方法1:onSuccess():上傳成功時回調此方法;
方法2:onError():上傳失敗時回調此方法;
方法3:onCancelled():上傳取消時回調此方法;
方法4:onFinished():上傳結束時回調此方法;
(3)upload上傳文件:在RequestParams對象中,創建上傳文件路徑,以鍵值對的形式放入RequestParams對象調用addBodyParameter()中;其他地方與上傳數據相同;
(4)download下載文件
(4-1)使用download包下的項目工具;
(4-2)創建文件下載路徑:Environment對象調用getExternalStorageDirectory().getAbsolutePath()得到絕對路徑;
(4-3)DownloadManager對象調用getInstance()得到DownloadManager對象;
(4-4)DownloadManager對象調用startDownload(),傳入六個參數:
參數1:下載路徑;
參數2:保存標記;
參數3:文件路徑;
參數4:是否支持斷點續傳;
參數5:是否支持重命名;
參數6:null空參;
5. 數據庫功能:可以設置增刪改查,數據庫信息以Module形式存儲;
(1)創建JavaBean保存數據庫中的一張表信息;
在當前JavaBean前加入注解:@TABLE(),傳入name=””,作為表名;
在JavaBean中的屬性前加入注解:@Column(),傳入id=””作為字段Id,傳入name=””作為字段名;
注意:在數據庫對應的JavaBean中必須有id屬性,綁定注解為@Column(isId=true, name=””),否則會在運行時報空指針異常;
(2)在Activity中配置數據庫信息:
(2-1)創建DbManager.DaoConfig對象;
(2-2)setDbName(),傳入數據庫名;
(2-3)setDbOpenListener(),傳入實現DbManager.DbOpenListener接口的對象,重寫onDbOpened()打開數據;
(2-4)setDbUpgradeListener(),傳入實現DbManager.DbUpgradeListener接口的對象,重寫onDbUpgrade()在更新數據庫時使用;
(3)在需要操作數據庫的地方進行增刪改查操作:
(3-1)增:
創建JavaBean對象,設置數據;使用x.getDb()傳入創建的DbManager.DaoConfig對象,之後調用save(),傳入JavaBean對象;
(3-2)刪:
1)刪除整張表:x.getDb()傳入創建的DbManager.DaoConfig對象,之後調用delete(),傳入JavaBean.class;
2)根據Id刪除單條記錄:x.getDb()傳入創建的DbManager.DaoConfig對象,之後調用deleteById(),傳入兩個參數:JavaBean.class和要刪除記錄的Id;
3)根據條件刪除單條記錄:x.getDb()傳入創建的DbManager.DaoConfig對象,之後調用delete(),傳入兩個參數:JavaBean.class和WhereBuilder.b().and().or().exo()等數據可以傳入的條件參數;
(3-3)改:
1)根據Id修改單條記錄:x.getDb()傳入創建的DbManager.DaoConfig對象,之後調用update(),傳入兩個以上參數:創建的JavaBean對象和要修改的字段名;
2)根據條件修改記錄:x.getDb()傳入創建的DbManager.DaoConfig對象,之後調用update(),傳入三個以上參數:JavaBean.class, WhereBuilder.b()傳入條件參數,保存修改後的鍵值對應的KeyValue對象;
(3-4)查:
x. getDb()傳入創建的DbManager.DaoConfig對象,之後調用selector(),傳入JavaBean.class參數,返回Selector<JavaBean>對象;之後根據該對象調用where()傳入whereBuilder.b()條件參數,之後調用findAll()開始查找,返回List<JavaBean>對象為查找結果;
onTouchEvent,ontouchevent使用新建MyView類 package onTouchEvent; import android.content.C
為什麼 Android Studio 工程文件夾占用空間這麼大?我們來給它減減肥,androidstudio偶然中發現Android Studio的工程文件夾比ADT B
Android性能優化之使用線程池處理異步任務 說到線程,我想大家都不陌生,因為在開發時候或多或少都會用到線程,而通常創建線程有兩種方式: 1、繼承Thread類
[Android開發]使用XUtils框架出現的問題記錄 1、首先出現了這樣一個問題: 百思不得其解,最後終於找到原因: 返回的永遠是 “訪問失敗&rdq