描述一下需求:我们在点击一个ImageView的时候进行,切换背景,或者是资源文件的时候,我们需要根据拿到的背景进行比对,(试了好几种方法,总是出现一些小毛病)

例如:网上的某某人写的这种:

if (image1.getDrawable().getCurrent().getConstantState().equals(getResources().getDrawable(R.drawable.A).getConstantState())){

//当image1的src为R.drawable.A时,设置image1的src为R.drawable.B

image1.setImageResource(R.drawable.B);

}else{

//否则设置image1的src为R.drawable.A

image1.setImageResource(R.drawable.A);

}

显然在5.0的设备上一点毛用都没有。

比起比对资源文件,其实有一种更好的方法可以使用:设置相应的View的Tag,我们根据Tag的值去处理业务逻辑,笔记比较资源文件简单的多!简单贴一下代码:

android:id="@+id/iv_al_remember_psw"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:tag="select"

android:src="@drawable/select_rember_psw" />

if (ivAlRememberPsw.getTag().equals("select")) {

TLog.d("没有选择");

isRemeberPsw = false;

ivAlRememberPsw.setTag("unSelect");

ivAlRememberPsw.setImageResource(R.drawable.remeber_psw);

} else {

TLog.d("进行记住");

isRemeberPsw = true;

ivAlRememberPsw.setTag("select");

ivAlRememberPsw.setImageResource(R.drawable.select_rember_psw);

}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