안드로이드 개발 질문/답변
(글 수 45,052)
일단 http를 통해서 이미지를 Drawable 형태로 만들어서 이미지를 차후에 여러 view단에서
R.drawable. 로 접근하려고 합니다.
어떻게 가능하진요 . /data/data... 밑으로는 가능한데..
drawable 폴더를 생성해서 그 안에다가 만들고 싶네요..
일단 소스에 일부분인데..요.
InputStream is = (InputStream) this.fetch(url);
Drawable d = Drawable.createFromStream(is, "src");
createFromStream에서 "src" 라고 선언할때 파일시스템 어디에 저장하는지?
src라는 폴더를 임의로 생성한다고 되있는데 이공간은 어디 있는건지요?
또한 res 밑에 프로그램 생성시 폴더를 만들수 있는지 도 궁금하네요..?
이것 저것 물어봅니다.
수고하세요.
2010.08.07 17:07:21
불가능으로 알고 있으며, 그리해야할 이유도 없을 것 같습니다.
일단 res에 포함되어 배포되는 것들은 Read-Only이며, 배포 이후에는, 더 이상 추가도 삭제도 안되는 것으로 알고 있습니다.
이미 apk 배포 이전에 이미 정해져있는 것들이기 때문에 미리 사용가능하도록 R.java에 Generated되는 것이구요.
R.java도 res에 변경이 생겼을 시 그 때 그 때 수정되어 다시 컴파일됩니다.
결국 res 밑에 있는 디렉토리에 파일이 있다고 해서 R.blabla로 접근이 가능한 것이 아니고,
그 res 밑에 있는 자원들을 사용할 수 있도록 R.java가 재 생성되어 새로 컴파일이 되어야하죠.
런타임에서는 이러한 것들이 안됩니다. Eclipse의 ADT가 자동으로 해주니까 쉬운것이죠. ADT 안쓰면 R.java 만들기도 빡셉니다. 툴을 수동으로 돌려야되요. ㅠ_ㅠ
결국 런타임에서 res를 변경을하는 것은 불가능이죠.
HTTP를 통해 이미지를 로드하여 사용하시려면, Bitmap을 이용하셔야할 겁니다.
HTTP를 통해 Stream을 생성하고 Stream을 통해 Bitmap으로 Decode하는 식을 거칩니다.
굳이 Drawable을 사용하시려면, Bitmap을 Drawable로 변경해주는 BitmapDrawable이라는 것도 있습니다.



