#afinal交流平台
* QQ群:192341294(群1,2000未满) 246710918(群2,1000未满)
##作者个人微信
![mahua](http://7xi3g2.com1.z0.glb.clouddn.com/grwx.png?imageView2/1/w/250/h/250/q/87)
----
# ![mahua](http://code.google.com/p/afinal/logo?cct=1351516535) 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快速开发框架需要有以下权限:
```xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
```
* 第一个是访问网络
* 第二个是访问sdcard
* 访问网络是请求网络图片的时候需要或者是http数据请求时候需要,访问sdcard是图片缓存的需要。
----
##FinalDB使用方法:
关于finalDb的更多介绍,请点击[这里](http://my.oschina.net/yangfuhai/blog/87459)
```java
FinalDb db = FinalDb.create(this);
User user = new User(); //这里需要注意的是User对象必须有id属性,或者有通过@ID注解的属性
user.setEmail("mail@tsz.net");
user.setName("michael yang");
db.save(user);
```
----
##FinalDB OneToMany懒加载使用方法:
模型定义:
```java
public class Parent{
private int id;
@OneToMany(manyColumn = "parentId")
private OneToManyLazyLoader<Parent ,Child> children;
/*....*/
}
public class Child{
private int id;
private String text;
@ManyToOne(column = "parentId")
private Parent parent;
/*....*/
}
```
使用:
```java
List<Parent> all = db.findAll(Parent.class);
for( Parent item : all){
if(item.getChildren ().getList().size()>0)
Toast.makeText(this,item.getText() + item.getChildren().getList().get(0).getText(),Toast.LENGTH_LONG).show();
}
```
----
##FinalActivity使用方法:
* 完全注解方式就可以进行UI绑定和事件绑定
* 无需findViewById和setClickListener等
```java
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");
}
}
```
*在其他侵入式框架下使用(如ActionBarShelock)
```java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(view);
FinalActivity.initInjectedView(this);
}
```
*在Fragment中使用
```java
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View viewRoot = inflater.inflate(R.layout.map_frame, container, false);
FinalActivity.initInjectedView(this,viewRoot);
}
```
##FinalHttp使用方法:
###普通get方法
```java
FinalHttp fh = new FinalHttp();
fh.get("http://www.yangfuhai.com", new AjaxCallBack(){
@Override
public void onLoading(long count, long current) { //每1秒钟自动被回调一次
textView.setText(current+"/"+count);
}
@Override
public void onSuccess(String t) {
textView.setText(t==null?"null":t);
}
@Override
public void onStart() {
//开始http请求的时候回调
}
@Override
public void onFailure(Throwable t, String strMsg) {
//加载失败的时候回调
}
});
```
### 使用FinalHttp上传文件 或者 提交数据 到服务器(post方法)
文件上传到服务器,服务器如何接收,请查看[这里](http://www.oschina.net/question/105836_85825)
```java
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下载文件:
* 支持断点续传,随时停止下载任务 或者 开始任务
```java
FinalHttp fh = new FinalHttp();
//调用download方法开始下载
HttpHandler handler = fh.download("http://www.xxx.com/下载路径/xxx.apk", //这里是下载的路径
true,//true:断点续传 false:不断点续传(全新下载)
"/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());
}
});
//调用stop()方法停止下载
handler.stop();
```
##FinalBitmap 使用方法
加载网络图片就一行代码 fb.display(imageView,url) ,更多的display重载请看[帮助文档](https://github.com/yangfuhai/afinal/tree/master/doc)
```java
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 = FinalBitmap.create(this);//初始化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.
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
afinal-master.zip (81个子文件)
afinal-master
bin
afinal_0.5.1_bin.jar 153KB
afinal-0.3.1-bin.jar 147KB
afinal-0.2-bin.jar 97KB
afinal-0.3.2-bin.jar 147KB
afinal-0.3.31-bin.jar 154KB
afinal-0.3.3-bin.jar 149KB
afinal-0.3.32-bin.jar 154KB
afinal_0.5_bin.jar 152KB
afinal-0.2.1-bin.jar 97KB
src
net
tsz
afinal
core
AsyncTask.java 19KB
AbstractCollection.java 16KB
Deque.java 22KB
Queue.java 8KB
FileNameGenerator.java 2KB
ArrayDeque.java 28KB
Arrays.java 88KB
exception
HttpException.java 801B
ViewException.java 1024B
DbException.java 1020B
AfinalException.java 1KB
db
sqlite
DbModel.java 2KB
CursorUtils.java 4KB
ManyToOneLazyLoader.java 1KB
OneToManyLazyLoader.java 1KB
SqlInfo.java 943B
SqlBuilder.java 12KB
table
TableInfo.java 4KB
Id.java 730B
Property.java 4KB
KeyValue.java 1KB
OneToMany.java 916B
ManyToOne.java 926B
annotation
sqlite
Id.java 1KB
Property.java 1KB
OneToMany.java 1000B
ManyToOne.java 1004B
Table.java 985B
Transient.java 970B
view
EventListener.java 6KB
Select.java 1KB
ViewInject.java 1KB
http
SyncRequestHandler.java 3KB
HttpHandler.java 6KB
RetryHandler.java 3KB
PreferencesCookieStore.java 8KB
MultipartEntity.java 5KB
entityhandler
EntityCallBack.java 808B
StringEntityHandler.java 2KB
FileEntityHandler.java 2KB
AjaxParams.java 7KB
AjaxCallBack.java 2KB
FinalActivity.java 4KB
bitmap
core
BitmapDecoder.java 3KB
BytesBufferPool.java 2KB
BitmapCache.java 8KB
DiskCache.java 24KB
SoftMemoryCacheImpl.java 2KB
BitmapProcess.java 3KB
BitmapDisplayConfig.java 2KB
LruMemoryCache.java 10KB
BaseMemoryCacheImpl.java 1KB
IMemoryCache.java 907B
download
SimpleDownloader.java 4KB
Downloader.java 903B
display
SimpleDisplayer.java 3KB
Displayer.java 1KB
FinalBitmap.java 21KB
FinalDb.java 23KB
FinalHttp.java 17KB
utils
ClassUtils.java 8KB
FieldUtils.java 10KB
Utils.java 5KB
doc
afinal-0.3.2-doc.zip 453KB
afinal-0.2-change log.txt 1KB
afinal-0.3.3-doc.zip 450KB
afinal-0.3-doc.zip 447KB
afinal-0.3.1-doc.zip 450KB
afinal-0.3-change log.txt 6KB
afinal-0.3.32-doc.zip 477KB
src_version_list
afinal_0.5_src.zip 123KB
README.md 10KB
共 81 条
- 1
资源评论
- yjy1223332017-06-27很好的资源,谢谢楼主分享。
- DragonFy92015-11-12是个经典的框架
LeBron_Six
- 粉丝: 802
- 资源: 208
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功