我正在尝试比较两个可绘制对象,但没有成功。我做了一些研究,甚至有一个类似的问题,但没有帮助。

在我的应用程序中,我使用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");
 }

最佳答案

getConstantState不能正常工作

如果您这样做:if(drawable1 == drawable2){
您正在比较对象的引用,但它不正确...

使用getConstantState()方法代替...

更新尝试与字节或像素进行比较是通常可行的唯一方法。

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

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

10-06 06:52