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

本文介绍了在Android5.0及更高版本中如何正确判断ImageView所使用的图片资源。由于API变动,原有的图片资源对比方法不再有效,文章提供了新的对比方法,并强调了在不同设备上(如平板)使用ContextCompat.getDrawable时this关键字的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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、付费专栏及课程。

余额充值