代码设置控件selector

来源:互联网 发布:央视新闻数据动画小人 编辑:程序博客网 时间:2024/05/14 10:09
代码设置控件selector


作用:设置selector是为了使控件在不同的状态下显示不同的效果,如:按下时为红色背景,抬起时为白色的背景
说明:StateListDrawable相当于drawable中自定义selector的布局文件所生成的Drawable。


布局文件中的写法:
<selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:drawable="@drawable/xxx_pressed" android:state_pressed="true"></item>    <item android:drawable="@drawable/xxx_normal"></item></selector>

java代码中的写法:
StateListDrawable stateListDrawable = new StateListDrawable();stateListDrawable.addState(new int[]{android.R.attr.state_pressed}, pressedDrawable);//有状态的必须写在上面stateListDrawable.addState(new int[]{}, normalDrawable);//没有状态的必须写在下面/*------- normalDrawable begin --------*/GradientDrawable normalDrawable = new GradientDrawable();//得到随机颜色Random random = new Random();int alpha = 255;int red = random.nextInt(190)+30;//0-255 30-220int green = random.nextInt(190)+30;//30-220int blue = random.nextInt(190)+30;//30-220int argb = Color.argb(alpha, red, green, blue);//设置填充颜色normalDrawable.setColor(argb);//设置圆角半径normalDrawable.setCornerRadius(UIUtils.dip2Px(6));/*------- normalDrawable end --------*//*------- pressedDrawable begin --------*/GradientDrawable pressedDrawable = new GradientDrawable();pressedDrawable.setColor(Color.DKGRAY);pressedDrawable.setCornerRadius(UIUtils.dip2Px(6));/*------- pressedDrawable end --------*/view.setBackgroundDrawable(stateListDrawable);//给View设置selectorview.setClickable(true);//若view不能点击,则使其可以点击,selector才会生效


0 0
原创粉丝点击