Android SDK 설명서에서 @ drawable / my_image xml 구문과 함께 사용 된 모든 예제는 프로젝트의 res / drawable 디렉토리에 저장된 이미지를 직접 처리합니다.
drawable 디렉토리 내에 하위 디렉토리를 만드는 것이 명시 적으로 좋지 않은지 궁금합니다.
예를 들어, 다음 디렉토리 레이아웃이있는 경우 :
res/drawable
-- sandwiches
-- tunaOnRye.png
-- hamAndSwiss.png
-- drinks
-- coldOne.png
-- hotTea.png
참치 샐러드 샌드위치의 이미지를 @ drawable / sandwiches / tunaOnRye로 참조 할 수 있습니까?
또는 Drawable 디렉토리에 계층 구조를 평평하게 유지해야합니까?
답변
아니요, 리소스 메커니즘은 드로어 블 디렉토리의 하위 폴더를 지원하지 않으므로 해당 계층 구조를 평평하게 유지해야합니다.
표시 한 디렉토리 레이아웃으로 인해 사용 가능한 이미지가 없습니다.
내 자신의 실험에서 res/drawable
폴더 내에 항목이있는 하위 폴더가 있으면 리소스 컴파일러가 실패하여 R.java
파일이 올바르게 생성 되지 않는 것처럼 보입니다 .
답변
내가 사용하는 해결 방법 (Android 자체가 선호하는 것으로 보임)은 기본적으로 슬래시를 밑줄로 대체하여 구조가 다음과 같이 보일 것입니다.
sandwich_tunaOnRye.png
sandwich_hamAndSwiss.png
drink_coldOne.png
drink_hotTea.png
이 방법을 사용하려면 이름을 세 심하게 작성해야하며 파일 자체를 훨씬 쉽게 정리할 수 없습니다 (음료와 샌드위치가 모두 ” food
” 여야한다고 결정한 경우 단순히 이름을 바꾸지 않고 대량 이름을 변경해야합니다. 디렉토리로 이동); 그러나 프로그래밍 로직의 복잡성은 폴더 구조와 비교할 때 너무 심하게 고통받지 않습니다 .
이 상황은 참으로 짜증납니다. Android는 훌륭하고 끔찍한 디자인 결정이 혼합 된 백입니다. 우리는 후자 부분이 모든 서두름에 매료되기를 바랍니다. 🙂
답변
답변
예-그것은 빨아요 🙂 그러나 자산 폴더를 사용하고 하위 디렉토리를 가지고 이미지를로드 할 수 있습니다.
답변
자산 폴더를 사용하십시오.
샘플 코드 :
InputStream is = null;
try {
is = this.getResources().getAssets().open("test/sample.png");
} catch (IOException e) {
;
}
image = BitmapFactory.decodeStream(is);
답변
파일 이름을 두 개의 밑줄로 분리하여 가상 하위 폴더를 만들 수있는 이클립스 플러그인을 작성했습니다 __
. 프로젝트는 초기 단계이지만 IDE가 충돌하지 않을 것이라고 걱정하지 마십시오.
자세한 내용은 여기에서 찾을 수 있으며, 포크로 요청하고 풀 요청을 보내십시오.
답변
디자이너가 제공하는 체계적인 디렉토리 구조를 R 파일 생성에 사용할 수있는 간단한 스크립트로 사용하고 싶습니다.
drawable-hdpi에서 현재 경로로 실행하십시오.
#! /bin/bash
DIRS=`find * -type d`
for dir in ${DIRS} ; do
for file in `ls ${dir}` ; do
mv ${dir}/${file} ${dir}_${file};
done
rmdir ${dir};
done