대부분 모바일에서는 캐싱된 이미지를 재 사용하도록 만드는데, 안드로이드에서 ImageView에 웹서버로부터 이미지를 다운로드 받아 적용하는 방법에 대한 원론적인 방법을 적어 본다. 왜? .... 그냥 조만간 쓸 일이 있을 것 같은 느낌.
URL url = new URL("https://mysite/images/profile.png");
URLConnection conn = url.openConnection();
conn.connect();
InputStreaem stream = conn.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(is);
imageView.setImageBitmap(bitmap);
Android에서 사용하는 ImageView에 대한 다양한 속성에 대해서도 이번에 정리를 해보자.
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/logo" android:adjustViewBounds="true" android:cropToPadding="true" android:scaleType="center" />
android:src="@drawable/logo"
표시할 이미지를 지정. 16진수 컬러 값을 설정할 수도 있고 리소스 폴더(res/drawable)에 저장된 이미지를 지정할 수 있다.
setImageResource(int resId) //리소스 폴더에 저장된 이미지 파일을 설정
setImageBitmap(Bitmap bm) //Bitmap 객체를 설정
setImageDrawable(Drawable drawable) //Drawable 객체를 설정
setImageURI(Uri uri) //Uri 주소에 저장된 이미지 파일을 설정
android:adjustViewBounds = "true"
이미지의 가로, 세로 비율을 맞추기 위해 ImageView의 크기를 조절할 것인가를 지정, 이미지가 ImageView크기보다 작다면 상관없다.
android:cropToPadding="true"
ImageView에 android:padding 속성을 줬을 경우 속성 값이 "true" 이면 padding 여백만큼 이미지의 일부를 잘라내게 된다.
android:scaleType="center"
ImageView의 크기에 맞게 이미지 크기를 조정하거나 이미지 위치를 이동시키는 속성이다.
속성값 |
설명 |
matrix |
ImageView 틀의 왼쪽 상단에 위치시킨다.틀의 크기에 맞게 이미지 크기를 조정하지 않기 때문에 틀보다 이미지가 클 경우 이미지가 잘려서 표시된다. |
fitXY |
이미지의 비율에 상관없이 ImageView틀에 맞춰서 표시한다. 이미지의 좌우 크기가 맞지 않을 경우 찌그러져 보일 수 있다. |
fitStart |
이미지의 비율에 맞게 확대/축소하여 표시한다. ImageView의 상단에 위치하게 된다. |
fitCenter |
이미지의 비율에 맞게 확대/축소하여 표시한다. ImageView의 중앙에 위치하게 된다. |
fitEnd |
이미지의 비율에 맞게 확대/축소하여 표시한다. ImageView의 하단에 위치하게 된다. |
center |
이미지의 크기 그대로 ImageView의 중앙에 표시된다. |
centerCrop |
이미지의 높이 또는 넓이가 ImageView 틀보다 작으면, 틀에 맞게 이미지의 높이 또는 넓이를 늘리면서 다른 한쪽도 같이 비율에 맞게 늘인다. 이미지는 틀의 중앙에 표시된다. |
centerInside |
이미지의 높이 또는 넓이가 ImageView 틀보다 크면, 틀에 맞게 이미지의 높이 또는 넓이를 줄이면서 다른 한쪽도 같이 비율에 맞게 줄인다. 이미지는 틀의 중앙에 표시된다. |
출처 : 안드로이드 앱 프로그래밍 중에서
'프로그래밍 > Android' 카테고리의 다른 글
안드로이드 둥근 모서리 레이아웃 만드는 방법(@drawable) (0) | 2018.11.23 |
---|---|
android res/style을 이용한 fullscreen 적용 (0) | 2018.11.22 |
ERR_UNKNOWN_URL_SCHEME intent오류 해결방법 (2) | 2018.11.09 |
SMS수신 처리 (0) | 2018.11.02 |
ConnectivityManager 네트워크 접속 정보 얻기 (0) | 2018.11.02 |