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

目录
相关文章
|
10月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1812 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
10月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1164 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
10月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1227 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
11月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
972 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
10月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
485 0
|
11月前
|
Java 开发工具 Maven
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
1426 6
|
JavaScript Linux 网络安全
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
6177 77
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
744 11
|
移动开发 Java 编译器
Kotlin与Jetpack Compose:Android开发生态的演进与架构思考
本文从资深Android工程师视角深入分析Kotlin与Jetpack Compose在Android系统中的技术定位。Kotlin通过空安全、协程等特性解决了Java在移动开发中的痛点,成为Android官方首选语言。Jetpack Compose则引入声明式UI范式,通过重组机制实现高效UI更新。两者结合不仅提升开发效率,更为跨平台战略和现代架构模式提供技术基础,代表了Android开发生态的根本性演进。
608 0
|
安全 Java Android开发
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
537 0
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡

热门文章

最新文章