2011-10-04 4 views
0

드로어 블 현재의 배경 인 알아, 뷰가 새로운 배경을 가져옵니다내 코드 내부

myView.setBackgroundResource(R.drawable.foo); 

OK, 그것은 "foo는"안됩니다, 12 개의 드로어 블 Drawable들 수있다. 그게 내 문제를 일으키는거야. 나중에 내가 알아야 할 것은이 드로어 블 중 어떤 것이 실제로 보여 졌는지. 하지만 잔유도 배경의 이름을 찾을 수 아니에요, 또한 나는이 드로어 블을 비교하는 방법을 찾을 수 없습니다 :

Drawable myDraw = myView.getBackground(); 
Drawable compareDraw = getResources().getDrawable(R.drawable.foo); 

그들은 동일하지 않습니다. 흠. 현재 배경 이미지를 찾으려면 어떻게해야합니까?

사전

TIA 조

+0

시도해보십시오. if (myDraw.equals (compareDraw);) 작동하는지 알려주십시오. – Houcine

+0

그는 방금 평등하지 않다고 말했습니다. – nhaarman

+0

@Niek : 질문을 보지 못했습니다. 내 의견을 게시하여 메서드 equal (Object)을 시도했습니다. 왜냐하면 그는 조건을 시도했을 수 있습니다 : myDraw == compareDraw, 그게 전부예요. – Houcine

답변

0

그리기에

감사는 많은 형태를 취할 수, 추상 클래스입니다. 문서에서 :

응용 프로그램에 일반적으로 볼 수 없습니다 비록 드로어 블은 다양한 형태를 취할 수있다 :

  1. 비트 맵 : 간단한 그리기하는 PNG 또는 JPEG 이미지를.
  2. Nine Patch : PNG 형식으로 확장하면 에 대한 정보를 지정하여이를 늘리고 내부에 배치하는 방법을 허용합니다.
  3. 셰이프 : 단순 비트 맵 대신 간단한 비트 맵을 사용하여 경우에 따라 크기를 조정할 수 있습니다.
  4. 레이어 : 컴파운드 드로어 블이며, 은 서로 위에 기본 드로어 블을 여러 개 그립니다.
  5. 상태 : 에 기반한 드로어 블 세트 중 하나를 선택하는 컴파운드 드로어 블입니다.
  6. 레벨 : 수준에 따라 드로어 블 세트 중 하나를 선택하는 복합 드로어 블입니다.
  7. 크기 : 단일 하위 드로어 블을 사용하여 드로잉 할 수있는 컴파운드이며 전체 크기는 현재 수준을 기준으로 수정됩니다.

내부적으로 비트 맵은 같지만 드로어 블은 다른 종류의 것 같습니다.

2

배경을 설정하면 현재 배경 자원 식별자를 나타내는 class memberint myBackground을 보관하지 않는 것이 좋습니다. 그리고 때마다 당신은

myView.setBackgroundResource(R.id.myBack); 

이 당신도 설정합니다

myBackground=R.id.myBack; 

이 방법으로

당신은 항상 당신의 배경 자원의 ID를 알고있다.

+0

태그 속성을 사용하여 비슷한 점을 생각했습니다. 하지만 직접적인 방법이 있어야합니다. IMHO – Jochen

+0

Drawables와 몇 가지 ints 비교 ... 비교하면 꽤 직접적이어야합니다. –