Android三种基本的加载网络图片方式
2017-02-08 18:30
405 查看
Android三种基本的加载网络图片方式,包括普通加载网络方式、用ImageLoader加载图片、用Volley加载图片。
普通加载网络方式:
public class NormalLoadPictrue {
private String uri;
private ImageView imageView;
private byte[] picByte;
public void getPicture(String uri,ImageView imageView){
this.uri = uri;
this.imageView = imageView;
new Thread(runnable).start();
}
@SuppressLint("HandlerLeak")
Handler handle = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 1) {
if (picByte != null) {
Bitmap bitmap = BitmapFactory.decodeByteArray(picByte, 0, picByte.length);
imageView.setImageBitmap(bitmap);
}
}
}
};
Runnable runnable = new Runnable() {
@Override
public void run() {
try {
URL url = new URL(uri);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setReadTimeout(10000);
if (conn.getResponseCode() == 200) {
InputStream fis = conn.getInputStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] bytes = new byte[1024];
int length = -1;
while ((length = fis.read(bytes)) != -1) {
bos.write(bytes, 0, length);
}
picByte = bos.toByteArray();
bos.close();
fis.close();
Message message = new Message();
message.what = 1;
handle.sendMessage(message);
}
}catch (IOException e) {
e.printStackTrace();
}
}
};
}
public class ImageLoaderPicture {
private DisplayImageOptions options;
public ImageLoaderPicture(Context context) {
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).threadPriority(Thread.NORM_PRIORITY - 2)
.denyCacheImageMultipleSizesInMemory()
.discCacheFileNameGenerator(new Md5FileNameGenerator())
.tasksProcessingOrder(QueueProcessingType.LIFO).enableLogging()
.memoryCache(new WeakMemoryCache())
.build();
ImageLoader.getInstance().init(config);
options = new DisplayImageOptions.Builder()
.showStubImage(0)
.showImageForEmptyUri(0)
.showImageOnFail(0)
.cacheInMemory().cacheOnDisc()
.imageScaleType(ImageScaleType.IN_SAMPLE_INT)
.bitmapConfig(android.graphics.Bitmap.Config.RGB_565)
.build();
}
public DisplayImageOptions getOptions() {
return options;
}
public void setOptions(DisplayImageOptions options) {
this.options = options;
}
}
普通加载网络方式:
public class NormalLoadPictrue {
private String uri;
private ImageView imageView;
private byte[] picByte;
public void getPicture(String uri,ImageView imageView){
this.uri = uri;
this.imageView = imageView;
new Thread(runnable).start();
}
@SuppressLint("HandlerLeak")
Handler handle = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 1) {
if (picByte != null) {
Bitmap bitmap = BitmapFactory.decodeByteArray(picByte, 0, picByte.length);
imageView.setImageBitmap(bitmap);
}
}
}
};
Runnable runnable = new Runnable() {
@Override
public void run() {
try {
URL url = new URL(uri);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setReadTimeout(10000);
if (conn.getResponseCode() == 200) {
InputStream fis = conn.getInputStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] bytes = new byte[1024];
int length = -1;
while ((length = fis.read(bytes)) != -1) {
bos.write(bytes, 0, length);
}
picByte = bos.toByteArray();
bos.close();
fis.close();
Message message = new Message();
message.what = 1;
handle.sendMessage(message);
}
}catch (IOException e) {
e.printStackTrace();
}
}
};
}
用ImageLoader加载图片
public class ImageLoaderPicture {private DisplayImageOptions options;
public ImageLoaderPicture(Context context) {
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).threadPriority(Thread.NORM_PRIORITY - 2)
.denyCacheImageMultipleSizesInMemory()
.discCacheFileNameGenerator(new Md5FileNameGenerator())
.tasksProcessingOrder(QueueProcessingType.LIFO).enableLogging()
.memoryCache(new WeakMemoryCache())
.build();
ImageLoader.getInstance().init(config);
options = new DisplayImageOptions.Builder()
.showStubImage(0)
.showImageForEmptyUri(0)
.showImageOnFail(0)
.cacheInMemory().cacheOnDisc()
.imageScaleType(ImageScaleType.IN_SAMPLE_INT)
.bitmapConfig(android.graphics.Bitmap.Config.RGB_565)
.build();
}
public DisplayImageOptions getOptions() {
return options;
}
public void setOptions(DisplayImageOptions options) {
this.options = options;
}
}
用Volley加载图片
相关文章推荐
- Android三种基本的加载网络图片方式
- Android三种基本的加载网络图片方式
- Android三种基本的加载网络图片方式
- Android三种基本的加载网络图片方式
- Android三种基本的加载网络图片方式(转)
- Android之网络图片加载的5种基本方式
- Android之Volley框架加载网络图片的三种方式
- Android之网络图片加载的5种基本方式
- 三种基本网络加载图片方式
- Android之网络图片加载的5种基本方式
- volley三种基本请求图片的方式与Lru的基本使用:正常的加载+含有Lru缓存的加载+Volley控件networkImageview的使用
- Android实战简易教程<四十九>(两种方式实现网络图片异步加载)
- Android实现加载(loading)图片旋转的三种方式
- volley三种基本请求图片的方式与Lru的基本使用:正常的加载+含有Lru缓存的加载+Volley控件networkImageview的使用
- Android imageloader加载网络,本地图片方式
- Android之---加载图片的三种方式
- Android imageloader加载网络,本地图片方式
- Android几种加载网络图片的方式(附带源码Demo)
- Android 使用三种方式缓存加载 倒影图片