2016-04-02 55 views
0

我想比較兩個drawable但沒有成功。我做了一些研究,甚至有類似的問題,但沒有幫助。比較兩個drawable中的資源

在我的應用程序中,我使用getCompoundDrawablesWithIntrinsicBounds將ImageView置於EditText的正確位置。 然後我需要檢查哪個圖像資源在那裏分配。

這個小樣本應該工作,不是嗎?但它返回「不等於」。

Drawable drawable1 = ContextCompat.getDrawable(getApplicationContext(),R.drawable.cor); 

Drawable drawable2 = ContextCompat.getDrawable(getApplicationContext(),R.drawable.cor); 


if(drawable1 == drawable2){ 
    System.out.println("equal"); 
}else{ 
    System.out.println("not equal"); 
} 
+0

你是一個ImageView的應用這些可繪製? –

+0

http://stackoverflow.com/questions/9125229/comparing-two-drawables-in-android – sasikumar

回答

3

getConstantState不能很好地工作

如果你這樣做: if(drawable1 == drawable2){

你是比較對象的引用,它不正確......

改爲使用getConstantState()方法...

更新嘗試與字節或像素進行比較是一般工作的唯一方法。

// Usage: 
drawable1.bytesEqualTo(drawable2) 
drawable1.pixelsEqualTo(drawable2) 
bitmap1.bytesEqualTo(bitmap1) 
bitmap1.pixelsEqualTo(bitmap2) 

https://gist.github.com/XinyueZ/3cca89416a1e443f914ed37f80ed59f2

+1

即使我不熟悉這種方法,我會盡力。它究竟做了什麼? – AndroidDev