我试图比较两个drawables但没有成功。我做了一些研究,甚至有类似的问题,但没有帮助。
在我的应用中,我使用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 :(得分:6)
getConstantState效果不佳
如果你这样做:
if(drawable1 == drawable2){
您正在比较对象的引用并且它不正确...
改为使用 getConstantState()
方法等于...
更新尝试与字节或像素进行比较是唯一可行的方法。
// Usage:
drawable1.bytesEqualTo(drawable2)
drawable1.pixelsEqualTo(drawable2)
bitmap1.bytesEqualTo(bitmap1)
bitmap1.pixelsEqualTo(bitmap2)
https://gist.github.com/XinyueZ/3cca89416a1e443f914ed37f80ed59f2