描述一下需求:我们在点击一个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的值去处理业务逻辑,笔记比较资源文件简单的多!简单贴一下代码:
<ImageView
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);
}