Afinal这个超级强大框架,可以满足下面功能,并且基本覆盖了手机应用中的核心部分

数据库(几句话就能实现增删改查)

注解 (省去findById和setOnclickListener)

网络通信(get请求 / post请求 / 文件上传 / 文件下载)

图片获取(一句话解决)

下面是实现的例子,并且放上服务器的代码:

public class MainAct extends FinalActivity {

@ViewInject(id = R.id.aBt, click = "dbClick")//实现注解

Button abButton;

@ViewInject(id = R.id.getBt, click = "getClick")

Button getButton;

@ViewInject(id = R.id.postBt, click = "postClick")

Button postButton;

@ViewInject(id = R.id.tv)

TextView textView;

@ViewInject(id = R.id.fileBt, click = "fileClick")

Button fileButton;

@ViewInject(id = R.id.fileBt2, click = "fileClick2")

Button fileButton2;

@ViewInject(id = R.id.picBt, click = "picClick")

Button picButton;

@ViewInject(id = R.id.img)

ImageView imageView;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.afinallay);

}

public void picClick(View v) {

Toast.makeText(getApplicationContext(), "in", 2000).show();

FinalBitmap finalBitmap = FinalBitmap.create(this);

finalBitmap

.display(

imageView,

"http://e.hiphotos.baidu.com/image/pic/item/b999a9014c086e06d1925b1300087bf40ad1cbb4.jpg");

}

