Afinal加载网络图片及下载文件使用方法
2014-05-08 01:21
671 查看
Afinal快速开发框架使用起来非常方便,下面将讲解如何利用Afinal加载网络图片及下载文件:
先看效果图:
注意:使用Afinal前需添加Afinal的jar,可以在这里下载:http://download.csdn.net/detail/baiyuliang2013/7313587
其中包括了Afinal的源码和jar,使用时只需添加jar包即可,在学习阶段也可以直接添加源码到你的项目中,可以更深入的学习Afinal。
看代码:
activit_main.xml:
MainActivity.java:
分析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" />
先看效果图:
注意:使用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" />
相关文章推荐
- Afinal加载网络图片及下载文件使用方法
- Afinal加载网络图片及下载文件使用方法
- 使用urllib库的urlretrieve()方法下载网络文件到本地
- 在android中使用AsyncTask从网络中下载图片,但是调用了execute方法后,最后不执行onPostExcute方法
- Android 使用Glide加载网络图片等比例缩放的实现方法
- 快速开发框架Afinal的使用(数据库操作,HTTP请求,网络图片加载,控件绑定)
- Android开发实现加载网络图片并下载至本地SdCard的方法
- 网络图片加载的第三方类:EGOImageView的使用方法及注意事项
- Afinal载入网络图片及下载文件用法
- 快速开发框架Afinal的使用(数据库操作,HTTP请求,网络图片加载,控件绑定)
- java网络编程____使用url下载远程文件(图片,软件等)
- 简单实现的自定义圆环进度条,可使用于文件的上传下载图片加载等地方.
- 强大的开源控件AFinal在图片加载和文件下载的应用
- Android - HttpURLConnection下载网络文件,加载网络图片
- Goole官方网络框架-Volley的使用解析Json以及加载网络图片方法
- Google官方网络框架-Volley的使用解析Json以及加载网络图片方法
- iOS UI 15 网络编程下载 图片 音乐 大文件 视频 get/ post方法
- ServerU FTP 9.1.0.5完美破解版 使用教程 学校局域网上课上传下载文件用--图片来自网络
- KJFrameForAndroid网络图片加载使用方法
- Android 使用decodeFile方法加载手机磁盘中的图片文件