- 浏览: 251839 次
- 性别:
- 来自: 内蒙古
文章分类
- 全部博客 (237)
- 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 (1)
最新评论
-
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 1366步骤1:或许系统音量 ... -
Android Camera 方法分析
2012-03-29 10:52 3531Android Camera源码分析 android通 ... -
MyCameraActivity
2012-03-29 10:10 728package cn.fn; import android. ... -
MyCameraActivity
2012-04-01 13:27 909package cn.fn; import android. ... -
android AutoCompleteTextView+ SQLite
2012-03-21 13:33 1138android AutoCompleteTextView+ S ... -
ProgressBar+AsyncTask 实现界面数据异步加载
2012-03-20 10:09 1649ProgressBar+AsyncTask 实现界面数据异步 ... -
Android 网络图片异步加载实例
2012-03-20 10:04 1013Android 网络图片异步加载实例 ... -
解决java.lang.OutOfMemoryError
2012-03-19 15:53 1118解决java.lang.OutOfMemoryError ... -
android Text 删除线
2012-03-16 19:35 1198import android.app.Activit ... -
android Gallery 详解
2012-03-14 14:17 1549android Gallery 正文 ... -
Android的线程使用来更新UI----Thread、Handler、Looper、TimerTask,Task,AsynTask等
2012-03-14 11:43 1471Android的线程使用来更新UI----Thread、Han ... -
AsyncTask的使用
2012-03-14 10:59 854AsyncTask的使用 ... -
Android控件开发之Gallery3D效果
2012-03-13 14:38 2974Android控件开发之Gal ... -
android GridView
2012-03-08 10:28 934主类 import android.app.Activi ... -
ListView异步加载图片是非常实用的方法
2012-03-08 10:09 988ListView异步加载图片是非常实用的方法,凡是是要通过网络 ... -
复制assets下的数据库到SD卡
2012-03-07 10:56 1258首先使用sqliteadDev(一个windows下图形化sq ... -
Android异步加载图像小结
2012-03-06 16:46 627Android异步加载图像小结 (1)由于an ... -
AutoCompleteTextView
2012-03-05 14:53 1456AutoCompleteTextView ... -
android 动态加载List
2012-03-05 11:11 1019main.xml <?xml ver ... -
AutoCompleteTextView
2012-03-02 16:17 1086public class CityAdapter<T& ...
相关推荐
`AsyncTask`是Android SDK中的一个类,它为开发者提供了简单的多线程和回调功能。它的核心思想是将长时间运行的任务放到后台线程,而将结果更新到主线程,这样可以避免主线程(UI线程)阻塞,提高应用的响应速度。`...
在Android应用开发中,异步加载网络图片是...总之,Android异步加载网络图片结合LruCache和线程回调是一种高效且实用的策略,可以显著提升应用的性能和用户体验。理解并掌握这些知识点对于Android开发者来说至关重要。
然而,在实际开发中,当我们需要在RecyclerView中异步加载图片时,可能会遇到图片显示乱序的问题。本文将深入探讨这个问题及其解决方案。 首先,我们来理解为什么会出现图片乱序的现象。这是因为RecyclerView在滚动...
"Android实现ListView异步加载图片" Android 实现 ListView 异步加载图片是一种常见的技术,旨在提高应用程序的性能和用户体验。本文将详细介绍 Android 中实现 ListView 异步加载图片的方法,并对相关的技术概念...
图片下载完成后,通过回调更新对应ImageView的图片资源。 对于图片的显示,Android提供了多种库,如Universal Image Loader、Picasso、Glide等,这些库都支持异步加载和缓存策略。在这个Demo中,可能会使用其中的一...
其他 Picasso 相关回调 }); // 返回一个占位符或者空的Drawable,因为图片是在后台加载的 return new ColorDrawable(Color.TRANSPARENT); } } ``` `tv.setText()` 最后将整个解析后的Spanned对象设置给`...
本文将深入探讨Android ListView中异步加载图片的策略、常见问题以及解决方案。 首先,我们要理解异步加载的基本原理。异步加载是指在后台线程中执行耗时操作,如加载图片,而主线程则继续处理用户交互,保证界面...
本教程将深入探讨如何使用xListView框架实现异步加载网络图片,并且支持上拉加载更多和下拉刷新功能,提升用户体验。 首先,xListView是Android平台上的一个开源库,它扩展了原生的ListView组件,提供了更丰富的...
这里的“android listView 异步加载图片”指的是在不阻塞UI线程的情况下,从网络、本地存储或其他来源加载图片到ListView中的技术。 这篇名为“ImageLoader”的Java文件很可能就是一个实现图片异步加载的工具类。在...
总结来说,Android异步加载图片涉及到多个层面的技术,包括线程管理、缓存策略、图片处理和网络通信等。`AsyncListImage`这个项目为我们提供了一个实际的应用场景,让我们有机会深入研究这些技术,并将其应用到自己...
- Google推出的网络请求库Volley支持异步加载图片,它内置了ImageLoader组件,能自动缓存图片,提高加载速度。 - Volley使用DiskBasedCache进行磁盘缓存,并结合MemoryCache进行内存缓存,实现高效图片加载。 5. ...
在Android应用开发中,批量异步加载网络图片是一项常见的需求,尤其在开发涉及大量图片展示的App时,如社交应用、电商应用等。这个过程通常涉及到网络请求、线程管理、图片缓存以及UI更新等多个方面。下面我们将详细...
5. **UI回调**:在图片加载完成后,通过回调方法将Bitmap传递给UI组件,如ImageView,确保更新UI操作在主线程中进行。 PicUtils 类可能是辅助工具类,包含了与图片处理相关的静态方法。这些方法可能包括: 1. **...
2. **启动异步任务**:在`OnGroupClickListener`的回调中,启动异步任务,如`AsyncTask`,去加载对应组的子项数据。 3. **数据处理**:在`doInBackground()`方法中,从服务器或本地数据库获取子项数据。 4. **更新UI...
一、网络异步加载图片 网络异步加载图片通常涉及到HTTP或HTTPS请求。在Android中,我们可以使用`HttpURLConnection`或第三方库如`Volley`、`OkHttp`、`Retrofit`来实现。以`OkHttp`为例,它提供了异步请求的方法,...
因此,异步加载图片是必要的,它可以在后台线程中处理图片下载和解码工作,保持UI流畅。 2. ListView与异步加载: ListView是一个常用的组件,用于展示可滚动的列表数据。每个列表项可能包含图片。当用户滚动时,...
"Android异步加载图片"这个话题涉及到如何有效地在不阻塞用户界面的情况下,从网络、本地存储或资源文件中获取并显示图片。以下是对这个主题的详细阐述: 首先,我们需要理解为什么需要异步加载。在Android中,如果...
在编程领域,尤其是移动开发和Web开发中,接口回调和异步网络加载是两个至关重要的概念,它们在实现应用程序的动态数据获取和更新时起到关键作用。本文将深入探讨这两个主题,以及它们如何协同工作来优化用户体验。 ...
7. **加载监听**:添加加载监听回调,可以在图片加载开始、成功、失败或取消时执行相应操作,如显示加载进度条、错误提示等。 8. **网络状态判断**:在进行异步加载时,应先检测网络状态,避免在网络不稳定或无网...
在安卓开发中,ListView是展示大量数据常用的组件,但直接在ListView中加载图片可能会导致性能问题,如界面卡顿、滚动不流畅等。为了解决这些问题,开发者通常会采用图片异步加载技术。本资料“安卓Android源码——...