Afinal 是一個android的 orm 和 ioc 框架。並且封裝了android中的httpClient,使其更加簡單易用。使用finalBitmap,無需考慮bitmap在android中加載的時候oom的問題和快速滑動的時候圖片加載位置錯位等問題。
Afinal的宗旨是簡潔,快速。約定大於配置的方式。儘可能一行代碼完成全部事情。 html
目前Afinal主要有四大模塊: android
一、FinalDB模塊:android中的orm框架,一行代碼就能夠進行增刪改查。支持一對多,多對一等查詢。 git
二、FinalActivity模塊:android中的ioc框架,徹底註解方式就能夠進行UI綁定和事件綁定。無需findViewById和setClickListener等。 github
三、FinalHttp模塊:經過httpclient進行封裝http數據請求,支持ajax方式加載。 ajax
四、FinalBitmap模塊:經過FinalBitmap,imageview加載bitmap的時候無需考慮bitmap加載過程當中出現的oom和 android容器快速滑動時候出現的圖片錯位等現象。FinalBitmap能夠配置線程加載線程數量,緩存大小,緩存路徑,加載顯示動畫等。 FinalBitmap的內存管理使用lru算法,沒有使用弱引用(android2.3之後google已經不建議使用弱引用,android2.3後強行回收軟引用和弱引用,詳情查看android官方文檔),更好的管理bitmap內存。FinalBitmap能夠自定義下載器,用來擴展其餘協議顯示網絡圖片,好比ftp等。同時能夠自定義bitmap顯示器,在imageview顯示圖片的時候播放動畫等(默認是漸變更畫顯示)。 算法
使用afinal快速開發框架須要有如下權限: 緩存
1 |
< uses-permission android:name = "android.permission.INTERNET" /> |
2 |
< uses-permission android:name = "android.permission.WRITE_EXTERNAL_STORAGE" /> |
第一個是訪問網絡,第二個是訪問sdcard(訪問網絡是請求網絡圖片的時候須要或者是http數據請求時候須要,訪問sdcard是圖片緩存的須要)。
FinalDB使用方法: 網絡
1 |
FinalDb db = FinalDb.create( this ); |
3 |
User user = new User(); |
4 |
user.setEmail( "mail@tsz.net" ); |
6 |
user.setName( "michael yang" ); |
FinalActivity使用方法: 框架
01 |
public class AfinalDemoActivity extends FinalActivity { |
02 |
//無需調用findViewById和setOnclickListener等 |
03 |
@ViewInject (id=R.id.button,click= "btnClick" ) Button button; |
04 |
@ViewInject (id=R.id.textView) TextView textView; |
06 |
public void onCreate(Bundle savedInstanceState) { |
07 |
super .onCreate(savedInstanceState); |
08 |
setContentView(R.layout.main); |
11 |
public void btnClick(View v){ |
12 |
textView.setText( "text set form button" ); |
FinalHttp使用方法: 異步
1 |
FinalHttp.ajax( "http://www.yangfuhai.com/topic/7.html" , new AjaxCallBack() { |
3 |
public void callBack(AjaxStatus status) { |
4 |
textView.setText(status.getContentAsString()); |
FinalBitmap 使用方法 (加載網絡圖片就一行代碼 fb.display(imageView,url) ):
01 |
private GridView gridView; |
02 |
private FinalBitmap fb; |
04 |
protected void onCreate(Bundle savedInstanceState) { |
05 |
super .onCreate(savedInstanceState); |
06 |
setContentView(R.layout.images); |
08 |
gridView = (GridView) findViewById(R.id.gridView); |
09 |
gridView.setAdapter(mAdapter); |
11 |
fb = new FinalBitmap( this ).init(); //必須調用init初始化FinalBitmap模塊 |
12 |
fb.configLoadingImage(R.drawable.downloading); |
13 |
//這裏能夠進行其餘十幾項的配置,也能夠不用配置,配置以後必須調用init()函數,才生效 |
14 |
//fb.configBitmapLoadThreadSize(int size) |
15 |
//fb.configBitmapMaxHeight(bitmapHeight) |
19 |
///////////////////////////adapter getView//////////////////////////////////////////// |
21 |
public View getView( int position, View convertView, ViewGroup parent) { |
23 |
if (convertView == null ){ |
24 |
convertView = View.inflate(BitmapCacheActivity. this ,R.layout.image_item, null ); |
25 |
iv = (ImageView) convertView.findViewById(R.id.imageView); |
26 |
iv.setScaleType(ScaleType.CENTER_CROP); |
27 |
convertView.setTag(iv); |
29 |
iv = (ImageView) convertView.getTag(); |
31 |
//bitmap加載就這一行代碼,display還有其餘重載,詳情查看源碼 |
32 |
fb.display(iv,Images.imageUrls[position]); |
github下載地址:https://github.com/yangfuhai/afinal
google code:http://code.google.com/p/afinal
此次更新主要是修復FinalDb的一個嚴重bug和其餘幾個小細節的bug。建議使用afinal的朋友們更新到最新版後開發。
代碼已經上傳到:
http://code.google.com/p/afinal/
https://github.com/yangfuhai/afinal
0.2.1 更新記錄,你懂的
一、修復orm查詢的時候 沒有對date類型進行數據轉換(嚴重bug)
二、修改findObjectWihtOneToManyById和findObjectWihtManyToOneById爲findWihtOneToManyById和findWihtManyToOneById
三、添加findAllByWhere 方法
四、添加delete(Object entity) 方法
五、添加deleteByWhere(Class<?> clazz , String strWhere )方法
六、修改FinalHttp的Asynctask異步讀取http數據爲普通子線程(爲兼容android不一樣版本)
七、其餘orm細節bug