android手机和平板用getConstantState()方法判断ImageView使用图片的问题

1. 在android 5.0之前,我们可以通过下面的方式判断当前的ImageView使用的是哪张图片

if(img.getDrawable().getConstantState().equals(getResources().getDrawable(R.mipmap.a).getConstantState())) 

//是图片a 
}else{ 
//不是 
}

但是,当在android 5.0以后(主要是平板的问题,测试小米手机android 6.0此方法仍然适用)再使用此种方式去判断的话,会发现即使当前的img设置的图片为 a,但是两者比较后是不相等的,因为在android 5.0以后这中方式就不行了,需要用以下的方式去比较: 
if((img.getDrawable().getCurrent().getConstantState()).equals(ContextCompat.getDrawable(this,R.mipmap.a).getConstantState())) 

//是图片a 
} else { 
//不是 

}

可以发现,android 5.0 以后获取drawable的方式应该改为:ContextCompat.getDrawable(this,R.mipmap.a)。

2.ContextCompat.getDrawable(this,R.mipmap.a)在平板上适配,特别要注意这个this,这个this使用getApplicationContext(),getApplication(),getActivity()很大问题可能不使用,最好能直接this或用activity.this。

你可能感兴趣的:(android手机和平板用getConstantState()方法判断ImageView使用图片的问题)