Afinal簡介
Afinal 是一個android的sqlite orm 和 ioc 框架。同時封裝了android中的http框架,使其更加簡單易用;
使用finalBitmap,無需考慮bitmap在android中加載的時候oom的問題和快速滑動的時候圖片加載位置錯位等問題。
Afinal的宗旨是簡潔,快速。約定大於配置的方式。儘量一行代碼完成所有事情。
目前Afinal主要有四大模塊:
FinalDB模塊:android中的orm框架,一行代碼就可以進行增刪改查。支持一對多,多對一等查詢。
FinalActivity模塊:android中的ioc框架,完全註解方式就可以進行UI綁定和事件綁定。無需findViewById和setClickListener等。
FinalHttp模塊:通過httpclient進行封裝http數據請求,支持ajax方式加載。
FinalBitmap模塊:通過FinalBitmap,imageview加載bitmap的時候無需考慮bitmap加載過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象。FinalBitmap可以配置線程加載線程數量,緩存大小,緩存路徑,加載顯示動畫等。FinalBitmap的內存管理使用lru算法,沒有使用弱引用(android2.3以後google已經不建議使用弱引用,android2.3後強行回收軟引用和弱引用,詳情查看android官方文檔),更好的管理bitmap內存。FinalBitmap可以自定義下載器,用來擴展其他協議顯示網絡圖片,比如ftp等。同時可以自定義bitmap顯示器,在imageview顯示圖片的時候播放動畫等(默認是漸變動畫顯示)。
今天我要寫的是關於finalhttp和finalbitmap,其中finalIActivity是最好應用的 例如
public class MainActivity extends FinalActivity {
@ViewInject(
id = R.id.imageview,
click = "myClick",
longClick = "myLongClick")
ImageView imageview; @ViewInject(
id = R.id.listview,
click = "myClick",
itemLongClick = "myItemLongClick",
itemClick = "myItemClick",
longClick = "myLongClick",
select = @Select(selected="myItemSelected", noSelected="myNoSelected"))
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);//繼承FinalActivity,setContentView中初始化了
}
public void myClick(View v) {
System.out.println("--myClick--");
}
public void myLongClick(View v) {
System.out.println("--myLongClick--");
}
public void myItemLongClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
System.out.println("--myItemLongClick--");
}
public void myItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
System.out.println("--myItemClick--");
}
public void myItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
System.out.println("--myItemSelected--");
}
public void myNoSelected(AdapterView<?> arg0) {
System.out.println("--myNoSelected--");
}
} `
接下來我們來說finalhttp
顧名思義 看上面解釋 我們來談代碼
FinalHttp http = new FinalHttp();
AjaxParams params = new AjaxParams();//get或者post傳遞的參數
params.put("xx", xx);
params.put("xxx", xx);
params.put("xx", new file("xxxx"));//文件上傳
params.put("profile_picture2", inputStream); // 上傳數據流
params.put("profile_picture3", new ByteArrayInputStream(bytes)); // 提交字節流
http.configTimeout(3000);
http.post/*(get)*/(Config.HOST + "Login", params,
new AjaxCallBack<String>() {
// 當我們請求失敗的時候會被調用,errorNo是請求失敗之後,服務器的錯誤碼,StrMsg則是錯誤信息
public void onFailure(Throwable t, int errorNo,
String strMsg) {
super.onFailure(t, strMsg);
}
// 如果請求成功,則調用這個回調函數,t就是服務器返回的字符串信息
public void onSuccess(String t) {
super.onSuccess(t);
}}});
接下來介紹finalbitmap的使用
FinalBitmap finalBitmap = FinalBitmap.create(context); // 初始化
哈哈哈哈是不是很簡單23333
finalBitmap.configLoadingImage(R.drawable.default_user);//設置加載時圖片
finalBitmap.configLoadfailImage(R.drawable.default_user);//設置加載失敗時圖片
finalBitmap.display(imageview, url);//設置顯示 參數爲要顯示的imageview或者其子類也行 url就是圖片路徑啦