图片下载和json下载(sd卡)
2016-07-05 19:35
369 查看
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
相关文章推荐
- js解析xml文件,实现省市区三级联动
- Three.JS(1)直线
- OpenLayers 2 源码解读(2) Class.js
- ExtJs5.1.1使用中问题集锦
- Javascript 面向对象编程封装问题
- js中clearInterval无效,以及setInterval中断后重新执行
- js中json例子
- 正则表达式的部分替换 $1~$99
- javascript 创建对象的几种方式
- 总结javascript面向对象编程7种对象模型
- js中用prototype实现继承
- javascript中parseInt函数的用法
- [Effective JavaScript 笔记]第57条:使用结构类型设计灵活的接口
- js找出数组 arr 中重复出现过的元素
- 复选框的全选和全部选
- javaScript--04 JavaScript基础&DOM 上
- 用html5的canvas和JavaScript创建一个绘图程序
- 分享我对JS插件开发的一些感想和心得
- 面向对象的JavaScript-009-闭包
- 空间数据类型转化——geometry转geoJson转geoShape