[안드로이드] URL을 이용해서 이미지 다운로드 하기 - http://snowbora.com/402
그리고, 이 글의 원문은
Multithreading For Performance
http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html
입니다. 영어가 되신다면 원문을 보는 것도 좋은 방법(?)입니다. +_+
원문에 가면 소스코드도 다운 받아서 돌려볼 수 있습니다. 그 중 중요한 파일 2가지는 여기에 올려둡니다.
(원본 파일입니다.)
물론, 저는 제가 쓰기 편하도록 코드들을 조금 수정했습니다.
수정한 ImageAdapter.java 파일은 다음과 같습니다.
01.
/*
02.
* Copyright (C) 2010 The Android Open Source Project
03.
*
04.
* Licensed under the Apache License, Version 2.0 (the "License");
05.
* you may not use this file except in compliance with the License.
06.
* You may obtain a copy of the License at
07.
*
09.
*
10.
* Unless required by applicable law or agreed to in writing, software
11.
* distributed under the License is distributed on an "AS IS" BASIS,
12.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13.
* See the License for the specific language governing permissions and
14.
* limitations under the License.
15.
*/
16.
17.
package
snow.photo.viewer;
18.
19.
import
android.view.View;
20.
import
android.view.ViewGroup;
21.
import
android.widget.BaseAdapter;
22.
import
android.widget.GridView;
23.
import
android.widget.ImageView;
24.
25.
public
class
ImageAdapter
extends
BaseAdapter {
26.
private
final
ImageDownloader imageDownloader =
new
ImageDownloader();
27.
private
String[] strURLList;
28.
29.
public
ImageAdapter(String _strURLList[])
30.
{
31.
if
(_strURLList !=
null
)
32.
{
33.
strURLList = _strURLList;
34.
}
35.
}
36.
37.
public
int
getCount()
38.
{
39.
return
strURLList.length;
40.
}
41.
42.
public
String getItem(
int
position)
43.
{
44.
return
strURLList[position];
45.
}
46.
47.
public
long
getItemId(
int
position)
48.
{
49.
return
strURLList[position].hashCode();
50.
}
51.
52.
public
View getView(
int
position, View view, ViewGroup parent)
53.
{
54.
if
(view ==
null
)
55.
{
56.
view =
new
ImageView(parent.getContext());
57.
view.setLayoutParams(
new
GridView.LayoutParams(100, 100));
58.
view.setPadding(5, 5, 5, 5);
59.
}
60.
61.
imageDownloader.download(strURLList[position], (ImageView)view);
62.
63.
return
view;
64.
}
65.
66.
public
ImageDownloader getImageDownloader()
67.
{
68.
return
imageDownloader;
69.
}
70.
}
그리고 액티비티 내용은 다음과 같습니다.
01.
package
snow.photo.viewer;
02.
03.
import
android.app.Activity;
04.
import
android.os.Bundle;
05.
import
android.view.View;
06.
import
android.widget.Button;
07.
import
android.widget.GridView;
08.
09.
public
class
SnowPhotoViewer
extends
Activity {
10.
/** Called when the activity is first created. */
11.
@Override
12.
public
void
onCreate(Bundle savedInstanceState)
13.
{
14.
super
.onCreate(savedInstanceState);
15.
setContentView(R.layout.main);
16.
17.
Button btnDownload = (Button)findViewById(R.id.btnButton);
18.
btnDownload.setOnClickListener(myButtonClick);
19.
}
20.
21.
Button.OnClickListener myButtonClick =
new
Button.OnClickListener()
22.
{
23.
public
void
onClick(View v)
24.
{
25.
String [] strURLS = {
"http://cfile25.uf.tistory.com/image/112CA2274C2220D2B47CB1"
,
28.
};
29.
30.
GridView gv = (GridView)findViewById(R.id.gvGridView);
31.
ImageAdapter imgAdapter =
new
ImageAdapter(strURLS);
32.
33.
gv.setAdapter(imgAdapter);
34.
}
35.
};
36.
}
전체 프로젝트 파일 첨부합니다.