2011-10-04 31 views
0

我的代碼裏面,一個視圖獲取一個新的背景:找出哪些是當前的背景繪製對象

myView.setBackgroundResource(R.drawable.foo); 

OK,它不能是「富」,有十幾個不同的可繪製可能。這導致我的問題:後來我需要知道,這些Drawable中的哪一個實際顯示。但我無法找出殘油沒有背景的名字,也沒找到一個方法來比較這些圖形內容:

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

他們是不相等的。嗯。我怎樣才能找到當前的背景圖像?

在此先感謝

TIA 喬

+0

試試這個:如果(myDraw.equals(compareDraw);並告訴我們,如果它工作 – Houcine

+0

他只是告訴你,他們是不相等的。 – nhaarman

+0

@Niek:我見過這個問題不用擔心,我已經發布了我的評論來嘗試方法equal(Object),因爲可能是他嘗試了條件:myDraw == compareDraw,全部是 – Houcine

回答

0

繪製對象是一個抽象類,它可以採取多種形式。從文檔:

雖然通常不會在應用程序中顯示,圖形可採取多種形式:

  1. 位圖:最簡單的繪製對象,PNG或JPEG圖像。
  2. 九修補程序:一個 擴展,PNG格式允許它指定有關 信息如何對其進行拉伸和地方的東西在它的內部。
  3. 形狀:包含 簡單的繪圖命令,而不是一個原始的位圖,它允許 在某些情況下調整更好。
  4. 圖層:複合可繪製,其中 在彼此頂部繪製多個底層可繪圖。
  5. 國家:其選擇基於 其狀態的一組可繪中的一個 化合物可繪製。
  6. 水平:選擇一組的基礎上其水平 可繪之一的化合物可繪製。
  7. 規模:用 單個子可拉伸,其總的大小基於所述 電流水平被修飾的化合物可繪製。

在內部,我猜想位圖可能是相同的,但Drawable是不同類型的。

2

如果您設置了背景,爲什麼不保留代表當前背景資源標識符的class memberint myBackground。而每一次你讓

myView.setBackgroundResource(R.id.myBack); 

還設置:

myBackground=R.id.myBack; 

並以這種方式,你總是知道你的背景資源的ID。

+0

我想到了類似的東西,使用標籤屬性。但應該有一個直接的方式,恕我直言 – Jochen

+0

比較Drawables vs比較一些ints ...它應該是非常直接的 –