Android三种基本的加载网络图片方式
来源:互联网 发布:淘宝直通车效果怎么样 编辑:程序博客网 时间:2024/05/21 22:56
普通加载网络方式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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();
}
}
};
}
2. [代码]用ImageLoader加载图片
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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;
}
}
3. [代码]用Volley加载图片
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
public
class
VolleyLoadPicture {
private
ImageLoader mImageLoader =
null
;
private
BitmapCache mBitmapCache;
private
ImageListener one_listener;
public
VolleyLoadPicture(Context context,ImageView imageView){
one_listener = ImageLoader.getImageListener(imageView,
0
,
0
);
RequestQueue mRequestQueue = Volley.newRequestQueue(context);
mBitmapCache =
new
BitmapCache();
mImageLoader =
new
ImageLoader(mRequestQueue, mBitmapCache);
}
public
ImageLoader getmImageLoader() {
return
mImageLoader;
}
public
void
setmImageLoader(ImageLoader mImageLoader) {
this
.mImageLoader = mImageLoader;
}
public
ImageListener getOne_listener() {
return
one_listener;
}
public
void
setOne_listener(ImageListener one_listener) {
this
.one_listener = one_listener;
}
class
BitmapCache
implements
ImageCache {
private
LruCache<String, Bitmap> mCache;
private
int
sizeValue;
public
BitmapCache() {
int
maxSize =
10
*
1024
*
1024
;
mCache =
new
LruCache<String, Bitmap>(maxSize) {
@Override
protected
int
sizeOf(String key, Bitmap value) {
sizeValue = value.getRowBytes() * value.getHeight();
return
sizeValue;
}
};
}
@Override
public
Bitmap getBitmap(String url) {
return
mCache.get(url);
}
@Override
public
void
putBitmap(String url, Bitmap bitmap) {
mCache.put(url, bitmap);
}
}
}
4. [代码]Activity
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public
class
MainActivity
extends
Activity {
private
ImageView imageView001,imageView002,imageView003;
public
static
final
String picUrl =
"http://img.quwenjiemi.com/2014/0701/thumb_420_234_20140701112917406.jpg"
;
//public static final String picUrl = "http://192.168.1.181:8081/AndroidSerivces/house.jpg";
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView001 = (ImageView)findViewById(R.id.imageView001);
imageView002 = (ImageView)findViewById(R.id.imageView002);
imageView003 = (ImageView)findViewById(R.id.imageView003);
//用普通方法加载图片
new
NormalLoadPictrue().getPicture(picUrl,imageView001);
//用ImageLoader加载图片
ImageLoader.getInstance().displayImage(picUrl, imageView002,
new
ImageLoaderPicture(
this
).getOptions(),
new
SimpleImageLoadingListener());
//用Volley加载图片
VolleyLoadPicture vlp =
new
VolleyLoadPicture(
this
, imageView003);
vlp.getmImageLoader().get(picUrl, vlp.getOne_listener());
}
}
5. [代码]布局文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<ScrollView xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
tools:context=
".MainActivity"
>
<RelativeLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:padding=
"10dp"
>
<TextView
android:id=
"@+id/textView001"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"1.用普通方法的加载图片"
/>
<ImageView
android:id=
"@+id/imageView001"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_below=
"@+id/textView001"
/>
<TextView
android:id=
"@+id/textView002"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_below=
"@+id/imageView001"
android:text=
"2.用Android-Universal-Image-Loader加载图片"
/>
<ImageView
android:id=
"@+id/imageView002"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_below=
"@+id/textView002"
/>
<TextView
android:id=
"@+id/textView003"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_below=
"@+id/imageView002"
android:text=
"3.用Volley加载图片"
/>
<ImageView
android:id=
"@+id/imageView003"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_below=
"@+id/textView003"
/>
</RelativeLayout>
</ScrollView>
阅读全文
0 0
- Android三种基本的加载网络图片方式
- Android三种基本的加载网络图片方式
- Android三种基本的加载网络图片方式
- Android三种基本的加载网络图片方式
- Android三种基本的加载网络图片方式
- Android之网络图片加载的5种基本方式
- android 加载图片的三种方式
- Android之Volley框架加载网络图片的三种方式
- Android实现加载(loading)图片旋转的三种方式
- Android之---加载图片的三种方式
- Volley加载图片的三种方式
- 加载图片的三种方式使用
- 加载外部图片的三种方式
- 图片加载的基本方式
- 网络加载图片的三种方法
- 加载图片三种方式
- Android imageloader加载网络,本地图片方式
- Android imageloader加载网络,本地图片方式
- 20170816 Notes
- HDU6217 Hard challenge(计算几何)
- NYOJ 44 子串和
- pl/sql入门
- 一个简单的数据库连接池实例
- Android三种基本的加载网络图片方式
- Mybatis的高级映射--多表查询
- PAT_1070. Mooncake
- 中兴新支点操作系统小教程——用户
- 啊啊
- Java当中的四种引用
- MyEclipse的字体调整
- TCP状态测试(CS模型改进3)
- 修改mysql数据库root密码