標籤: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;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.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>() {@Overridepublic void onSuccess(File t) {// TODO Auto-generated method stubtextView.setText("File down Success");}});} catch (Exception e) {// TODO Auto-generated catch blocke.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>() {@Overridepublic void onSuccess(Object t) {// TODO Auto-generated method stubtextView.setText((t == null) ? "null" : (String) t);}});} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.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>() {@Overridepublic void onSuccess(Object t) {// TODO Auto-generated method stubif (textView == null)Toast.makeText(getApplicationContext(),"(textView==null)", 2000).show();elsetextView.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>() {@Overridepublic void onSuccess(Object t) {// TODO Auto-generated method stubtextView.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 {@Overrideprotected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubboolean 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 blocke.printStackTrace();}// System.out.println("-------------value:"+// item.getString());// System.out.println("-------------inputSream:"+// item.getInputStream());}} catch (FileUploadException e) {e.printStackTrace();}}response.getWriter().print("okok!");}}
【Android實戰】Afinal架構的使用大全案例