Afinal简介

Afinal 是一个android的 orm 和 ioc 框架。同时封装了android中的httpClient,使其更加简单易用;使用finalBitmap,无需考虑bitmap在android中加载的时候oom的问题和快速滑动的时候图片加载位置错位等问题。 Afinal的宗旨是简洁,快速。约定大于配置的方式。尽量一行代码完成所有事情。

目前Afinal主要有四大模块:

1、FinalDB模块:android中的orm框架,一行代码就可以进行增删改查。支持一对多,多对一等查询。

2、FinalActivity模块:android中的ioc框架,完全注解方式就可以进行UI绑定和事件绑定。无需findViewById和setClickListener等。

3、FinalHttp模块:通过httpclient进行封装http数据请求,支持ajax方式加载。

4、FinalBitmap模块:通过FinalBitmap,imageview加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。FinalBitmap可以配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等。FinalBitmap的内存管理使用lru算法,没有使用弱引用(android2.3以后google已经不建议使用弱引用,android2.3后强行回收软引用和弱引用,详情查看android官方文档),更好的管理bitmap内存。FinalBitmap可以自定义下载器,用来扩展其他协议显示网络图片,比如ftp等。同时可以自定义bitmap显示器,在imageview显示图片的时候播放动画等(默认是渐变动画显示)。

使用afinal快速开发框架需要有以下权限:

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />第一个是访问网络 第二个是访问sdcard(访问网络是请求网络图片的时候需要或者是http数据请求时候需要,访问sdcard是图片缓存的需要)。

FinalDB使用方法:

`FinalDb db = FinalDb.create(this);

User user = new User();

user.setEmail("mail@tsz.net");

user.setId(1);

user.setName("michael yang");

db.save(user); `

FinalActivity使用方法:

`public class AfinalDemoActivity extends FinalActivity {

//无需调用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使用方法:

`FinalHttp fh = new FinalHttp(); fh.get("http://www.yangfuhai.com", new AjaxCallBack(){

@Overridepublic void onLoading(long count, long current) { //每1秒钟自动被回调一次        textView.setText(current+"/"+count);}@Overridepublic void onSuccess(String t) {        textView.setText(t==null?"null":t);}@Overridepublic void onStart() {    //开始http请求的时候回调}@Overridepublic void onFailure(Throwable t, String strMsg) {    //加载失败的时候回调}

});`

上传文件 或者提交数据:

`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); // 上传数据流 params.put("profile_picture3", new ByteArrayInputStream(bytes)); // 提交字节流

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下载文件:

`FinalHttp fh = new FinalHttp();
fh.download("http://www.xxx.com/下载路径/xxx.apk", "/mnt/sdcard/testapk.apk", new AjaxCallBack() {
@Override
public void onLoading(long count, long current) {
textView.setText("下载进度:"+current+"/"+count);
}

            @Override              public void onSuccess(File t) {                  textView.setText(t==null?"null":t.getAbsoluteFile().toString());              }          });  `

FinalBitmap 使用方法 (加载网络图片就一行代码 fb.display(imageView,url) ):

`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 = new FinalBitmap(this).init();//必须调用init初始化FinalBitmap模块    fb.configLoadingImage(R.drawable.downloading);    //这里可以进行其他十几项的配置,也可以不用配置,配置之后必须调用init()函数,才生效    //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]); return convertView; }`

更多相关文章

  1. android 拉伸图片
  2. Android 实现图片的自动缩放,适应分辨率不同的手机
  3. android纹理图片的加载与修改
  4. Android图片加载与缓存开源框架:Android Glide
  5. React Native嵌入到Android原生应用中、组件的生命周期、颜色、
  6. Android GSM驱动模块(rild)详细分析(一)基本架构及初始化
  7. Android Wifi模块学习
  8. Android Handler 异步消息处理机制的妙用 创建强大的图片加载类

随机推荐

  1. FrameLayout 上下层点击穿透
  2. 快捷方式工具类
  3. Android中图片的放大和缩小源码
  4. Android文件读写
  5. 为手机定制ROM
  6. View的XML 属性大全(官方文档)
  7. 捕获Android运行时改变
  8. Android反射工具类ReflectUtil
  9. android dialog 显示时弹出输入法
  10. Android日期对话框