日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 快速开发框架Afinal

發(fā)布時(shí)間:2024/1/17 Android 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 快速开发框架Afinal 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文轉(zhuǎn)載自:http://www.oschina.net/p/afinal/

?

Afinal簡介

  • Afinal 是一個(gè)android的sqlite orm 和 ioc 框架。同時(shí)封裝了android中的http框架,使其更加簡單易用;

  • 使用finalBitmap,無需考慮bitmap在android中加載的時(shí)候oom的問題和快速滑動的時(shí)候圖片加載位置錯(cuò)位等問題。

  • Afinal的宗旨是簡潔,快速。約定大于配置的方式。盡量一行代碼完成所有事情。

目前Afinal主要有四大模塊:

  • FinalDB模塊:android中的orm框架,一行代碼就可以進(jìn)行增刪改查。支持一對多,多對一等查詢。

  • FinalActivity模塊:android中的ioc框架,完全注解方式就可以進(jìn)行UI綁定和事件綁定。無需findViewById和setClickListener等。

  • FinalHttp模塊:通過httpclient進(jìn)行封裝http數(shù)據(jù)請求,支持ajax方式加載。

  • FinalBitmap模塊:通過FinalBitmap,imageview加載bitmap的時(shí)候無需考慮bitmap加載過程中出現(xiàn)的oom和android容器快速滑動時(shí)候出現(xiàn)的圖片錯(cuò)位等現(xiàn)象。FinalBitmap可以配置線程加載線程數(shù)量,緩存大小,緩存路徑,加載顯示動畫等。FinalBitmap的內(nèi)存管理使用lru算法,沒有使用弱引用(android2.3以后google已經(jīng)不建議使用弱引用,android2.3后強(qiáng)行回收軟引用和弱引用,詳情查看android官方文檔),更好的管理bitmap內(nèi)存。FinalBitmap可以自定義下載器,用來擴(kuò)展其他協(xié)議顯示網(wǎng)絡(luò)圖片,比如ftp等。同時(shí)可以自定義bitmap顯示器,在imageview顯示圖片的時(shí)候播放動畫等(默認(rèn)是漸變動畫顯示)。

使用afinal快速開發(fā)框架需要有以下權(quán)限:

1 2 <uses-permission?android:name="android.permission.INTERNET"?/> <uses-permission?android:name="android.permission.WRITE_EXTERNAL_STORAGE"?/>
  • 第一個(gè)是訪問網(wǎng)絡(luò)

  • 第二個(gè)是訪問sdcard

  • 訪問網(wǎng)絡(luò)是請求網(wǎng)絡(luò)圖片的時(shí)候需要或者是http數(shù)據(jù)請求時(shí)候需要,訪問sdcard是圖片緩存的需要。

FinalDB使用方法

2 3 4 5 FinalDb?db?=?FinalDb.create(this); User?user?=?new?User();?//這里需要注意的是User對象必須有id屬性,或者有通過@ID注解的屬性 user.setEmail("mail@tsz.net"); user.setName("michael?yang"); db.save(user);

?

