【Android实战】Afinal框架的使用大全案例

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<File> handler = finalHttp.download(
					"http://192.168.191.1:8080/androidtest/a.doc",
					Environment.getExternalStorageDirectory() + "/im.doc", true,
					new AjaxCallBack<File>() {
						@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<Object>() {
						@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<Object>() {

					@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<Object>() {
					@Override
					public void onSuccess(Object t) {
						// TODO Auto-generated method stub
						textView.setText((t == null) ? "null" : (String) t);
					}
				});

	}

	public void dbClick(View v) {//创建数据库 在bean前加@Table(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<FileItem> 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!");
	}
}
时间: 2024-10-09 23:00:08

【Android实战】Afinal框架的使用大全案例的相关文章

在Android中afinal框架下實現sqlite數據庫版本升級的辦法

public abstract void onUpgrade(SQLiteDatabase db,int oldVersion,int new Version) 這個方法在實現時需要重寫. public abstract void onUpgrade(SQLiteDatabase db,int oldVersion,int new Version) 這個方法在實現時需要重寫. onUpgrade方法會在數據庫需要升級的時候調用.可以用來增刪表或者其他任何操作.如果你想添加新的列你可以使用ALTE

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

一.问题描写叙述 在之前的系列文章中,我们使用了Volley和Xutil框架实现图片的缓存载入,接下来我们再介绍一下afinal 框架的使用. Afinal 是一个android的http框架.sqlite orm 和 ioc 框架.使其更加简单易用,Afinal的宗旨是简洁,高速.约定配置的方式之后,尽量一行代码完毕全部事情,代码入侵性小,在三者中比較推荐.在这里我们主要使用http框架的 FinalHttp和FinalBitmap组件实现网络图片的载入 案例介绍--实现图片新闻浏览: 二.案

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

一.问题描述 在之前的系列文章中,我们使用了Volley和Xutil框架实现图片的缓存加载(查看系列文章:http://www.cnblogs.com/jerehedu/p/4607599.html#pltpjz),接下来我们再介绍一下afinal 框架的使用. Afinal 是一个android的http框架.sqlite orm 和 ioc 框架.使其更加简单易用,Afinal的宗旨是简洁,快速.约定配置的方式之后,尽量一行代码完成所有事情,代码入侵性小,在三者中比较推荐.在这里我们主要使用

Android Afinal框架

项目如图: 本文参考网络! Afinal是一个开源的android的orm和ioc应用开发框架,其特点是小巧灵活,代码入侵量少.在android应用开发中,通过 Afinal的ioc框架,诸如ui绑定,事件绑定,通过注解可以自动绑定.通过Afinal的orm框架,无需任何配置信息,一行代码就可以对 android的sqlite数据库进行增删改查操作.同时,Afinal内嵌了finalHttp等简单易用的工具,可以轻松的对http就行求情的操 作.Afinal的宗旨是简洁,快速.约定大于配置的方式

Android Afinal框架学习(一) FinalDb 数据库操作

框架地址:https://github.com/yangfuhai/afinal 对应源码: net.tsz.afinal.annotation.sqlite.* net.tsz.afinal.db.sqlite.* net.tsz.afinal.db.table.* net.tsz.afinal.utils.ClassUtils.net.tsz.afinal.utils.FieldUtils FinalDb 建库 FinalDb db = FinalDb.create(context, "my

Android Afinal框架学习(二) FinalActivity 一个IOC框架

框架地址:https://github.com/yangfuhai/afinal 对应的源码: net.tsz.afinal.annotation.view.* FinalActivity FinalActivity是一个基础类,结合注解实现了,依赖注入(view的资源id,常用的监听器), 利用set方式注入 完全注解方式就可以进行UI绑定和事件绑定,无需findViewById和set event Listener 这个过程:initInjectedView>findViewById.set

android开源项目框架大全:《IT蓝豹》

android开源项目框架大全: 1.多页切换TabHost9 高仿网易云音乐客户端的Home页面切换Tabhost 高仿网易云音乐客户端的Home页面切换Tabhost,并且三角形是透明的,实现方式,自定义AnimTabsView继承 RelativeLayout 里面对当前选中的item 处理 三角形变成透明效果,即在onDraw 里面对三角形图片经行透明度处理,AnimTabsView提供 setOnAnimTabsItemViewChangeListener方法的onChange()用来

60.Android通用流行框架大全

转载:https://segmentfault.com/a/1190000005073746 Android通用流行框架大全 1. 缓存 名称 描述 DiskLruCache Java实现基于LRU的磁盘缓存 2.图片加载 名称 描述 Android Universal Image Loader 一个强大的加载,缓存,展示图片的库 Picasso 一个强大的图片下载与缓存的库 Fresco 一个用于管理图像和他们使用的内存的库 Glide 一个图片加载和缓存的库 3. 图片处理 名称 描述 Pi

android开发从零开始 -----Android通用流行框架大全

好东西值得分享 ,这是网络上总结的一些开源的东西直接就拿过来了  .... Android通用流行框架大全 先把这张图放在这 ,先来谈一谈项目结构 .我喜欢将东西按模块来划分: 都知道module .它的应用非常方便 .对于一个项目刚开始开发时要考虑这个项目是由那些部分组成 lib_base  :包含各种Base基类 .如 BaseActivty  BaseFragment  BaseApplication   这是一些项目的开始基础. lib_ui:各种自定义UI ,或第三方ui .现在and