【安卓开发】JAVA代码设置selector不同状态下的背景颜色
来源:互联网 发布:配眼镜需要的数据 编辑:程序博客网 时间:2024/05/24 05:08
本文转自http://www.cnblogs.com/albert-ly/p/Android.html
代码实现Shape
代码实现Selector
StateListDrawable与GradientDrawable 的运用
在Android开发中,我们时常会用到自定义drawable样式,在drawable中设置shape样式或是selector选择器,但是有时如果一个xml中需要用到多个drawable样式,并且里面设置的样式只是有细微的差别改变,那么自定义多个drawable样式会显得比较臃肿,使得drawable的xml文件太多,管理麻烦,所以有时本星觉得可以在代码中创建drawable。
StateListDrawable与GradientDrawable 的运用
java实现selector:
/** * 设置背景选择器 * * @param pressedDraw * @param normalDraw * @return */ private StateListDrawable getSelector(Drawable normalDraw, Drawable pressedDraw) { StateListDrawable stateListDrawable = new StateListDrawable(); stateListDrawable.addState(new int[]{android.R.attr.state_selected}, pressedDraw); stateListDrawable.addState(new int[]{}, normalDraw); return stateListDrawable; }
这是在代码中创建selector,创建的类型是StateListDrawable,可以通过addState()为selector添加状态,但是要注意一点添加state时,是有顺序的,stateListDrawable会先执行最新添加的state,如果不是该state,在执行下面的state,如果把大范围的state放到前面添加,会导致直接执行大范围的state,而不执行后面的state。此外,在添加state中,在state前添加“-”号,表示此state为false(例如:-android.R.attr.state_selected),否则为true。
/** * 设置shape * * @param radius * @param fillColor * @param width * @param strokeColor * @return */ private GradientDrawable getDrawable(int radius, int fillColor, int width, int strokeColor) { GradientDrawable gradientDrawable = new GradientDrawable(); gradientDrawable.setCornerRadius(radius); gradientDrawable.setColor(fillColor); gradientDrawable.setStroke(width, strokeColor); return gradientDrawable; }
在代码中动态创建GradientDrawable ,可实现drawable样式中shape样式的功能,setColor等于shape中的填充色,setCornerRadius是设置shape中的圆角半径,如果要设置单个角的弧度,可以用setCornerRadii()设置每个角的弧度,setStroke()是描边,需要填写描边的宽和边的颜色。
最后简单使用:
GradientDrawable normal = getDrawable(0, Color.WHITE, 1, getResources().getColor(R.color.app_line_color));GradientDrawable press = getDrawable(0, Color.WHITE, 1, getResources().getColor(Config.currentThemeColorId));StateListDrawable selector = getSelector(normal, press);textView.setBackground(selector);
就完成了不同状态下的背景的实现
- 【安卓开发】JAVA代码设置selector不同状态下的背景颜色
- Android设置Selector不同状态下颜色及图片
- Android设置Selector不同状态下颜色及图片
- Android设置Selector不同状态下颜色及图片
- Android设置Selector不同状态下颜色及图片
- Android设置Selector不同状态下颜色及图片
- 代码设置按钮不同状态的颜色
- [Android开发] java代码设置字体的背景颜色
- 利用selector设置ImageButton不同状态下的背景图片
- android 利用selector设置ImageButton不同状态下的背景图片
- Android利用selector设置按钮不同状态下的背景图片
- 利用selector设置ImageButton不同状态下的背景图片 .
- 利用selector设置ImageButton不同状态下的背景图片
- 安卓自定义控件背景颜色设置代码.xml文件
- 安卓ListView的Item使用不同的背景颜色
- android用Selector实现Button三种状态下背景颜色的变化
- 给TextView设置不同状态下的字体颜色
- 安卓学习中Selector改变背景和文字颜色的笔记
- EventBus阅读源码(2)-SubscriberMethod
- UVa 1330 LA 3029
- HDU 1730 Northcott Game(Nim博弈变形)
- toj 4609 Internal Rate of Return
- 提取assets.car中的图片 .car文件的解压
- 【安卓开发】JAVA代码设置selector不同状态下的背景颜色
- navicat for mysql注册码,各种版本都有
- poj1745 Divisibility(动态规划经典题)
- 一步步学会使用SeaJS 2.0
- Pku oj 2104(划分树)
- hdu5213 莫队算法
- [Paper Reading] DeepLab v1 & v2
- PCA的数学原理
- 欢迎使用CSDN-markdown编辑器