描述一下需求:我們在點擊一個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);
}