[안드로이드] 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 Project03. *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 at07. *09. *10. * Unless required by applicable law or agreed to in writing, software11. * 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 and14. * 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. @Override12. 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.}
전체 프로젝트 파일 첨부합니다.
SnowPhotoViewer.zip
ImageDownloader.java
SnowPhotoViewer.zip