안녕세계

[안드로이드] ImageView에 image url로 이미지 지정 본문

[안드로이드] ImageView에 image url로 이미지 지정

Junhong Kim 2017. 6. 13. 22:38
728x90
반응형

* 안드로이드 앱을 개발하면서 url 주소를 통해서 이미지를 불러올 수 있습니다.

1. 네트워크 작업은 메인 Thread가 아닌 별도의 ThreadAsyncTask에서 해야합니다.

2. URL 이미지를 로드하는 작업 Thread가 완료될 때까지, UI 관련 기능을 담당하는 메인 Thread는 대기해야 합니다.

3.인터넷 관련 작업을 할 때는 INTERNET permission을 허용해주어야 합니다.



[manifest/AndroidManifest.xml]

<uses-permission android:name="android.permission.INTERNET" />


[java/MainActivity]

public class MainActivity extends AppCompatActivity {
ImageView imageView;
Bitmap bitmap;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

imageView = (ImageView)findViewById(R.id.imageView);

// 안드로이드에서 네트워크와 관련된 작업을 할 때,
// 반드시 메인 Thread가 아닌 별도의 작업 Thread를 생성하여 작업해야 한다.
Thread mThread = new Thread() {
@Override
public void run() {
try {
URL url = new URL("http://www.gettyimagesgallery.com/Images/Exhibitions/Poolside/01.jpg");

// Web에서 이미지를 가져온 뒤
// ImageView에 지정할 Bitmap을 만든다
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true); // 서버로 부터 응답 수신
conn.connect();

InputStream is = conn.getInputStream(); // InputStream 값 가져오기
bitmap = BitmapFactory.decodeStream(is); // Bitmap으로 변환

} catch (MalformedURLException e) {
e.printStackTrace();

} catch (IOException e) {
e.printStackTrace();
}
}
};

mThread.start(); // Thread 실행

try {
// 메인 Thread는 별도의 작업 Thread가 작업을 완료할 때까지 대기해야한다
// join()를 호출하여 별도의 작업 Thread가 종료될 때까지 메인 Thread가 기다리게 한다
mThread.join();

// 작업 Thread에서 이미지를 불러오는 작업을 완료한 뒤
// UI 작업을 할 수 있는 메인 Thread에서 ImageView에 이미지를 지정한다
imageView.setImageBitmap(bitmap);

} catch (InterruptedException e) {
e.printStackTrace();
}
}
}


※ 참고

[1] http://apphappy.tistory.com/131

728x90
반응형
Comments