目标:按钮未按下时为(一)状态;按钮按下时为(二)状态,并在事件执行时保持该状态;事件结束后恢复为(一)状态;
实现过程:
(1) btn_status的xml代码:
1 <?xml version="1.0" encoding="utf-8"?> 2 <selector xmlns:android="http://schemas.android.com/apk/res/android" > 3 <item android:state_pressed="true" android:drawable="@drawable/bt_bg2" /> 4 <item android:state_focused="true" android:drawable="@drawable/bt_bg2" /> 5 <item android:state_enabled="false" android:drawable="@drawable/bt_bg2" /> 6 <item android:state_enabled="true" android:drawable="@drawable/bt_bg" /> 7 <item android:drawable="@drawable/bt_bg" /> 8 </selector>
(2) 使用到(1)的布局文件代码:
<LinearLayout android:id="@+id/linearBtnBg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="62dip" android:layout_marginRight="62dip" android:background="@drawable/btn_status"> <ImageButton android:id="@+id/imageButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@null" android:contentDescription="@null" android:src="@drawable/bt_operate" android:clickable="false" /> </LinearLayout>
(3) Java代码:
a) 点击 linearBtnBg 组件:
if (v.getId() == R.id.linearBtnBg) { linearBtnBg.setEnabled(false); }
b) 回调事件结束后:
private Callback mCallback = new Callback() { @Override public void onStateChanged(int state) { linearBtnBg.setEnabled(true); } };