package com.example.download;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
import android.support.v7.app.ActionBarActivity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
public class MainActivity extends ActionBarActivity {
String path = "http://ic.snssdk.com/2/article/v25/stream/?category=news_local&count=20&min_behot_time=1465198212&bd_latitude=4.9E-324&bd_longitude=4.9E-324&bd_loc_time=1465265107&loc_mode=5&user_city=%E5%8C%97%E4%BA%AC&lac=4527&cid=28883&iid=4464422609&device_id=17258390367&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SAMSUNG&os_api=19&os_version=4.4.4&uuid=353040417908000&openudid=84c1c7b192991cc6";
private ImageView imageView;
String imagePath="https://img.alicdn.com/tps/TB1ivRiKFXXXXbhXXXXXXXXXXXX-520-280.jpg";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// load();
imageView = (ImageView) findViewById(R.id.imageView);
// loadImage();
//下载json文件
loadDataXutils();
ImageLoader instance = ImageLoader.getInstance();
instance.displayImage(imagePath, imageView);
}
//ImageLoader下载图片
private void loadImage() {
ImageLoader instance = ImageLoader.getInstance();
instance.loadImage(imagePath, new ImageLoadingListener() {
@Override
public void onLoadingStarted(String arg0, View arg1) {
// TODO Auto-generated method stub
}
@Override
public void onLoadingFailed(String arg0, View arg1, FailReason arg2) {
// TODO Auto-generated method stub
}
@Override
public void onLoadingComplete(String arg0, View arg1, Bitmap arg2) {
// TODO Auto-generated method stub
// imageView.setImageBitmap(arg2);
System.out.println("下载成功");
}
@Override
public void onLoadingCancelled(String arg0, View arg1) {
// TODO Auto-generated method stub
}
});
}
protected void loadDataXutils() {
HttpUtils httpUtils = new HttpUtils();
httpUtils.download(path, getCacheDir().getPath() + "/1409aaaa.json",
new RequestCallBack<File>() {
@Override
public void onSuccess(ResponseInfo<File> arg0) {/*
File file = arg0.result;
FileInputStream fin =null;
FileOutputStream fout = null;
try{
fin = new FileInputStream(file);
fout = new FileOutputStream(getCacheDir().getPath() + "/12.json");
byte [] arr =new byte[1024];
while(true){
int temp = fin.read(arr,0,arr.length);
if(temp == -1){ //读取到末端返回-1
break;
}
fout.write(arr,0,temp);
}
}catch(Exception e){
System.out.println(e);
}
finally{ //关掉流
try{
fout.close();
fin.close();
}catch(Exception e){
System.out.println(e);
}
}
*/}
@Override
public void onFailure(HttpException arg0, String arg1) {
// TODO Auto-generated method stub
}
});
}
protected void loadData() {
HttpClient client = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(path);
try {
HttpResponse httpResponse = client.execute(httpPost);
HttpEntity entity = httpResponse.getEntity();
InputStream inputStream = entity.getContent();
// getFileStreamPath(name);
BufferedReader bufferedReader = new BufferedReader( new
InputStreamReader(inputStream));
BufferedWriter bufferedWriter = new BufferedWriter(
new OutputStreamWriter(new FileOutputStream(getCacheDir()
.getPath() + "/ccc.json", true)));
/*String s;
while ((s = bufferedReader.readLine()) != null) {
bufferedWriter.write(s);
}*/
/*byte[] buffer = new byte[10240];
int i;
while ((i = inputStream.read(buffer)) != -1) {
bufferedWriter.write(new String(buffer));
}*/
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
============================================================================================
package com.example.download;
/**
*
*/
import java.io.File;
import java.io.IOException;
import com.nostra13.universalimageloader.cache.disc.DiskCache;
import com.nostra13.universalimageloader.cache.disc.impl.LimitedAgeDiskCache;
import com.nostra13.universalimageloader.cache.disc.impl.ext.LruDiskCache;
import com.nostra13.universalimageloader.cache.disc.naming.FileNameGenerator;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.cache.memory.MemoryCache;
import com.nostra13.universalimageloader.cache.memory.impl.FIFOLimitedMemoryCache;
import com.nostra13.universalimageloader.cache.memory.impl.LargestLimitedMemoryCache;
import com.nostra13.universalimageloader.cache.memory.impl.LimitedAgeMemoryCache;
import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;
import com.nostra13.universalimageloader.cache.memory.impl.UsingFreqLimitedMemoryCache;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration.Builder;
import android.app.Application;
import android.widget.Toast;
/**
* @author WJL
*
*/
public class MyApplication extends Application {
private int maxMemory;
@Override
public void onCreate() {
super.onCreate();
System.out.println("MyApplication");
maxMemory = ((int) Runtime.getRuntime().maxMemory()) / 1024 / 1024;
System.out.println("最大内存:"+maxMemory);
Toast.makeText(this, " "+maxMemory, 0).show();
//初始ImageLoader
initImageLoader();
}
/**
*
//初始ImageLoader
*/
@SuppressWarnings("deprecation")
private void initImageLoader() {
//得到ImageLoader实例
ImageLoader imageLoader=ImageLoader.getInstance();
//得到ImageLoader配置的建筑者对象
ImageLoaderConfiguration.Builder builder=new Builder(this);
//设置磁盘(sd卡)缓存的大小限制
// builder.diskCacheSize(maxCacheSize);
try {
//设置磁盘(sd卡)缓存策略,参数一:缓存文件的路径,参数二:文件名的命名方法,有MD5,HashCode,参数三:缓存的最大内存
builder.discCache(new LruDiskCache(new File("/storage/sdcard0/cache/"), new Md5FileNameGenerator(), 2*1024*1204));
//设置磁盘(sd卡)缓存策略,限制缓存时间;参数一:缓存文件的路径,参数二:缓存文件的存活时间,系统当前时间-文件的最新修改时间 > maxAge
// builder.discCache(new LimitedAgeDiskCache(cacheDir, maxAge) );
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//设置内存缓存的大小限制,默认是最大内存的1/8
builder.memoryCacheSize(maxMemory/8);
//设置内存缓存策略 根据先进先出的原则上删除多余对象 LinkedList 参数一:设置的缓存内存大小
// builder.memoryCache(new FIFOLimitedMemoryCache(sizeLimit));
//设置内存缓存策略 先删除占内存最大的图片 HashMap 参数一:设置的缓存内存大小
// builder.memoryCache(new LargestLimitedMemoryCache(sizeLimit));
// 设置内存缓存策略 Lru算法 LinkedHashMap 最大的缓存大小
// builder.memoryCache(new LruMemoryCache(maxSize))
//设置内存缓存策略 最少被用到的对象会被删除 HashMap 参数一:设置的缓存内存大小
// builder.memoryCache(new UsingFreqLimitedMemoryCache(sizeLimit))
//设置内存缓存策略 最早被添加的对象会被删除 HashMap 参数一:MemoryCache对象 参数二:缓存失效的最大时间
// builder.memoryCache(new LimitedAgeMemoryCache(cache, maxAge));
//初始化imageLoader配置
imageLoader.init(builder.build());
/*
使用默认的缓存策略
ImageLoader imageLoader2=ImageLoader.getInstance();
ImageLoaderConfiguration.Builder configuration=new ImageLoaderConfiguration.Builder(this);
imageLoader2.init(configuration.build());
*/
}
}
=================================
导包
universal-image-loader-1.9.5.jar
xUtils-2.6.14.jar