Android 드로어 블 디렉토리에 하위 디렉토리가 포함될 수 있습니까? 하위 디렉토리를 만드는 것이 명시

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는 훌륭하고 끔찍한 디자인 결정이 혼합 된 백입니다. 우리는 후자 부분이 모든 서두름에 매료되기를 바랍니다. 🙂


답변

실제로 Android Studio에서는 가능합니다. 와 같이 중첩 된 자원을 가질 수 있습니다 여기에 :

여기에 이미지 설명을 입력하십시오

여기에 리소스를 그룹화하는 플러그인도 있습니다 .


답변

예-그것은 빨아요 🙂 그러나 자산 폴더를 사용하고 하위 디렉토리를 가지고 이미지를로드 할 수 있습니다.


답변

자산 폴더를 사용하십시오.

샘플 코드 :

InputStream is = null;
try {
    is = this.getResources().getAssets().open("test/sample.png");
} catch (IOException e) {
    ;
}

image = BitmapFactory.decodeStream(is);


답변

파일 이름을 두 개의 밑줄로 분리하여 가상 하위 폴더를 만들 수있는 이클립스 플러그인을 작성했습니다 __. 프로젝트는 초기 단계이지만 IDE가 충돌하지 않을 것이라고 걱정하지 마십시오.

자세한 내용은 여기에서 찾을 수 있으며, 포크로 요청하고 풀 요청을 보내십시오.

https://github.com/kirill578/Android-Sorted-Res-Folder

여기에 이미지 설명을 입력하십시오


답변

디자이너가 제공하는 체계적인 디렉토리 구조를 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