本blog试图记录Android中两种常见的控件下按效果实现方式:
1、控件在ACTION_DOWN与ACTION_UP中间,控件变暗,采用ColorFilter;
2、控件选中效果,采用StateListDrawable;
效果图1: 效果图2:
效果图3:
图3是在图二的基础上采用colorFilter实现的,图一采用StateListDrawable
ColorFilter具体实现:
Button button=(Button)findViewById(R.id.bt_bike_info_rent_bike);
button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {if (event.getAction() == MotionEvent.ACTION_DOWN)
v.getBackground().setColorFilter(new LightingColorFilter(0xFF999999, 0xFF000000));
else if (event.getAction() == MotionEvent.ACTION_UP)
v.getBackground().clearColorFilter();
return false;
}
});
StateListDrawable具体实现:
XML file saved at
res/drawable/button.xml
:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/button_pressed" /> <!-- pressed --> <item android:state_focused="true" android:drawable="@drawable/button_focused" /> <!-- focused --> <item android:state_hovered="true" android:drawable="@drawable/button_focused" /> <!-- hovered --> <item android:drawable="@drawable/button_normal" /> <!-- default --> </selector>