代码如下
第一步:创建:
/**
* Created by developer on 16/10/13. 动态创建Selector
*/
public class CommonUtils {
/**
* 用java代码的方式动态生成状态选择器
*/
public static Drawable generatePressedSelector(Drawable pressed, Drawable normal) {
StateListDrawable drawable = new StateListDrawable();
drawable.addState(new int[]{android.R.attr.state_pressed}, pressed);// 状态 , 设置按下的图片
drawable.addState(new int[]{}, normal);//默认状态,默认状态下的图片
//根据SDK版本设置状态选择器过度动画/渐变选择器/渐变动画
if (Build.VERSION.SDK_INT > 10) {
drawable.setEnterFadeDuration(500);
drawable.setExitFadeDuration(500);
}
return drawable;
}
}
第二步:使用:
public class MainActivity extends AppCompatActivity {
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Drawable pressed = ContextCompat.getDrawable(this, R.drawable.all); //被按压时显示的图片
Drawable normal = ContextCompat.getDrawable(this, R.drawable.all_s); //正常状态默认的图片
final Drawable drawableSelectorP = CommonUtils.generatePressedSelector(pressed, normal);
tv = (TextView) findViewById(R.id.tv);
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//点击更改背景
tv.setBackground(drawableSelectorP);
}
});
}
}
注意:
根据图片ID生成drawable图片时使用的是:
ContextCompat.getDrawable(this, R.drawable.all)
第一个参数:上下文
第二个参数:需要转成drawable图的图片id