FinalActivity使用方法:

  • 完全注解方式就可以進(jìn)行UI綁定和事件綁定

  • 無需findViewById和setClickListener等

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public?class?AfinalDemoActivity?extends?FinalActivity?{ ?? ????//無需調(diào)用findViewById和setOnclickListener等 ????@ViewInject(id=R.id.button,click="btnClick")?Button?button; ????@ViewInject(id=R.id.textView)?TextView?textView; ?? ????public?void?onCreate(Bundle?savedInstanceState)?{ ???????super.onCreate(savedInstanceState); ???????setContentView(R.layout.main); ????} ?? ????public?void?btnClick(View?v){ ???????textView.setText("text?set?form?button"); ????} }

FinalHttp使用方法:

普通get方法

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 FinalHttp?fh?=?new?FinalHttp(); fh.get("http://www.yangfuhai.com",?new?AjaxCallBack(){ ?? ????@Override ????public?void?onLoading(long?count,?long?current)?{?//每1秒鐘自動被回調(diào)一次 textView.setText(current+"/"+count); ????} ?? ????@Override ????public?void?onSuccess(String?t)?{ textView.setText(t==null?"null":t); ????} ?? ????@Override ????public?void?onStart()?{ //開始http請求的時(shí)候回調(diào) ????} ?? ????@Override ????public?void?onFailure(Throwable?t,?String?strMsg)?{ //加載失敗的時(shí)候回調(diào) ????} });

使用FinalHttp上傳文件 或者 提交數(shù)據(jù) 到服務(wù)器(post方法)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 AjaxParams?params?=?new?AjaxParams(); ??params.put("username",?"michael?yang"); ??params.put("password",?"123456"); ??params.put("email",?"test@tsz.net"); ??params.put("profile_picture",?new?File("/mnt/sdcard/pic.jpg"));?//?上傳文件 ??params.put("profile_picture2",?inputStream);?//?上傳數(shù)據(jù)流 ??params.put("profile_picture3",?new?ByteArrayInputStream(bytes));?//?提交字節(jié)流 ??FinalHttp?fh?=?new?FinalHttp(); ??fh.post("http://www.yangfuhai.com",?params,?new?AjaxCallBack(){ @Override public?void?onLoading(long?count,?long?current)?{ ????textView.setText(current+"/"+count); } ?@Override public?void?onSuccess(String?t)?{ textView.setText(t==null?"null":t); } ??});

使用FinalHttp下載文件:

  • 支持?jǐn)帱c(diǎn)續(xù)傳,隨時(shí)停止下載任務(wù) 或者 開始任務(wù)

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 FinalHttp?fh?=?new?FinalHttp();?? ????//調(diào)用download方法開始下載 ????HttpHandler?handler?=?fh.download("http://www.xxx.com/下載路徑/xxx.apk",?//這里是下載的路徑 ????true,//true:斷點(diǎn)續(xù)傳?false:不斷點(diǎn)續(xù)傳(全新下載) ????"/mnt/sdcard/testapk.apk",?//這是保存到本地的路徑 ????new?AjaxCallBack()?{?? ????@Override?? ????public?void?onLoading(long?count,?long?current)?{?? ?textView.setText("下載進(jìn)度:"+current+"/"+count);?? ????}?? ?? ????@Override?? ????public?void?onSuccess(File?t)?{?? textView.setText(t==null?"null":t.getAbsoluteFile().toString());?? ????}?? ?? });?? ?? ?? ???//調(diào)用stop()方法停止下載 ???handler.stop();

?

FinalBitmap 使用方法

加載網(wǎng)絡(luò)圖片就一行代碼 fb.display(imageView,url) ,更多的display重載請看幫助文檔

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 private?GridView?gridView; ????private?FinalBitmap?fb; ????@Override ????protected?void?onCreate(Bundle?savedInstanceState)?{ super.onCreate(savedInstanceState); setContentView(R.layout.images); ?? gridView?=?(GridView)?findViewById(R.id.gridView); gridView.setAdapter(mAdapter); ?? fb?=?FinalBitmap.create(this);//初始化FinalBitmap模塊 fb.configLoadingImage(R.drawable.downloading); //這里可以進(jìn)行其他十幾項(xiàng)的配置,也可以不用配置,配置之后必須調(diào)用init()函數(shù),才生效 //fb.configBitmapLoadThreadSize(int?size) //fb.configBitmapMaxHeight(bitmapHeight) ????} ?? ?///adapter?getView public?View?getView(int?position,?View?convertView,?ViewGroup?parent)?{ ????ImageView?iv; ????if(convertView?==?null){ convertView?=?View.inflate(BitmapCacheActivity.this,R.layout.image_item,?null); iv?=?(ImageView)?convertView.findViewById(R.id.imageView); iv.setScaleType(ScaleType.CENTER_CROP); convertView.setTag(iv); ????}else{ iv?=?(ImageView)?convertView.getTag(); ????} ????//bitmap加載就這一行代碼,display還有其他重載,詳情查看源碼 ????fb.display(iv,Images.imageUrls[position

轉(zhuǎn)載于:https://www.cnblogs.com/zhangping/p/4444008.html

總結(jié)

以上是生活随笔為你收集整理的Android 快速开发框架Afinal的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。