2016-04-02 3 views
0

私は2つのドロウアブルを比較しようとしていますが、成功しません。私はいくつかの研究をしました、同様の質問さえありますが、助けにはなりませんでした。2つのドロウアブル内のリソースを比較する

私のアプリでは、getCompoundDrawablesWithIntrinsicBoundsを使用して、EditTextの正しい位置にImageViewを表示します。 次に、どのイメージリソースがそこに配置されているかを確認する必要があります。

この小さなサンプルはうまくいくはずですか?しかし、それは "等しくない"を返す。

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