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