public void fileClick2(View v) {//文件下载

FinalHttp finalHttp = new FinalHttp();

AjaxParams ajaxParams = new AjaxParams();

try {

HttpHandler handler = finalHttp.download(

"http://192.168.191.1:8080/androidtest/a.doc",

Environment.getExternalStorageDirectory() + "/im.doc", true,

new AjaxCallBack() {

@Override

public void onSuccess(File t) {

// TODO Auto-generated method stub

textView.setText("File down Success");

}

});

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public void fileClick(View v) {//文件上传

FinalHttp finalHttp = new FinalHttp();

AjaxParams ajaxParams = new AjaxParams();

try {

ajaxParams.put("file",

new File(Environment.getExternalStorageDirectory()

+ "/n.jpg"));

finalHttp.post("http://192.168.191.1:8080/androidtest/test3",

ajaxParams, new AjaxCallBack() {

@Override

public void onSuccess(Object t) {

// TODO Auto-generated method stub

textView.setText((t == null) ? "null" : (String) t);

}

});

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public void getClick(View v) { //get请求

FinalHttp finalHttp = new FinalHttp();

AjaxParams params = new AjaxParams();

params.put("id", "1");

params.put("name", "duerGet");

params.put("age", "521");

finalHttp.get("http://192.168.191.1:8080/androidtest/test2", params,

new AjaxCallBack() {

@Override

public void onSuccess(Object t) {

// TODO Auto-generated method stub

if (textView == null)

Toast.makeText(getApplicationContext(),

"(textView==null)", 2000).show();

else

textView.setText((t == null) ? "null" : (String) t);

}

});

}

public void postClick(View v) { //post请求

FinalHttp finalHttp = new FinalHttp();

AjaxParams params = new AjaxParams();

params.put("name", "duerPost");

params.put("pass", "125");

finalHttp.post("http://192.168.191.1:8080/androidtest/test2", params,

new AjaxCallBack() {

@Override

public void onSuccess(Object t) {

// TODO Auto-generated method stub

textView.setText((t == null) ? "null" : (String) t);

}

});

}

public void dbClick(View v) {//创建数据库 [email protected](name="tablename")实现自定义表名

Toast.makeText(getApplicationContext(), "in", 2000).show();

FinalDb finalDb = FinalDb.create(this, "UserDB");

UserBean bean1 = new UserBean();

bean1.setAge("12");

bean1.setName("duzi");

finalDb.save(bean1);

UserBean bean2 = new UserBean();

bean2.setAge("12");

bean2.setName("duzi");

finalDb.save(bean2);

}

}

服务器上传接收代码:

public class FileUpload extends HttpServlet {

@Override

protected void doPost(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

boolean isUpload = ServletFileUpload.isMultipartContent(request);

if (isUpload) {

DiskFileItemFactory factory = new DiskFileItemFactory();

factory.setSizeThreshold(10);

factory.setRepository(new File("E:\\upload"));

ServletFileUpload upload = new ServletFileUpload(factory);

upload.setSizeMax(10);

ServletFileUpload sfu = new ServletFileUpload(factory);

try {

List DiskFileItems = sfu.parseRequest(request);

for (FileItem item : DiskFileItems) {

System.out.println("-------------key:"

+ item.getFieldName());

System.out.println(item.getName());

File myFile=new File("E:\\upload\\"+item.getName());

try {

item.write(myFile);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// System.out.println("-------------value:"+

// item.getString());

// System.out.println("-------------inputSream:"+

// item.getInputStream());

}

} catch (FileUploadException e) {

e.printStackTrace();

}

}

response.getWriter().print("okok!");

}

}

原文:http://blog.csdn.net/scboyhj__/article/details/43890923

android afinal 框架 finalhttp,【Android实战】Afinal框架的使用大全案例相关推荐

  1. Android批量图片载入经典系列——afinal框架实现图片的异步缓存载入

    一.问题描写叙述 在之前的系列文章中,我们使用了Volley和Xutil框架实现图片的缓存载入,接下来我们再介绍一下afinal 框架的使用. Afinal 是一个android的http框架.sql ...

  2. 常见Android开源框架使用笔记之——afinal框架

    从今天开始我们来学习框架思维,努力成为一个架构师,学习的开始先从别人的代码中获取这种思维,看看大牛们是怎么实现的.在分析代码的过程的同时也是对知识的巩固和对自己分析能力和知识层面的提高.本篇参考于网络 ...

  3. afinal框架之Android视频下载,指定路径

    afinal框架作为最受欢迎的安卓框架之一,它的功能也是尤其多的,主要分为下面4大模块: 1.FinalDB模块:android中的orm框架,一行代码就可以进行增删改查.支持一对多,多对一等查询. ...

  4. android+final+框架,使用android快速开发框架afinal 开发android应用程序

    首先介绍下afinal开发框架: 1.afinal是android中一个设计小巧的android应用开发框架 2.里面包含了一个orm框架,无需配置任何文件可以对android的sqlite进行增删改 ...

  5. Android网络框架Volley项目实战-刘桂林-专题视频课程

    Android网络框架Volley项目实战-5257人已学习 课程介绍         使用Google 2013 I/O大会上发布的Volley请求框架做几个实战项目,归属地查询,QQ测试吉凶,天气 ...

  6. GitHub上受欢迎的Android UI Library-项目开发实战篇:带各类框架链接地址详细解说及使用方法

    这是我列举的下列所有框架github地址:https : //github.com/opendigg/awesome-github-android-ui 抽屉菜单类的框架 MaterialDrawer ...

  7. 开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发...

    [原][开源框架]Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位... 时间 2015-01-05 10:08:18 我是程序猿,我为自己代言 原文   http ...

  8. Android 网络框架_常用的网络框架

    看了张哥(stormzhang)的博客之后,深有感触,又让我感慨了一番,而且发现张哥的博客英文跟汉字之间是有空格的,数字跟汉字之间也有空格,看起来很舒服很美观,张哥真的是把每一个细节都做的很好,所以身 ...

  9. 常见Android开源框架使用笔记之——xUtils框架

    xUtils框架简介: * xUtils 包含了很多实用的android工具. * xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且 ...

  10. Android Swift iOS开发:语言与框架对比

    转载自:http://www.infoq.com/cn/articles/from-android-to-swift-ios?utm_campaign=rightbar_v2&utm_sour ...

最新文章

  1. ajax请求的步骤,ajax请求的五个步骤
  2. 百度输入法发布AI版本10.0,重磅推出“AI助聊”功能
  3. ST公司STM32F4与STM32F1的区别
  4. 多种特征提取算法比较汇总
  5. 趣学python3(32)-enumerate,zip
  6. C/C++注册表【2】打开,创建,删除
  7. Unity3D的LightProbe动态光探头用法介绍
  8. JDK配置与防火墙设置
  9. SqlServer规则
  10. 42岁老码农找工作记录
  11. 【Pytorch】保存神经网络模型
  12. vue父子组件的传值
  13. 【动弹有奖】——OSC登录并发送动弹分析(附python源码)
  14. Winserver普通域用户账户无权限启动停止系统服务(启动停止按钮是灰色)
  15. Spring入门笔记总结
  16. Ubuntu如何清理系统垃圾
  17. java跳转_java后端实现页面跳转的方法
  18. 利用输入法输入汉字,如何统计字数
  19. BUUCTF-Crypto-Quoted-printable题解
  20. 关于Keil debug 出现cannot access target shutting down debug session 错误提示

热门文章

  1. android mat分析,android内存泄露MAT分析心得与注意点
  2. python的三个基本数字类型_Python基础学习--三 基本数据类型
  3. MySQL(7)-----常用约束
  4. 大数据学习笔记3 - 并行编程模型MapReduce
  5. git合并分支,发布代码
  6. 第一章: 当前主流的小型嵌入式 GUI
  7. 转Java 开发环境配置
  8. android中一个应用程序启动另外一个应用程序,并传递数据。
  9. css 主页模版 搜索技巧
  10. [贴图]博客园T恤男士版