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í)行,因?yàn)橥ㄟ^反射機(jī)制獲取的方法是所有方法。

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、實(shí)例化HttpUtils->new HttpUtils()

b、調(diào)用實(shí)例的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)接口的抽象類

必須實(shí)現(xiàn)

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

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

不必須實(shí)現(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ò)位置的文件 ?, 特點(diǎn):支持?jǐn)帱c(diǎn)續(xù)傳,隨時停止下載任務(wù),開始任務(wù)

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

b、調(diào)用實(shí)例的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ù)下載(斷點(diǎn)續(xù)傳)

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

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

c、HttpHandler類

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

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

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

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

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

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

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

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

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

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

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

// 加入文件參數(shù)后默認(rèn)使用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實(shí)例的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、實(shí)例化BitmapUtils

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

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

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

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

加載網(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ù)屏幕尺寸

默認(rèn)顯示圖片 ? ? ? 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:

//實(shí)例化圖片顯示的配置

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),一行代碼就可以進(jìn)行增刪改查,支持事務(wù),默認(rèn)關(guān)閉

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

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

支持鏈?zhǔn)奖磉_(dá)查詢,更直觀的查詢語義,參考下面的介紹或sample中的例子

a、實(shí)體類聲明及注解

注:必須提供無參的構(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實(shí)例化->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全局?jǐn)?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)鏈?zhǔn)讲樵?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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容