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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值