Android--快速开发框架 afinal

简介:

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显示图片的时候播放动画等(默认是渐变动画显示)。

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

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <uses-permission android:name="android.permission.INTERNET" />  
  2. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  

  • 第一个是访问网络

  • 第二个是访问sdcard

  • 访问网络是请求网络图片的时候需要或者是http数据请求时候需要,访问sdcard是图片缓存的需要。

FinalDB使用方法

关于finalDb的更多介绍,请点击这里

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. FinalDb db = FinalDb.create(this);  
  2. User user = new User(); //这里需要注意的是User对象必须有id属性,或者有通过@ID注解的属性  
  3. user.setEmail("mail@tsz.net");  
  4. user.setName("michael yang");  
  5. db.save(user);  

FinalActivity使用方法:

  • 完全注解方式就可以进行UI绑定和事件绑定

  • 无需findViewById和setClickListener等

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. public class AfinalDemoActivity extends FinalActivity {  
  2.    
  3.     //无需调用findViewById和setOnclickListener等  
  4.     @ViewInject(id=R.id.button,click="btnClick") Button button;  
  5.     @ViewInject(id=R.id.textView) TextView textView;  
  6.    
  7.     public void onCreate(Bundle savedInstanceState) {  
  8.        super.onCreate(savedInstanceState);  
  9.        setContentView(R.layout.main);  
  10.     }  
  11.    
  12.     public void btnClick(View v){  
  13.        textView.setText("text set form button");  
  14.     }  
  15. }  

FinalHttp使用方法:

普通get方法

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. FinalHttp fh = new FinalHttp();  
  2. fh.get("http://www.yangfuhai.com"new AjaxCallBack(){  
  3.    
  4.     @Override  
  5.     public void onLoading(long count, long current) { //每1秒钟自动被回调一次  
  6. textView.setText(current+"/"+count);  
  7.     }  
  8.    
  9.     @Override  
  10.     public void onSuccess(String t) {  
  11. textView.setText(t==null?"null":t);  
  12.     }  
  13.    
  14.     @Override  
  15.     public void onStart() {  
  16. //开始http请求的时候回调  
  17.     }  
  18.    
  19.     @Override  
  20.     public void onFailure(Throwable t, String strMsg) {  
  21. //加载失败的时候回调  
  22.     }  
  23. });  

使用FinalHttp上传文件 或者 提交数据 到服务器(post方法)

文件上传到服务器,服务器如何接收,请查看这里

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. AjaxParams params = new AjaxParams();  
  2.   params.put("username""michael yang");  
  3.   params.put("password""123456");  
  4.   params.put("email""test@tsz.net");  
  5.   params.put("profile_picture"new File("/mnt/sdcard/pic.jpg")); // 上传文件  
  6.   params.put("profile_picture2", inputStream); // 上传数据流  
  7.   params.put("profile_picture3"new ByteArrayInputStream(bytes)); // 提交字节流  
  8.    
  9.   FinalHttp fh = new FinalHttp();  
  10.   fh.post("http://www.yangfuhai.com", params, new AjaxCallBack(){  
  11. @Override  
  12. public void onLoading(long count, long current) {  
  13.     textView.setText(current+"/"+count);  
  14. }  
  15.    
  16. @Override  
  17. public void onSuccess(String t) {  
  18. textView.setText(t==null?"null":t);  
  19. }  
  20.   });  

使用FinalHttp下载文件:

  • 支持断点续传,随时停止下载任务 或者 开始任务

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. FinalHttp fh = new FinalHttp();    
  2.     //调用download方法开始下载  
  3.     HttpHandler handler = fh.download("http://www.xxx.com/下载路径/xxx.apk", //这里是下载的路径  
  4.     true,//true:断点续传 false:不断点续传(全新下载)  
  5.     "/mnt/sdcard/testapk.apk"//这是保存到本地的路径  
  6.     new AjaxCallBack() {    
  7.     @Override    
  8.     public void onLoading(long count, long current) {    
  9.  textView.setText("下载进度:"+current+"/"+count);    
  10.     }    
  11.    
  12.     @Override    
  13.     public void onSuccess(File t) {    
  14. textView.setText(t==null?"null":t.getAbsoluteFile().toString());    
  15.     }    
  16.    
  17. });    
  18.    
  19.    
  20.    //调用stop()方法停止下载  
  21.    handler.stop();  

