- 浏览: 235859 次
- 性别:
- 来自: 内蒙古
文章分类
- 全部博客 (236)
- Android 功能实现 (31)
- sql数据库的学习 (8)
- Android 美化界面 (2)
- Android 优化 (1)
- Ruby on Rails 方面 (45)
- git 方面的学习 (1)
- ruby 编程的琢磨 (13)
- linux下工具软件 (13)
- 操作系统的学习 (40)
- 非技术 (13)
- 网站开发 (18)
- js 学习笔记 (19)
- css学习 (5)
- 回顾总结 (2)
- Delphi 学习 (2)
- C 语言学习笔记 (1)
- 数据结构 (1)
- node js 学习 (6)
- 设计模式 (2)
- mongdb 学习笔记 (0)
- 软件服务 (3)
- osx系统 (4)
- 搜索引擎 (1)
- 测试工具 (1)
- Aliyun (1)
- 前端JS (1)
- python学习 (0)
- iOS系统 (1)
- 分布式锁 (1)
- 开发工具 (0)
- java代码 (2)
- java (0)
最新评论
-
jiguanghover:
写的不错,收藏一下
Ubuntu下RVM, Ruby, rails安装详细 和 卸载 -
maoghj:
回顾总结(二) -
yun2223:
对楼主表示感谢
Android控件开发之Gallery3D效果 -
zw_lovec:
说清楚点吧 亲 加点注释
out of memory -
lzyfn123:
http://www.iteye.com/images/smi ...
ruby-string 字符串的学习
在做应用的时候很多时候都会去从网络加载图片,而且还要做各种各样的加载效果。比如,加载图片的时候在图片上显示loading的图片,图片加载完成时loading消失,加载失败又有相应的处理。如果处理不好就会很麻烦,下面总结了一个轻量级的从网络加载图片方法。
import java.io.File;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
public class Utils
{
/**
* 加载图片
* @param url 图片的url
* @param listener 回调监听器
*/
public void loadImage(final String url, final OnLoadImageListener listener)
{
if (null == url || null == listener)
{
return;
}
final Handler handler = new Handler()
{
public void handleMessage(Message msg)
{
listener.onLoadImage((Bitmap) msg.obj, url);
}
};
// 之前根据url写入本地缓存的路径
String path = "";
File file = new File(path);
if (file.exists())
{
Bitmap bm = BitmapFactory.decodeFile(path);
sendMessage(handler, bm);
return;
}
new Thread(new Runnable()
{
public void run()
{
try
{
// 网络加载图片,还可以加入延迟(time out)条件
URL u = new URL(url);
HttpURLConnection httpConnection = (HttpURLConnection) u.openConnection();
if (httpConnection.getResponseCode() == HttpURLConnection.HTTP_OK)
{
Bitmap bm = BitmapFactory.decodeStream(httpConnection.getInputStream());
sendMessage(handler, bm);
// 同时对图片进行缓存...
return;
}
// 没有请求到图片
sendMessage(handler, null);
} catch (MalformedURLException e)
{
sendMessage(handler, null);
} catch (IOException e)
{
sendMessage(handler, null);
}
}
}).start();
}
/**
* 向handler发送处理的消息
* @param handler
* @param bm
*/
private void sendMessage(Handler handler, Bitmap bm)
{
Message msg = handler.obtainMessage();
msg.obj = bm;
handler.sendMessage(msg);
}
/**
* 加载图片时的回调
*
*/
public interface OnLoadImageListener
{
public void onLoadImage(Bitmap bm, String imageUrl);
}
}
此例中用到了Handler,从而不需要用到AsyncTask,AsyncTask感觉使用起来很麻烦,而且貌似还有延迟。这样做的话可以直接在回调里面做设置图片处理,而不必要担心是不是UI线程。如下:
new Utils().loadImage("图片链接", new OnLoadImageListener()
{
@Override
public void onLoadImage(Bitmap bm, String imageUrl)
{
if (null == bm)
{
imageView.setImageResource(R.drawable.default_img);
}
else
{
imageView.setBitmapImage(bm);
}
}
});
来自: http://www.2cto.com/kf/201110/107333.html
import java.io.File;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
public class Utils
{
/**
* 加载图片
* @param url 图片的url
* @param listener 回调监听器
*/
public void loadImage(final String url, final OnLoadImageListener listener)
{
if (null == url || null == listener)
{
return;
}
final Handler handler = new Handler()
{
public void handleMessage(Message msg)
{
listener.onLoadImage((Bitmap) msg.obj, url);
}
};
// 之前根据url写入本地缓存的路径
String path = "";
File file = new File(path);
if (file.exists())
{
Bitmap bm = BitmapFactory.decodeFile(path);
sendMessage(handler, bm);
return;
}
new Thread(new Runnable()
{
public void run()
{
try
{
// 网络加载图片,还可以加入延迟(time out)条件
URL u = new URL(url);
HttpURLConnection httpConnection = (HttpURLConnection) u.openConnection();
if (httpConnection.getResponseCode() == HttpURLConnection.HTTP_OK)
{
Bitmap bm = BitmapFactory.decodeStream(httpConnection.getInputStream());
sendMessage(handler, bm);
// 同时对图片进行缓存...
return;
}
// 没有请求到图片
sendMessage(handler, null);
} catch (MalformedURLException e)
{
sendMessage(handler, null);
} catch (IOException e)
{
sendMessage(handler, null);
}
}
}).start();
}
/**
* 向handler发送处理的消息
* @param handler
* @param bm
*/
private void sendMessage(Handler handler, Bitmap bm)
{
Message msg = handler.obtainMessage();
msg.obj = bm;
handler.sendMessage(msg);
}
/**
* 加载图片时的回调
*
*/
public interface OnLoadImageListener
{
public void onLoadImage(Bitmap bm, String imageUrl);
}
}
此例中用到了Handler,从而不需要用到AsyncTask,AsyncTask感觉使用起来很麻烦,而且貌似还有延迟。这样做的话可以直接在回调里面做设置图片处理,而不必要担心是不是UI线程。如下:
new Utils().loadImage("图片链接", new OnLoadImageListener()
{
@Override
public void onLoadImage(Bitmap bm, String imageUrl)
{
if (null == bm)
{
imageView.setImageResource(R.drawable.default_img);
}
else
{
imageView.setBitmapImage(bm);
}
}
});
来自: http://www.2cto.com/kf/201110/107333.html
发表评论
-
Android里的音量调节
2013-04-01 13:37 1315步骤1:或许系统音量 ... -
Android Camera 方法分析
2012-03-29 10:52 3481Android Camera源码分析 android通 ... -
MyCameraActivity
2012-03-29 10:10 665package cn.fn; import android. ... -
MyCameraActivity
2012-04-01 13:27 868package cn.fn; import android. ... -
android AutoCompleteTextView+ SQLite
2012-03-21 13:33 1085android AutoCompleteTextView+ S ... -
ProgressBar+AsyncTask 实现界面数据异步加载
2012-03-20 10:09 1592ProgressBar+AsyncTask 实现界面数据异步 ... -
Android 网络图片异步加载实例
2012-03-20 10:04 946Android 网络图片异步加载实例 ... -
解决java.lang.OutOfMemoryError
2012-03-19 15:53 1060解决java.lang.OutOfMemoryError ... -
android Text 删除线
2012-03-16 19:35 1142import android.app.Activit ... -
android Gallery 详解
2012-03-14 14:17 1493android Gallery 正文 ... -
Android的线程使用来更新UI----Thread、Handler、Looper、TimerTask,Task,AsynTask等
2012-03-14 11:43 1432Android的线程使用来更新UI----Thread、Han ... -
AsyncTask的使用
2012-03-14 10:59 782AsyncTask的使用 ... -
Android控件开发之Gallery3D效果
2012-03-13 14:38 2850Android控件开发之Gal ... -
android GridView
2012-03-08 10:28 895主类 import android.app.Activi ... -
ListView异步加载图片是非常实用的方法
2012-03-08 10:09 920ListView异步加载图片是非常实用的方法,凡是是要通过网络 ... -
复制assets下的数据库到SD卡
2012-03-07 10:56 1199首先使用sqliteadDev(一个windows下图形化sq ... -
Android异步加载图像小结
2012-03-06 16:46 583Android异步加载图像小结 (1)由于an ... -
AutoCompleteTextView
2012-03-05 14:53 1406AutoCompleteTextView ... -
android 动态加载List
2012-03-05 11:11 974main.xml <?xml ver ... -
AutoCompleteTextView
2012-03-02 16:17 1040public class CityAdapter<T& ...
相关推荐
Android异步加载网络图片(线程),采用LruCache算法,使用线程回调接口,实现异步加载网络图片
图片工具类,多种方式加载图片,只要调用相关方法,可返回drawable,bitmap,属于异步加载,大项目中经过完善,过滤验证后的代码
一个基于Httpclient的网络异步操作框架。数据请求被封装在一个回调形式的方法中。
用线程池,回调技术实现图片的异步加载,并且以动画的方式显示出来,里面的图片列表文件需要替换
这是一个专用于解决Android中网络请求及图片加载的缓存处理框架 项目目标 本项目是作为实验项目,不保证其稳定性及可靠性 因为缓存业务的复杂性,本项目尽可能适应更多的使用场景 目前考虑到的,会实现的功能清单,...
android-async-http是Android上的一个异步、基于回调的HTTP客户端开发包,建立在Apache的HttpClient库上。
短信验证码工具类(ToolMSM.java),移动/联通/电信三网发送手机短信验证码、异步回调验证结果 字符串操作工具类(ToolString.java),生成UUID、非空非NULL逻辑判断、生成MD5等常用共通方法 数据操作工具类(ToolData...
Gituhb项目 Volley源码中文注释项目我已经上传到github,欢迎大家fork和start. 为什么写这篇博客 本来文章是维护在github上的,...3. 有本地缓存,直接使用本地缓存图片,通过异步回调给ImageView进行设置. 4. 无本地缓
(6) 图片缓存模块:imageview加载图片的时候无需考虑图片加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。 (7) 配置器模块:可以对简易的实现配对配置的操作,目前配置文件可以支持Preference...
短信验证码工具类(ToolMSM.java),移动/联通/电信三网发送手机短信验证码、异步回调验 证结果 字符串操作工具类(ToolString.java),生成UUID、非空非NULL逻辑判断、生成MD5等常用共 通方法 数据操作工具类...
短信验证码工具类(ToolMSM.java),移动/联通/电信三网发送手机短信验证码、异步回调验证结果 字符串操作工具类(ToolString.java),生成UUID、非空非NULL逻辑判断、生成MD5等常用共通方法 数据操作工具类...
LoaderManager.LoaderCallbacks是3.0之后出现的新特性,通过LoaderManager.LoaderCallbacks接口可以很轻松的实现异步加载数据到Fragment或Activity 中,Loaders提供了回调机制onLoadFinished()通知最终的运行结果,...
11.1.3使用回调函数作为异步访问的通知 11.1.4异步访问与设备驱动 11.2异步Fifo驱动例子 11.2.1在virtualfifo驱动中增加异步通知 11.2.2在用户空间验证virtualfifo的异步通知 第12章Linux块设备驱动 12.1块设备的I/O...
OpenS HttpRequest是用于Android的异步HTTP客户端,具有缓存,连接限制和易于使用的回调机制。 请求是在主UI线程之外执行的,但是回调是在创建请求的同一线程中调用的。 它使用更简单的target-action回调机制,而...
Android的设计之中,任何耗时的操作都不能放在UI主线程之中。所以类似于网络操作等等耗时的操作都需要使用异步的实现。而在ContentProvider之中,也有可能...(2)loaderManager的事件回调接口, LoaderManager.Loader
异步、基于回调的 Http 客户端 07 Unirest in Java:简化、轻量级的 HTTP 客户端库 08 AndroidAsync 是一个低级网络协议库 09 适用于 Android 和 Java 8 的 Java 中的 WebSocket 和 Web 应用程序消息传递协议 (WAMP)...
支持刷新生命周期回调 兼容低版本及AndroidX版本RecyclerView 进阶用法,比如在多种页面之间自由切换 传送门 博客:http://crazysunj.com/ 谷歌邮箱:twsunj@gmail.com QQ邮箱:387953660@qq.com 版本记录 使用说明...
微信支付源码app java ...异步、基于回调的 Http 客户端 07 Unirest in Java:简化、轻量级的 HTTP 客户端库 08 AndroidAsync 是一个低级网络协议库 09 适用于 Android 和 Java 8 的 Java 中的 WebSock
异步、基于回调的 Http 客户端 07 Unirest in Java:简化、轻量级的 HTTP 客户端库 08 AndroidAsync 是一个低级网络协议库 09 适用于 Android 和 Java 8 的 Java 中的 WebSocket 和 Web 应用程序消息传递协议 (WAMP)