Afinal高速开发框架使用起来很方便。以下将解说怎样利用Afinal载入网络图片及下载文件:

先看效果图:

注意:使用Afinal前需加入Afinal的jar,能够在这里下载:http://download.csdn.net/detail/baiyuliang2013/7313587

当中包含了Afinal的源代码和jar,使用时仅仅需加入jar包就可以。在学习阶段也能够直接加入源代码到你的项目中。能够更深入的学习Afinal。

看代码:

activit_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" > <Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="下载" /> <TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/btn"
android:text="进度:" /> <ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_centerHorizontal="true"
android:src="@drawable/ic_launcher"
/> </RelativeLayout>

MainActivity.java:

package com.example.afinaltest;

import java.io.File;

import net.tsz.afinal.*;
import net.tsz.afinal.annotation.view.ViewInject;
import net.tsz.afinal.http.AjaxCallBack;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast; public class MainActivity extends FinalActivity { @ViewInject(id=R.id.img) ImageView img;
TextView textView;
Button btn;
FinalBitmap finalBitMap=null;
FinalHttp fh; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); textView=(TextView) findViewById(R.id.text);
btn=(Button) findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String apkPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/qq.apk";
File f = new File(apkPath);
if (f.exists()) {
f.delete();
}
fh=new FinalHttp();
fh.download("http://gdown.baidu.com/data/wisegame/4ae6d2d7378e6cdf/QQ_122.apk",apkPath,
new AjaxCallBack<File>() {
@Override
public void onStart() {
super.onStart();
Toast.makeText(getApplicationContext(), "開始下载", Toast.LENGTH_SHORT).show();
}
@SuppressLint("DefaultLocale")
@Override
public void onLoading(long count, long current) {
super.onLoading(count, current);
int progress=0;
if (current != count && current != 0) {
progress = (int) (current / (float) count * 100);
} else {
progress = 100;
}
textView.setText("进度:"+progress+"%");
}
@Override
public void onSuccess(File t) {
super.onSuccess(t);
Toast.makeText(getApplicationContext(), "下载完毕", Toast.LENGTH_SHORT).show();
textView.setText(t==null?"null":t.getAbsoluteFile().toString());
}
@Override
public void onFailure(Throwable t, int errorNo,String strMsg) {
super.onFailure(t, errorNo, strMsg);
Toast.makeText(getApplicationContext(), "下载失败", Toast.LENGTH_SHORT).show();
}
});
}
}); finalBitMap=FinalBitmap.create(MainActivity.this); finalBitMap.display(img, "http://meme.zenfs.com/u/a33312d2e9eaa443321f4ec716fe795a23c27c89.jpeg"); } }

能够看到。MainActivity是继承了FianlActivity,因此在初始化控件的时候。能够不用findViewById了,直接用注解的方式如:@ViewInject(id=R.id.img) ImageView img; @ViewInject(id=R.id.btn,click="onclick") Button btn;click事件仅仅需写一个相应click="onclick"的方法如:public void onclick(){}就可以。

分析FinallyBitmap源代码可知:初始化时需调用create方法。然后再调用display(imgView,url);就可以载入网络图片。也能够设置在载入完毕前显示的图片等等,这个看下源代码便知。下载文件需用FinalHttp,并调用download方法,该例中使用download(String,String,AjaxCallBack<File>);方法。第一个參数是将要下载的文件路径。第二个參数为本地文件保存路径,第三个是一个回调函数,每隔一秒会调用一次,能够方便的查看文件下载进度以及文件下载情况如成功失败,下载完毕等,需重写onStart,onLoading,onSuccess,onFailure等方法。

最后不要忘了在AndroidManifest.xml中加入网络訪问权限和存储卡读取及写入权限:

<uses-permission android:name="android.permission.INTERNET" />

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

最新文章

  1. Python3实现TCP端口扫描
  2. 点击checkbox,触发事件
  3. Oracle忽略hint的几种情形
  4. WPF 数据绑定
  5. Auto Layout 在iOS屏幕适配中的使用
  6. http://www.linuxidc.com/Linux/2007-09/7399.htm
  7. 三种纯CSS实现三角形的方法
  8. selenium 学习笔记 ---新手学习记录(3) 问题总结(java)
  9. ssh免密码和ssh-copy-id命令
  10. 解决初次使用webpack+antd-mobile时css不生效的问题
  11. 阿里巴巴Java开发规约插件p3c详细教程及使用感受
  12. 学习ActiveMQ(四):spring与ActiveMQ整合
  13. (转)每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)
  14. 在CentOS7上安装Zabbix3.0
  15. Bootstrap上传图片
  16. The STM32F746G-DISCO discovery board -- MBED
  17. 关于Suppressing notification from package com.xxx.xxx by user request.的异常
  18. Map / HashMap 获取Key值的方法
  19. webApp 页面适配布局
  20. 【BZOJ】1101: [POI2007]Zap(莫比乌斯+分块)

热门文章

  1. JS 数字 、中文、 英文、判断
  2. Eclipse怎么显示行号,定位某行
  3. siwft初学(一)
  4. SQL Server,Access数据库查询易混点和C#中parameter指定参数长度的优缺点
  5. Golang在Linux环境下的POSIX风格socket编程
  6. hdu 4444 Walk (离散化+建图+bfs+三维判重 好题)
  7. [Windows Phone] 地图控制项的经纬度
  8. 基于最简单的FFmpeg采样读取内存读写:存储转
  9. python 凸包(经纬度) + 面积[近似]
  10. facade pattern