2014-09-22 108 views
1

我需要知道如何檢查如何比較或檢查圖像按鈕上的圖像資源檢查/比較imagebutton資源

首先我設置按鈕。

button1 = (ImageButton) findViewById(R.id.ib1); 
button1.setImageResource(R.drawable.smiley); 
if(currentTime%2==0) { 
    button1.setImageResource(R.drawable.smiley); 
} 
else { 
    button1.setImageResource(R.drawable.smileyhit); 
} 

在某些時候我需要檢查,如果按鈕的圖像資源是笑臉繪製並增加得分更高版本。

if(button1.getImageResource() == R.drawable.smiley) { 
score = score + 1; 
} 

我應該怎麼做比較呢?我不想使用標籤。請幫助我!

回答

2

使用ImageButton.setTagImageButton.getTag確定哪些圖像是目前ImageButton背景:

if(currentTime%2==0) { 
    button1.setImageResource(R.drawable.smiley); 
    button1.setTag(R.drawable.smiley); 
} 
else { 
    button1.setImageResource(R.drawable.smileyhit); 
    button1.setTag(R.drawable.smileyhit); 
} 

使用button1.getTag檢查當前圖像:

if(Integer.parseInt(button1.getTag().toString()) == R.drawable.smiley) { 
score = score + 1; 
} 
+0

我不想使用標籤,因爲在我的程序中有像30-40圖像按鈕。設置標籤會使代碼更加複雜。爲了簡單起見,我給出了一個更簡單的例子。 – Devenom 2014-09-22 19:37:53

+0

@Devenom'我的程序有像30-40圖像按鈕'那麼你如何在30-40圖像按鈕設置圖像?以相同的方式調用'setImageResource'方法後,你需要調用'setTag'來添加id。只是在一行代碼 – 2014-09-22 19:45:01

+0

我爲所有這些按鈕實際上設置相同的圖像。但在隨機。對於哪個按鈕出現,我設置該按鈕的圖像。之後我檢查哪個按鈕有圖像。 – Devenom 2014-10-15 19:07:25

0

使用setTag和getTag你可以很容易區分的圖像。

if(currentTime%2==0) { 
     button1.setImageResource(R.drawable.smiley); 
     button1.setTag("smiley"); 
    } 
    else { 
     button1.setImageResource(R.drawable.smileyhit); 
     button1.setTag("smileyhit"); 
    } 

if(button1.getTag().toString().equalsIgnoreCase("smiley")){ 
score = score + 1; 
} 
+0

嗨克里希納,我想避免標籤,因爲有許多按鈕和設置標籤,使它們變得複雜。 – Devenom 2014-09-22 20:57:14

0

爲每個按鈕維護一個包含currentTime%2==0的數組。由於UI在應用程序的生命週期中的幾個不同點重新創建,因此不應依賴於UI來檢索應用程序的狀態。所有確定應用程序狀態的數據都應該從UI中分離出來。

編輯 Okie ..因爲你說你有更多的圖片,我還是會去通過數組或列表,而不是依賴於UI獲得data.My方法是如下,

  1. 爲每個圖像資源創建constants,其中Int值爲 例如:public static final int image1=1;
  2. 爲圖像數量創建int數組並使用初始值進行維護。
  3. 每次更改圖像都會相應地更改相應的數組元素。
  4. 要找出使用哪個資源,請檢查相應的數組元素。
  5. 恢復UI(如onResume)時使用該數組來設置相應的繪圖資源。
+0

我有點了解你。但是我在應用程序中使用它的方式需要比較/檢查應用程序中特定圖像按鈕所使用的圖像資源。有許多按鈕和約3-4圖像。但我只是在我的問題中包含了一個簡單的代碼,以使答案更容易。謝謝你。 – Devenom 2014-09-22 21:02:00

+0

沒有豹。我明白你在說什麼。但我無法透露我的應用程序的內容。它更復雜。它特別需要檢查特定按鈕的圖像資源。我需要檢查圖像的另一個原因是因爲我使用了標籤,並且佔用了額外的1000多行代碼。如果我只獲取代碼來比較/檢查圖像資源,我將能夠撤回不需要的代碼。儘管謝謝你!我知道你真的很想幫忙。 – Devenom 2014-09-23 20:48:37

+0

@Devenom Okie,你可以做的最後一件事是重寫'ImageView'並編寫你自己的自定義函數來設置和檢索圖像資源。猜猜這是最後一種方式: -/ – Panther 2014-09-24 05:03:46