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?

  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?

  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?

  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?

  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?

  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?

  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?

  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

时间: 2024-10-27 23:24:40

Android--快速开发框架 afinal的相关文章

android快速开发框架XUtils update更新数据 无效

问题描述 android快速开发框架XUtils update更新数据 无效 最近学习XUtils发现 update更新数据库中的某个对象无效,好像第二次又可以了. 请问各位有遇到过这种情况吗

Android快速开发框架

项目地址:https://github.com/zuiwuyuan/QuickAndroid # QuickAndroid Android快速开发框架 项目介绍: QuickAndroid是一个免费的开源的.简易的Android开发框架,其开发宗旨是简单.快速的进行Android应用程序的开发. 它对AsyncHttpClientt框架进行了二次封装,可以快速的进行网络请求回调处理.而且,项目还集成了Fastjson,当网络数据时通过json格式传输时,可以更加快速高效的进行数据的解析操作. 项

afinal logo Android的快速开发框架 afinal

Afinal是一个android的ioc,orm框架,内置了四大模块功能:FinalAcitivity,FinalBitmap,FinalDb,FinalHttp.通过finalActivity,我们可以通过注解的方式进行绑定ui和事件.通过finalBitmap,我们可以方便的加载bitmap图片,而无需考虑oom等问题.通过finalDB模块,我们一行代码就可以对android的sqlite数据库进行增删改查.通过FinalHttp模块,我们可以以ajax形式请求http数据. - Read

afinal logoAndroid的快速开发框架 afinal

问题描述 本帖最后由 卡拉不是狗 于 2015-2-23 13:08 编辑 Afinal简介Afinal 是一个android的sqlite orm 和 ioc 框架.同时封装了android中的**框架,使其更加简单易用:使用finalBitmap,无需考虑bitmap在android中加载的时候oom的问题和快速滑动的时候图片加载位置错位等问题.Afinal的宗旨是简洁,快速.约定大于配置的方式.尽量一行代码完成所有事情.目前Afinal主要有四大模块:FinalDB模块:android中的

android 快速开发框架,基于组件化的MVP结构

AndroidMouldProject2 android快速开发模板工程,组件化的MVP结构,方便快速开发和多人协作,减少代码耦合,同时方便自定义扩展,封装了一些常用 的模块,通过引用AndroidBaseModule基础工程的方式来实现持续更新,同时通过依赖库的方式,增强个性化定制,使工程更加 简洁,使开发者只需要关心自己的逻辑实现,便于维护. 项目结构: 使用方法: 复制代码,修改包名,按照自己的需求更改代码逻辑和依赖关系 新建activity,fragment,model,view,pre

常用Android快速开发框架

在做项目的过程中遇到了很多困难,于是收集了一些快速开发的框架,使用后大大提高了项目开发速度,无论什么项目都可以使用的到,在此分享给大家,希望能对大家有帮助!(个人建议:有时间的同学可以看一下这些优秀框架的源码,一定会有很多收获!)     开发工具: Android Studio 学习资料: Android Studio中文社区.Android Studio Mac 快捷键整理分享 实用插件: ADB Idea:操作快捷菜单,快速清除数据,重启应用,卸载应用等操作 Android Layout

微信快速开发框架之发送客服信息

版本说明 此版本关键是增加了"发送客服消息"接口,之前大意了,忘记写了,幸亏@我想我是风的提醒. 目前此项目属于开源项目,所有代码都在github中,您也可以通过NuGet获取 PM> Install-Package JCSoft.WX.Framework 微信文档中,对于"发送客服消息"有一定限制,必须关注者发送过来消息,包括关注.自定义菜单等事件,我们可以在48小时内通过Post一个Json数据包,发送6种形式的消息. 我用以下名称,对应这6种消息方式:

Android项目快速开发框架探索(Mysql+ OrmLite + Hessian + Sqlite)

结合之前所用的ormlite和hessian,再加上SAE已经支持JAVA,把服务端切换到JAVA,也就有了本文.使用hessian来做数据传输,ormlite来实现客户端与服务端的数据存储,极大的减少了CRUD工作.本文为探索贴,未正式用于大型项目,欢迎大家讨论使用! 一.简介 1.1ormlite Ormlite[Object Relational Mapping Lite (ORM Lite)] 对象关系映射精简版(精简版的ORM)提供了一些简单的,轻量级持久化Java对象到SQL数据库,

Android应用开发框架 KJFrameForAndroid

问题描述 本帖最后由 天使牛 于 2015-2-22 20:20 编辑 _**简介****KJFrameForAndroid** 又叫KJLibrary,是一个android的orm 和 ioc 框架.同时封装了android中的Bitmap与****作的框架,使其更加简单易用:KJFrameForAndroid的设计思想是通过封装Android原生SDK中复杂的复杂**作而达到简化Android应用级开发,最终实现快速而又安全的开发APP.我们提倡用最少的代码,完成最多的**作,用最高的效率,