Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 다이나믹 링크
- 선언형UI
- 동적 링크
- 안드로이드 카카오 지도
- component
- Clean Architecture
- android daum map
- 안드로이드 라이브러리
- ImageView
- android 지도
- dynamiclink
- JetpackCompose
- 컴포넌트
- HTTP
- 안드로이드광고
- 아키텍처
- 젯팩컴포즈
- Android
- RecyclerView
- 클린 아키텍처
- android kakao map
- 애드몹광고
- 파이어베이스
- Android 애드몹
- Firebase
- glide
- 안드로이드컴포즈
- 안드로이드
- thread
- 애드몹배너
Archives
- Today
- Total
코딩스토리
[Android/안드로이드] ImageView에 url 로 이미지 지정하기 본문
앱을 구현할 때 많은 앱들이 많은 양의 이미지를 보여주는 경우가 많습니다. 수많은 양의 이미지를 어플에 리소스파일로 넣어 배포를 하게되면 용량이 어마어마해집니다. 이 문제를 해결하기 위해서는 웹에서 이미지 URL을 가져오는 방법이 있습니다.
보통 ImageView를 사용할 때면 Glide 라이브러리나 Picasso 라이브러리를 사용합니다.
라이브러리를 만들어 배포를 한다던가 따로 커스텀을 하기 위해서 Glide나 Picasso라이브러리를 사용할 수 없을 때가 있습니다.
그럴 때는 다음과 같은 방법을 통해 ImageView에 http, https형식의 이미지 Url을 지정해줄 수 있습니다.
manifests.xml
<uses-permission android:name="android.permission.INTERNET" />
MainActivity.java
public class MainActivity extends AppCompatActivity {
ImageView iv_image;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv_image = findViewById(R.id.iv_image);
new DownloadFilesTask().execute("이미지 URL");
}
private class DownloadFilesTask extends AsyncTask<String,Void, Bitmap> {
@Override
protected Bitmap doInBackground(String... strings) {
Bitmap bmp = null;
try {
String img_url = strings[0]; //url of the image
URL url = new URL(img_url);
bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return bmp;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(Bitmap result) {
// doInBackground 에서 받아온 total 값 사용 장소
iv_image.setImageBitmap(result);
}
}
}
주의사항
1. 인터넷 관련 작업을 할 때는 인터넷 권한을 허용해줘야합니다.
<uses-permission android:name="android.permission.INTERNET" />
2. 네트워크 작업을 할때는 Thread나 AsyncTask로 처리해야합니다.
3. Url 이미지를 로드하는 Thread가 작업 할 때(doInBackground()doInBackground(String... strings)) UI관련 기능을 가지고 있는 메인 Thread는 대기를 하고, 완료가 되었을 때(onPostExecuteonPostExecute(Bitmap result))에서 처리해줘야합니다.
샘플 자료
https://github.com/lakue119/ImageViewSetUrl
'Android > 유용한 기술' 카테고리의 다른 글
[Android/안드로이드] Android Studio Firebase 연동 (1) (2) | 2020.03.08 |
---|---|
[Android/안드로이드] PopupActivity로 쉽게 Popup창을 만들기 (7) | 2020.03.07 |
[Android/안드로이드] 페이징 버튼 처리하기/Paging library (4) | 2020.03.03 |
[Android/안드로이드] 앱 APK 추출하기 (1) | 2020.02.27 |
[Android/ 안드로이드] EditText 위부터 입력하기 (0) | 2020.02.07 |
Comments