Android将imageView与图像进行比较

时间:2016-06-01 18:06:20

标签: android imageview drawable

我想将当前的imageView与R.drawable的图像进行比较。我想我尝试了一切,但我无法解决这个问题。我尝试了所有形式的堆栈溢出。

XML:

<ImageView
        android:layout_width="match_parent"
        android:src="@drawable/red"
        android:id="@+id/imageview1"
        android:clickable="true"
        android:layout_height="match_parent" />

Android:

final ImageView test = (ImageView) findViewById(R.id.imageview1);

test.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
          //if(test.getResources().equals(R.drawable.red))
          //if(test.getDrawable().equals(R.drawable.red))
          if(test.getDrawable().getConstantState().equals(getResources().getDrawable(R.drawable.red).getConstantState()))
          {
               Toast.makeText(getApplicationContext(), "work", Toast.LENGTH_SHORT).show();
          }
          else
          {
               Toast.makeText(getApplicationContext(), "not work", Toast.LENGTH_SHORT).show();
          }
     }
});

3 个答案:

答案 0 :(得分:2)

谢谢莫里森,就是这样。

首先

final ImageView test = (ImageView) findViewById(R.id.imageview1);
final Bitmap bmap = ((BitmapDrawable)test.getDrawable()).getBitmap();
Drawable myDrawable = getResources().getDrawable(R.drawable.red);
final Bitmap myLogo = ((BitmapDrawable) myDrawable).getBitmap();

下一步

if(bmap.sameAs(myLogo))
{
do sthng
}

答案 1 :(得分:1)

如果要保存一些信息以供查看,可以使用标记。

    <ImageView
    android:layout_width="match_parent"
    android:id="@+id/imageview1"
    android:src="@drawable/red"
    android:tag="work"
    android:clickable="true"
    android:layout_height="match_parent" />

现在你可以比较

        ImageView image = (ImageView) findViewById(R.id.imageview1);
    if ("work".equals(image.getTag())){
        Toast.makeText(getApplicationContext(), "work", Toast.LENGTH_SHORT).show();
    }

您可以从代码

设置此标记
image.setTag("not work");

答案 2 :(得分:0)

首先,这个:

.getResources().getDrawable(imageResource)

在API21及更高版本中已弃用。

以下是可用于比较两个图像的代码示例:

imageview.setImageResource(R.drawable.image_name);
int id= getResources().getIdentifier("@drawable/image_name", null, this.getPackageName());

Drawable.ConstantState constantState;

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        constantState = mContext.getResources().getDrawable(id,mContext.getTheme()).getConstantState();
    } else {
        constantState = mContext.getResources().getDrawable(id).getConstantState();
    }

    if (imageview.getDrawable().getConstantState() == constantState) {
        Log.d(TAG,"Success");
    } else {
        Log.d(TAG,"Not possible");
    }