java代码设置selector的背景颜色实例方法

  • 更新时间:2020-07-21 09:58:27
  • 编辑:关嘉纳
我们帮大家精选了相关的编程文章,网友邱德义根据主题投稿了本篇教程内容,涉及到selector、背景颜色、java、java代码设置selector不同状态下的背景颜色相关内容,已被582网友关注,如果对知识点想更进一步了解可以在下方电子资料中获取。

参考资料

正文内容

java代码设置selector不同状态下的背景颜色

  • 代码实现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不同状态下的背景颜色,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对码农之家网站的支持!

相关教程

  • Java将图片组合成PDF文件的代码分享

    这篇文章主要为大家详细介绍了Java将图片组合成PDF文件的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    发布时间:2020-02-09

  • Java8 parallelStream并发安全原理讲解

    这篇文章主要给大家介绍了关于Java8 parallelStream并发安全的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学

    发布时间:2019-06-09

  • javaScript canvas实现绘画工具的实例详解

    下面小编就为大家分享一篇javaScript canvas实现(画笔大小 颜色 橡皮的实例),具有很好的参考价值,希望对大家有所帮助

    发布时间:2020-06-18

  • Java代码中解析html并获值的方法

    今天小编就为大家分享一篇在Java代码中解析html,获取其中的值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    发布时间:2020-06-29

  • Java StringBuffer类与StringBuilder类的实例用法

    这篇文章主要介绍了Java StringBuffer类与StringBuilder类用法,结合实例形式总结分析了Java StringBuffer类与StringBuilder类的功能、原理及添加、删除、替换、截取等操作实现技巧,需要的朋友可以参考下

    发布时间:2019-07-03

  • javascript数值强制转换方法总结

    本篇文章给大家带来的内容是关于javascript中的数值如何进行强制转换?(方法总结),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

    发布时间:2018-09-21

  • Java对象类型的判断知识点整理

    这篇文章主要介绍了Java对象类型的判断,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    发布时间:2019-10-31

  • Java设计中Builder模式实例详解

    这篇文章主要介绍了从一个Person例子进行分析重叠构造器模式、Builder模式的使用场景以及运用JavaBeans模式弥补重叠构造器模式的不足

    发布时间:2019-11-22

  • JavaScript按概率随机生成代码整理

    本篇文章主要介绍了详解JavaScript按概率随机生成事件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    发布时间:2020-02-09

  • Java在不存在文件夹的目录下创建文件实例代码

    这篇文章主要介绍了Java如何在不存在文件夹的目录下创建文件,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友可以参考下

    发布时间:2019-11-12

  • Java数字图像处理:编程技巧与应用实践

    Java数字图像处理:编程技巧与应用实践

    本书首先通过一个简单JAVA图像处理程序勾勒出用JAVA来实现图像处理的基本步骤,介绍JAVA在操作图像方面的几个重要的API类如ImageIO,BufferedImageOP等,并对图像文件的保存与读写做较为深入细致的讲解

    大小:153.4 MBJava编程电子书

  • JavaScript基础教程

    JavaScript基础教程

    本书是经典的JavaScript入门书,以易学便查、图文并茂、循序渐进和善于用常见任务讲解语言知识而著称。书中从JavaScript语言基础开始,分别讨论了图像、框架、浏览器窗口、表单、正则表达式

    大小:14 MBJS教程电子书

  • 黑马程序员java面试宝典Beta6.0

    黑马程序员java面试宝典Beta6.0

    黑马老师整理的比较全的面试宝典,你面试会提到的技术问题都在这里,有这一本就够了,感兴趣的可以了解一下

    大小:9.83 MBjava面试电子书

  • Java Web应用程序开发

    Java Web应用程序开发

    《企业级卓越人才培养(信息类专业集群)解决方案十三五规划教材:Javaweb应用程序开发》通过对JAVAweb相关知识的介绍,学习IO流、JDBC、Web服务器、JSP页面以及对JSP内置对象等内容,每个知识点后

    大小:5.3 MBJava Web开发电子书

  • 深度解析Java游戏服务器开发

    深度解析Java游戏服务器开发

    以便协助想掌握新手入门服务器开发设计的从业者或式从业者快速把握Java服务器开发设计的技术性,这书从手机游戏的行业现状、Java技术性、手机游戏逻辑性、数据库系统、网络理论、服务器

    大小:314.4 MBJava开发电子书

用户留言