异步加载图片-代码保留
来源:互联网 发布:淘宝收货p图怎么弄 编辑:程序博客网 时间:2024/06/05 12:40
1. 异步加载
public class MainActivity extends Activity {
private ArrayList<Bean> beans = new ArrayList<Bean>();
ImageAdapter adapter ;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
for (int i = 0; i < 15; i++)
{
Bean bean = new Bean();
// 初始为本地icon图片
bean.setBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.icon));
beans.add(bean);
}
adapter = new ImageAdapter();
ListView listView = new ListView(this);
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
setContentView(listView);
// 构造时,传入adapter,用户更新数据UI
new ImageLoadTask(this, adapter).execute();
}
class Bean
{
private Bitmap bitmap;
public void setBitmap(Bitmap bitmap)
{
this.bitmap = bitmap;
return ;
}
public Bitmap getBitmap()
{
return bitmap;
}
}
class ImageAdapter extends BaseAdapter
{
@Override
public int getCount()
{
// TODO Auto-generated method stub
return beans.size();
}
@Override
public Bean getItem(int position)
{
// TODO Auto-generated method stub
return beans.get(position);
}
@Override
public long getItemId(int position)
{
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
ImageView img = new ImageView(MainActivity.this);
Bean b = beans.get(position);
if ( b.getBitmap() != null)
{
img.setImageBitmap(b.getBitmap());
}
return img;
}
}
// 异步线程
class ImageLoadTaskextends AsyncTask
{
ImageAdapter adapter;
public ImageLoadTask(Context context, ImageAdapter adapter)
{
this.adapter = adapter;
}
@Override
protected Object doInBackground(Object... params)
{
for (int i = 0; i < adapter.getCount(); i++)
{
Bean b = adapter.getItem(i);
Bitmap bitmap = BitmapFactory.decodeStream(Request.HandlerData
("http://avatar.profile.csdn.net/A/E/5/2_piaopiaohu123.jpg")); // url
b.setBitmap(bitmap);
// 更新UI,调用onProgressUpdate
publishProgress();
}
return null;
}
@Override
protected void onProgressUpdate(Object... values)
{
adapter.notifyDataSetChanged();
}
}
}
2. // 从网络中获取数据流
public class Request {
public static InputStream HandlerData(String url) {
InputStream inStream=null;
try {
URL feedUrl = new URL(url);
// URLConnection conn = feedUrl.openConnection();
// conn.setConnectTimeout(10 * 1000);
// inStream = conn.getInputStream();
// 或者可以这样使用url读取网络图片
inStream = feedUrl.openStream();
} catch (Exception e) {
Log.i("bitmap","exception");
e.printStackTrace();
}
return inStream;
}
}
3. AndroidManifext.xml文件中添加访问网络的权限
<uses-permission android:name="android.permission.INTERNET" />
- 异步加载图片-代码保留
- SyncLoadBitmapDemo(图片异步加载)代码阅读
- 异步加载网络图片代码块
- iPhone 上实现异步加载图片并缓存代码
- 安卓代码优化 使用ImageLoader实现图片异步加载
- Xutil之BitmapUtil异步加载图片代码赏析
- 异步加载图片
- 异步加载图片
- ajax异步加载图片
- android异步加载图片
- 异步图片加载实例
- android 异步加载图片
- 图片异步加载
- list 异步加载图片
- 异步加载本地 图片
- UITableView 异步加载图片
- android异步加载图片
- inputstream 异步加载图片
- 杭电 2054
- 安卓模拟器安装apk文件
- u盘格式化了还能恢复吗?u盘格式化后数据恢复软件教程
- u盘数据如何恢复?u盘数据恢复软件哪个好
- JSP中<base href="<%=basePath%>">的作用
- 异步加载图片-代码保留
- js触发事件
- 下载频道2013免积分人气资源大汇总
- android HTTP协议编程的学习
- 2015就业季,你的就业方向在哪?
- P1008 难度2.7
- Spring aop学习详解
- 对象的拷贝(NSCopying/NSMutableCopying)
- socket/tcp