- 浏览: 931172 次
- 性别:
- 来自: 魔都
文章分类
- 全部博客 (745)
- MultiThread (19)
- My Plan (118)
- JavaBasic (61)
- MyInterview (104)
- InternetTechnique (5)
- ProjectConclusion (1)
- Maven (5)
- MogoDb (5)
- Hadoop (11)
- Memcached (6)
- TechniqueCollect (1)
- Ibaits (1)
- Android (34)
- ItLife (40)
- Tree (2)
- ProjectArchitect (7)
- Open Source (3)
- liunx (5)
- socket (8)
- Spring (27)
- DesginPattern (35)
- WebBasic (13)
- English (13)
- structs (1)
- structs2 (2)
- Oracle (17)
- Hibernate (2)
- JavaScript (4)
- Jdbc (1)
- Jvm (15)
- Ibatis (1)
- DataStructures (13)
- Https/Socket/Tcp/Ip (3)
- Linux (4)
- Webservice (7)
- Io (2)
- Svn (1)
- Css (1)
- Ajax (1)
- ExtJs (1)
- UML (2)
- DataBase (6)
- BankTechnique (3)
- SpringMvc (3)
- Nio (3)
- Load Balancing/Cluster (3)
- Tools (1)
- javaPerformanceOptimization (8)
- Lucene(SEO) (1)
- My Think (80)
- NodeJs (1)
- Quartz (1)
- Distributed-java (1)
- MySql (7)
- Project (4)
- junit (4)
- framework (1)
- enCache (1)
- git (2)
- SCJP (1)
- sd (1)
最新评论
-
lkjxshi:
你都这水平了还考这个证干嘛
SCJP 认证考试指南 -
钟逸华:
问的真多
百度java开发面试题(转) -
zuimeitulip:
觉得我就是这样的,从小阅读量就很少,导致现在的读的速度非常慢, ...
让读书成为一种习惯 -
DDT_123456:
我觉得你是不符合要求。问你hashmap的那个问题,你那样回答 ...
阿里面试2(转) -
jingjing0907:
刚刚写了很多读过此博客的感受,竟然没有发上去,以为我注册账号还 ...
让读书成为一种习惯
package com.soarsky.util;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.ref.SoftReference;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.Message;
public class AsyncImageLoader {
private HashMap<String, SoftReference<Drawable>> imageCache;
public AsyncImageLoader() {
imageCache = new HashMap<String, SoftReference<Drawable>>();
}
/**
* 获取远程图片方法
* @param imageUrl 图片远程路径 如:http://hiphotos.baidu.com/zz%B7%E7%B2%D0/pic/item/f8e68dfc5c15f6476c22ebb0.jpg
* @param imageCallback 回调方法
* @return drawable 图片
*/
public Drawable loadDrawable(final String imageUrl, final ImageCallback imageCallback) {
if (imageCache.containsKey(imageUrl)) {
SoftReference<Drawable> softReference = imageCache.get(imageUrl);
Drawable drawable = softReference.get();
//缓存中存在,则使用缓存中的图片
if (drawable != null) {
return drawable;
}
}
//handler调用 获取图片方法
final Handler handler = new Handler() {
public void handleMessage(Message message) {
imageCallback.imageLoaded((Drawable) message.obj, imageUrl);
}
};
//建立线程获取图片
new Thread() {
@Override
public void run() {
Drawable drawable = loadImageFromUrl(imageUrl);
//如果获取图片不为空,则存入缓存
if(drawable != null){
imageCache.put(imageUrl, new SoftReference<Drawable>(drawable));
}
Message message = handler.obtainMessage(0, drawable);
handler.sendMessage(message);
}
}.start();
return null;
}
/**
* 获取图片方法,添了了线程同步
* @param url 图片路径
* @return
*/
public synchronized static Drawable loadImageFromUrl(String url) {
Bitmap bitmap = null;
URL m = null;
InputStream i = null;
Drawable d = null;
try {
m = new URL(url);
i = (InputStream) m.getContent();
} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if(m != null) {
//图片大小大于300k时显示为原图1/4
if(m.getFile().length() > 300 * 1024){
BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
//bitmapOptions.inJustDecodeBounds = true;
//设置图片长宽为原图的1/2
bitmapOptions.inSampleSize = 2;
bitmap = BitmapFactory.decodeStream(i, null , bitmapOptions);
}else{
bitmap = BitmapFactory.decodeStream(i);
}
}
if(i != null){
try {
i.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(bitmap != null) {
d = new BitmapDrawable(bitmap);
}
return d;
}
public interface ImageCallback {
public void imageLoaded(Drawable imageDrawable, String imageUrl);
}
//待用方法
public byte[] readInputStream(InputStream is) {
ByteArrayOutputStream baos=new ByteArrayOutputStream();
byte[] buffer=new byte[1024];
int length=-1;
try {
while((length=is.read(buffer))!=-1){
baos.write(buffer, 0, length);
}
baos.flush();
} catch (IOException e) {
e.printStackTrace();
}
byte[] data=baos.toByteArray();
try {
is.close();
baos.close();
} catch (IOException e) {
e.printStackTrace();
}
return data;
}
}
发表评论
-
怎样成为一名Android开发者
2012-04-14 21:49 1192导读:从事Android开发给我带来的收入甚至远没有达到iPh ... -
Android基础概念
2012-04-14 15:21 896Android操作系统 Android是一个基于Linux ... -
一个帖子掌握android所有控件、ProgressBar 、Android 动画效果、SQLite、四大组件、Android多媒体 [复制链接]
2012-03-29 20:31 1619文章链接:http://www.apkbus. ... -
分享45个android实例源码,很好很强大.收藏吧!!!
2012-03-29 20:23 1052文章链接:http://blog.sina.com.cn/s/ ... -
android开发文章
2012-03-26 13:03 1022推荐momo雨松的一些列android开发文章,其中涉及很多游 ... -
如何选好Android开发书籍和教程[总结]
2012-03-24 23:18 2265本文汇总整理了时下关 ... -
安卓巴士Android开发神贴整理
2012-03-24 23:17 87310个经典的Android开源应用项目 http://www. ... -
Android核心分析28篇,强烈推荐android初学者,android进阶者看看这个系列教程
2012-03-23 09:40 984文章链接:http://www.apkbus.com/andr ... -
xx项目交互数据流程
2012-03-13 23:49 964xx项目交互数据流程 UI触发事件,发送广播到业务逻辑处理 ... -
Handler: 主线程如何通知子线程
2012-03-10 00:50 1122Handler: 主线程如何通知子线程 分类: Android ... -
有关Android线程的学习
2012-03-12 11:33 910有关Android线程的学习 20 ... -
安卓巴士精选Android开发教程
2012-03-09 20:55 1151自从我实习以后的一点感受:写得非常棒,对于应届毕业生,正在念书 ... -
android帖子
2012-03-08 19:37 1046一个demo让你掌握Android的各种Service: ht ... -
多线程断点上传下载类
2012-03-04 20:54 1290public class MulThreadDownload ... -
详解Android源码的编译
2012-02-27 21:21 1092详解Android源码的编译 ... -
Intent在Android中的几种用法
2012-02-26 18:34 1106如果是从BroadcastReceiver ... -
Android 写出高质量的代码
2012-02-20 09:31 1116导读:相信大家都看过google的源码吧,每次看完我都感叹为什 ... -
你了解Activity多少?
2012-02-20 09:30 884一 Activity的生命周期 ... -
Android高手应该精通哪些内容?
2012-02-16 16:17 841很多Android开发者已经度过了初级、中级,如何成为一个An ... -
70道经典Android题加答案--重要知识点几乎都涉及到了
2012-02-13 14:11 141670道经典Android题加答案--重要知识点几乎都涉及到了 ...
相关推荐
网络获取图片工具类AsyncImageLoader
保存网络图片,将获取的字节数组保存为文件写入硬盘,获取远程http地址视图片,读取流
java通过url获取网络位置上的文件流,自己封装的工具类
图片工具类 屏幕工具类 存储工具类 正则校验工具类 String工具类 Toast工具类 自定义圆形imageView (CircleImageView) 自定义loadingDialog 自定义带旋转动画的loadingDialog 2018.10.27 修改Toast工具...
DeviceStatusUtils 手机状态工具类 主要包括网络、蓝牙、屏幕亮度、飞行模式、音量等 DigestUtils DigestUtils FileUtils 文件操作 HanziToPinyin 拼音汉字处理 IOUtils IOUtils MD5 MD5 MiscUtils 设备信息的获取 ...
史上最全的Java工具类,包括http访问,发送短信验证码,拼音转孩子,android图片压缩,android上传下载文件,android访问网络,MD5,json解析和生成json串,编码,SDcard工具类,android信息获取,mysql连接工具,sql...
异步下载图片 非常好用的一款第三方工具类
二次封装了volley,关于加载图片并缓存,获取网络请求,并集成了xml转换
压缩包包括如下内容 1.AppInfoUtils.java 应用信息相关...5.ImageUtils.java 图片相关 6.NetworkUtil.java 网络相关 7.NumberVerifyUtil.java 数字相关 8.ScreenWindowUtils.java 屏幕项目 9.Validator.java 正则表验证
对于日期,随机字符,时间差计算,拼音转换,金额计算转换,网络图片保存,身份证出生日期获取,字符串首字母获取,年月加减计算等
图片工具类,可用于Bitmap, byte array, Drawable之间进行转换以及图片缩放,目前功能薄弱,后面会进行增强。如: bitmapToDrawable(Bitmap b) bimap转换为drawable drawableToBitmap(Drawable d) drawable转换为...
为此,我们汇集了一系列Python爬虫工具,旨在帮助您更高效地获取、处理和分析网络数据。 内容概览 这个压缩包集合包括了从单一用途到多功能的各种Python爬虫工具。无论您是需要快速抓取特定网站的数据,还是希望...
网络操作工具类(ToolNetwork.java),获取网络信息、更改切换网络等相关操作 日期操作工具类(ToolDateTime.java),获取日期、日期加减、格式化日期、日期转换等操作 XML操作工具类(ToolXml.java),基于DOM/...
网络操作工具类(ToolNetwork.java),获取网络信息、更改切换网络等相关操作 日期操作工具类(ToolDateTime.java),获取日期、日期加减、格式化日期、日期转换等操作 XML操作工具类(ToolXml.java),基于DOM/...
获取网络图片返回byte数组 向指定 URL 发送POST方法的请求 向指定URL发送POST方法的请求(application/json格式发送数据) 向指定URL发送POST方法的请求(application/xml格式发送数据) 上传图片
网络操作工具类(ToolNetwork.java),获取网络信息、更改切换网络等相关操作 日期操作工具类(ToolDateTime.java),获取日期、日期加减、格式化日期、日期转换等操作 XML操作工具类(ToolXml.java),基于DOM/...
网络操作工具类(ToolNetwork.java),获取网络信息、更改切换网络等相关操作 日期操作工具类(ToolDateTime.java),获取日期、日期加减、格式化日期、日期转换等操作 XML操作工具类(ToolXml.java),基于DOM/...
博文《使用EasyPOI导出Excel模板数据(含图片)》所含源码,应众多网友要求放出来。包含测试类、导出工具类、图像工具类、Excel模板
eGet用于对指定的网站, 或者任意网页地址进行分析, 并批量下载需要的文件(如图片, MP3,视频文件等等). eGet的下载速度非常快,并且支持...访问产品主页获取更多信息: http://www.bainsoft.com/cn/database/eGet.html
前三步和人脸检测几乎一样 人脸检测地址 ...第四步 Token和工具类准备完毕,写图片识别代码 识别图片 PictureRecognition类 import java.net.URLEncoder; /** * 通用物体和场景识别 */ public class Pictu