어제 게시했던 소스를 확장하여 웹에서 이미지파일을 다운로드하여 화면에 뿌려주기까지 해보았습니다.
여기에 추가된 부분은 다운로드 혹은 파일을 처리 중일땐 ProgressBar를 이용해서 사용자에게 알려주고 처리가 다 끝나면 서서히 화면에 나타나게끔 애니메이션을 넣었습니다.
파일을 읽어 올때 지정된 캐쉬폴더에 파일이 있으면 우선 사용하게끔 하였고 없다면 다운로드 받게끔 처리했습니다.
하단에 [모든 이미지 삭제] 버튼을 추가해서 다운로드 된 파일들을 삭제가 가능하게끔 구현하였구요!
주요 메소드와 프로젝트 파일을 올립니다. 소스에 나와있는 웹url은 구글 사이트도구를 사용하였고 간혹가다 다운로드가 안될 수 도 있으니 테스트하실때 안되면 다른 웹url에 있는 이미지파일을 지정해서 불러오시면 될것같네요.
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
/** * 이미지뷰에 사용될 Bitmap 설정 * @param fileName 가져와야 하는 파일명 */ public void setImageBitmap(final String fileName) { mBitmap = null; mSpinner.setVisibility(View.VISIBLE); mImage.setVisibility(View.INVISIBLE); new Thread(){ public void run() { try { //우선 장치에 저장되어 있는 파일을 읽어오려고 시도 mBitmap = getBitmapResource(CACHE_FOLDER+fileName); if(mBitmap == null){//비트맵이 null이면 장치에서 읽어온 값이 없음. //다운로드 시작 mBitmap = getBitmapResource(getDownloadFromUrl(fileName)); }//null이 아니면 장치의 값을 읽어옴 downloadHandler.sendEmptyMessage(DOWNLOAD_SUCCESS); } catch (Exception e) { Log.e("Download Failure","msg : "+e); downloadHandler.sendEmptyMessage(DOWNLOAD_FAILURE); } }; }.start(); } /** * 핸들러 */ Handler downloadHandler = new Handler(new Callback() { @Override public boolean handleMessage(Message msg) { switch (msg.what) { case DOWNLOAD_SUCCESS: mImage.setImageBitmap(mBitmap); mImage.setVisibility(View.VISIBLE); mSpinner.setVisibility(View.INVISIBLE); //다운받은 이미지가 서서히 나타나는 anim Animation anim = AnimationUtils.loadAnimation(mContext, R.anim.anim_type_image_alpha); mImage.startAnimation(anim); break; case DOWNLOAD_FAILURE: Toast.makeText(mContext, "이미지 다운로드 실패!", Toast.LENGTH_SHORT).show(); mSpinner.setVisibility(View.INVISIBLE); mImage.setVisibility(View.INVISIBLE); break; } return true; } }); |
어제 게시했던 메소드에 추가된 메소드중 주요 메소드는 위와 같습니다.
Thread를 이용해 처음엔 캐쉬폴더에서 파일을 불러오기 시도한 다음 그 값이 null이면 다운로드 받기 시작하고 결과를 Handler로 전달해주며 Handler에서 다운로드 성공/실패일때 구분하여 처리해 주었구요.
레이아웃 xml에선 ImageView와 ProgressBar의 크기와 위치를 동일하게 하여 visible과 invisible을 이용하였습니다.
anim/anim_type_image_alpha.xml
1 2 3 4 5 6 7 8 9 |
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="1000" /> </set> |
추가된 애니메이션 파일입니다.
마켓에서 리스트뷰형태로 항목이 나오면서 이미지들을 뿌려줄때 효과를 보니 이런 효과더라구요!
다른 애니메이션 효과를 줘도 멋질것같네요 ㅎㅎ
프로젝트 파일 첨부합니다.
'Android' 카테고리의 다른 글
#Android Spinner Text Size 및 배열 지정. (2) | 2012.02.04 |
---|---|
#Android Device별 기본 UI (Spinner) (0) | 2012.02.03 |
#Android 파일 다운로드 (0) | 2012.01.18 |
개발노트 - Android SDK 2.3 업데이트 이후 나인패치 실행 문제... (2) | 2010.12.07 |
Android Speech to text (0) | 2010.07.15 |