FinalBitmap 使用方法

加载网络图片就一行代码 fb.display(imageView,url) ,更多的display重载请看帮助文档

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. private GridView gridView;  
  2.     private FinalBitmap fb;  
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState) {  
  5. super.onCreate(savedInstanceState);  
  6. setContentView(R.layout.images);  
  7.    
  8. gridView = (GridView) findViewById(R.id.gridView);  
  9. gridView.setAdapter(mAdapter);  
  10.    
  11. fb = FinalBitmap.create(this);//初始化FinalBitmap模块  
  12. fb.configLoadingImage(R.drawable.downloading);  
  13. //这里可以进行其他十几项的配置,也可以不用配置,配置之后必须调用init()函数,才生效  
  14. //fb.configBitmapLoadThreadSize(int size)  
  15. //fb.configBitmapMaxHeight(bitmapHeight)  
  16.     }  
  17.    
  18.    
  19. ///////////////////////////adapter getView////////////////////////////////////////////  
  20.    
  21. public View getView(int position, View convertView, ViewGroup parent) {  
  22.     ImageView iv;  
  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);  
  28.     }else{  
  29. iv = (ImageView) convertView.getTag();  
  30.     }  
  31.     //bitmap加载就这一行代码,display还有其他重载,详情查看源码  
  32.     fb.display(iv,Images.imageUrls[position]);  



转载:http://blog.csdn.net/chaoyu168/article/details/51014398

目录
相关文章
|
23小时前
|
编解码 数据库 Android开发
安卓应用开发:打造高效用户界面的五大技巧
【5月更文挑战第18天】在竞争激烈的应用市场中,一个流畅且直观的用户界面(UI)对于安卓应用的成功至关重要。本文将探讨五种提升安卓应用用户界面性能的技巧,包括合理布局设计、优化资源使用、利用硬件加速、内存管理以及响应式编程。通过这些方法,开发者可以创建出既美观又高效的应用体验,从而吸引和保留用户。
|
2天前
|
JSON Android开发 数据格式
Android框架-Google官方Gson解析,android开发实验报告总结
Android框架-Google官方Gson解析,android开发实验报告总结
|
2天前
|
前端开发 Android开发
Android架构组件JetPack之DataBinding玩转MVVM开发实战(四)
Android架构组件JetPack之DataBinding玩转MVVM开发实战(四)
Android架构组件JetPack之DataBinding玩转MVVM开发实战(四)
|
2天前
|
安全 Linux Android开发
Android最强保活黑科技的最强技术实现,2024年最新阿里资深Android开发带你搞懂Framework
Android最强保活黑科技的最强技术实现,2024年最新阿里资深Android开发带你搞懂Framework
Android最强保活黑科技的最强技术实现,2024年最新阿里资深Android开发带你搞懂Framework
|
2天前
|
算法 前端开发 Android开发
Android文字基线Baseline算法的使用讲解,Android开发面试题
Android文字基线Baseline算法的使用讲解,Android开发面试题
Android文字基线Baseline算法的使用讲解,Android开发面试题
|
2天前
|
数据库 Android开发
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
|
2天前
|
缓存 Android开发
Android插件化——高手必备的Hook技术,零基础开发android
Android插件化——高手必备的Hook技术,零基础开发android
|
2天前
|
Android开发
Android高级开发面试题以及笞案整理,实战解析
Android高级开发面试题以及笞案整理,实战解析
|
2天前
|
Android开发
Android Jetpack架构开发组件化应用实战,字节跳动+阿里+华为+腾讯等大厂Android面试题
Android Jetpack架构开发组件化应用实战,字节跳动+阿里+华为+腾讯等大厂Android面试题
|
2天前
|
存储 定位技术 开发工具
Android 开发前的设计,Android之内存泄漏调试学习与总结
Android 开发前的设计,Android之内存泄漏调试学习与总结