比较两个drawable中的资源

And*_*Dev 5 java android

我试图比较两个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");
 }
Run Code Online (Sandbox Code Playgroud)

ΦXo*_*a ツ 9

getConstantState不能正常工作

如果你这样做: if(drawable1 == drawable2){

你正在比较对象的参考,它不正确...

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

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

 // Usage: 
 drawable1.bytesEqualTo(drawable2) 
 drawable1.pixelsEqualTo(drawable2) 
 bitmap1.bytesEqualTo(bitmap1) 
 bitmap1.pixelsEqualTo(bitmap2) 
Run Code Online (Sandbox Code Playgroud)

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

  • 对此进行了测试,它仍然存在 SVG 误报情况。 (2认同)