开源项目之UniversalImageLoader(异步加载大量图片)

UniversalImageLoader是实现异步加载大量图片的源码和例子,包括缓存、硬盘缓存、容错机制等技术。

项目如图:

测试效果如图:

总共有四种格式效果!

第一种ImageList,效果如图:

关键测试代码如下:

public class ImageListActivity extends BaseActivity{private String[] imageUrls;private DisplayImageOptions options;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.ac_image_list);Bundle bundle = getIntent().getExtras();imageUrls = bundle.getStringArray(Extra.IMAGES);options = new DisplayImageOptions.Builder().showStubImage(R.drawable.stub_image).cacheInMemory().cacheOnDisc().build();ListView listView = (ListView) findViewById(android.R.id.list);listView.setAdapter(new ItemAdapter());listView.setOnItemClickListener(new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id){startImageGalleryActivity(position);}});}@Overrideprotected void onStop(){imageLoader.stop();super.onStop();}private void startImageGalleryActivity(int position){Intent intent = new Intent(this, ImagePagerActivity.class);intent.putExtra(Extra.IMAGES, imageUrls);intent.putExtra(Extra.IMAGE_POSITION, position);startActivity(intent);}class ItemAdapter extends BaseAdapter{private class ViewHolder{public TextView text;public ImageView image;}@Overridepublic int getCount(){return imageUrls.length;}@Overridepublic Object getItem(int position){return position;}@Overridepublic long getItemId(int position){return position;}@Overridepublic View getView(final int position, View convertView,ViewGroup parent){View view = convertView;final ViewHolder holder;if (convertView == null){view = getLayoutInflater().inflate(R.layout.item_list_image,null);holder = new ViewHolder();holder.text = (TextView) view.findViewById(R.id.text);holder.image = (ImageView) view.findViewById(R.id.image);view.setTag(holder);} elseholder = (ViewHolder) view.getTag();holder.text.setText("Item " + position);imageLoader.displayImage(imageUrls[position], holder.image, options);return view;}}}第二种ImageGrid效果!如图:

测试关键代码如下:

public class ImageGridActivity extends BaseActivity{private String[] imageUrls;private DisplayImageOptions options;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.ac_image_grid);Bundle bundle = getIntent().getExtras();imageUrls = bundle.getStringArray(Extra.IMAGES);options = new DisplayImageOptions.Builder().showStubImage(R.drawable.stub_image).showImageForEmptyUri(R.drawable.image_for_empty_url).cacheInMemory().cacheOnDisc().build();GridView gridView = (GridView) findViewById(R.id.gridview);gridView.setAdapter(new ImageAdapter());gridView.setOnItemClickListener(new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id){startImageGalleryActivity(position);}});}@Overrideprotected void onStop(){imageLoader.stop();super.onStop();}private void startImageGalleryActivity(int position){Intent intent = new Intent(this, ImagePagerActivity.class);intent.putExtra(Extra.IMAGES, imageUrls);intent.putExtra(Extra.IMAGE_POSITION, position);startActivity(intent);}public class ImageAdapter extends BaseAdapter{@Overridepublic int getCount(){return imageUrls.length;}@Overridepublic Object getItem(int position){return null;}@Overridepublic long getItemId(int position){return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent){final ImageView imageView;if (convertView == null){imageView = (ImageView) getLayoutInflater().inflate(R.layout.item_grid_image, parent, false);} else{imageView = (ImageView) convertView;}imageLoader.displayImage(imageUrls[position], imageView, options,new SimpleImageLoadingListener(){@Overridepublic void onLoadingComplete(){Animation anim = AnimationUtils.loadAnimation(ImageGridActivity.this, R.anim.fade_in);imageView.setAnimation(anim);anim.start();}});return imageView;}}}第三种ImagePager效果,如图:

心中有愿望一定要去闯,努力实现最初的梦想,

开源项目之UniversalImageLoader(异步加载大量图片)

相关文章:

你感兴趣的文章:

标签云: