2013-01-11 3 views
0

안드로이드는 res/drawable 디렉토리의 사진마다 ID를 할당합니다. 어디있어? 동적으로 하나의 그림 양식을 선택하여 보여주고 싶습니다. 어떻게해야합니까?리소스의 ID는 어디에 있습니까?

답변

0

res/drawable 폴더에 저장됩니다. 파일 이름이 demo.png되는 경우 생성, 프로그램, 임의의 당김에 액세스하려면 정수의 ArrayList에있는 모든 리소스 식별자를 저장하고 싶은 경우에, 그들은 R.drawable.demo

에 액세스 할 수 있습니다

Random()을 사용하는 무작위 함수, arraylist에서 특정 항목 가져 오기 그러면 매번 임의의 드로어 블을 가질 수 있습니다.

0

자동 생성 ID는 gen 파일에 있지만 사용하는 것은 바람직하지 않습니다. 미리 정의 된 R.drawable.filename의 배열을 통해 직접 파일 이름을 사용하고 무작위로 선택하는 것이 좋습니다.

0

ID는 R.java 파일에 저장되지만 매번 변경 사항이 덮어 쓰여 지므로 편집 할 수 없습니다.

리소스 이름에 액세스 할 수도 있습니다. 리소스 이름을 알고 있거나 사전 정의 된 명명 체계에 따라 리소스를 파생시킬 수있는 경우 문제를 해결할 수있는 가능한 방법 일 수 있습니다. (예를 들어 이미지는 순서 image1, image2 등으로 이름이 지정됩니다.

당신은 Resources 클래스의 getIdentifier() 방법을 사용하여 식별자 이름을 매핑해야합니다.

String name = "resource" + rng.nextInt(count); 
int resource = getResources().getIdentifier(name, "drawable", "com.package"); 

이 방법에 대한 설명서 말한다 :

참고 :.이 기능의 사용이 이 권장되지는 훨씬 더 효율적인 식별자함으로써 자원을 검색하는 것입니다이름보다.

성능에 민감하지 않은 코드에서이 작업을 수행하는 것은 사실이지만 문제가되지는 않습니다.

또는 리소스를 XML로 나열하는 데 신경 쓰지 않는다면 임의로 선택할 수있는 a typed array을 만들 수 있습니다.

+0

레이아웃 XML의 모든 사진을 나열하면 모든 사진이 표시됩니다. – Gabriel

+0

글쎄, 그래. 그것이 요점입니다. 문제가 있습니까? –

+0

GridView를 통해 하나의 그림을 선택한 다음 활동 2에서 선택한 그림을 표시합니다. 내 아이디어는 선택한 그림의 색인을 포함하는 의도를 사용하고 색인을 사용하여 표시 할 그림을 결정합니다 활동 2.이 방법으로 작동 할 수 있습니까? 레이아웃 XML의 모든 사진을 나열하면 프로그램이 실행될 때 모든 사진이 표시됩니다. 그러나 나는 갤러리에서 내가 선택한 것을보고 싶다. – Gabriel