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

(0)

相关推荐

  • Android使用selector修改TextView中字体颜色和背景色的方法

    本文实例讲述了Android使用selector修改TextView中字体颜色和背景色的方法.分享给大家供大家参考,具体如下: android中的selector大家都很熟悉了,用它可以很方便的实现,控件在不同的动作中,颜色等值的变化.这里我说一下TextView中的一些应用. 我想大家都知道,Button按钮在源码上看是一种特殊的TextView,所以我们很多时候,按钮全是使用的TextView来完成,只要加一个android:clickable="true"就可以了. TextVi

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

    代码实现Shape 代码实现Selector StateListDrawable与GradientDrawable 的运用 在Android开发中,我们时常会用到自定义drawable样式,在drawable中设置shape样式或是selector选择器,但是有时如果一个xml中需要用到多个drawable样式,并且里面设置的样式只是有细微的差别改变,那么自定义多个drawable样式会显得比较臃肿,使得drawable的xml文件太多,管理麻烦,所以有时本星觉得可以在代码中创建drawable

  • 易语言设置在画板中写出文本的背景颜色

    文本背景颜色属性 操作系统支持:Windows,数据类型:整数型: 例程 说明 本属性用于设置使用"写文本行"在画板中写出的文本的背景颜色. 运行结果: 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持.如果你想了解更多相关内容请查看下面相关链接

  • Java中设置session超时(失效)的三种方法

    1.在web容器中设置(此处以tomcat为例) 在tomcat-5.0.28\conf\web.xml中设置,以下是tomcat 5.0中的默认配置: 复制代码 代码如下: <!-- ==================== Default Session Configuration ================= -->    <!-- You can set the default session timeout (in minutes) for all newly   --&

  • Java 使用POI生成带联动下拉框的excel表格实例代码

    废话不多说了,直接给大家贴代码了,具体代码如下所示: import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.apache.poi.hssf.

  • Android Selector 按下修改背景和文本颜色的实现代码

    1,selector 按下修改背景和文本颜色 [1]点击改变字体颜色 - android:state_pressed(按压状态) [2]selector状态选择器(bg_btn_two (存放 res - drawable)) 资源文件下,否则不起作用 [3] selector状态选择器(bg_btn_one (存放 res - color)) 资源文件下,否则不起作用 [3]android:state_pressed="true" 必须放在第一行,否则不生效 2,实现Demo [1]

  • Intellij IDEA中一次性折叠所有Java代码的快捷键设置

    问题:在Java文件中,想把所有的Java方法代码都一次性给折叠起来,用哪个点开哪个. 问题来源:在新建model bean的时候,要是属性很多,那么对应的getter和setter就会很多,要是所有的方法代码都是展开状态,那么这个文件看着也不甚美观,所以,可以把方法都折叠起来. 下面看怎么设置快捷键:看法宝... 要是看不懂,系统自带的快捷键配置,大可以,自己再修改个,就像这个折叠代码的这个快件,折叠一个方法的快捷键是:  ctrl + 减号. 我就把折叠所有的快捷键设置成:ctrl+shif

  • Java实现“年-月-日 上午/下午时:分:秒”的简单代码

    如何借助SimpleDateFormat类实现"年-月-日 上午/下午时:分:秒"日期的格式化: import java.text.SimpleDateFormat; import java.util.Date; public class Test { public static void main(String[] args) { System.out.println(new SimpleDateFormat("yyyy-MM-dd ahh:mm:ss").for

  • java代码块之简易qq登录界面及按钮颜色设置代码

    本文主要分享了关于简洁版qq登录界面及按钮颜色设置的相关代码,供参考. java代码块 公共包(初始化窗口位置) package util; import java.awt.Dimension; import java.awt.Toolkit; import javax.swing.JFrame; //图形化界面的工具类 public class FrameUtil { //设置窗体出现在中间位置 public static void initFrame(JFrame frame,int wid

  • Java NIO 中 Selector 解析

    目录 一.Selector 简介 1.Selector 和 Channel 关系 2.可选择通道(SelectableChannel) 3.Channel 注册到 Selector 4.选择键(SelectionKey) 二.Selector 的使用方法 1.Selector 的创建 2.注册 Channel 到 Selector 3.轮训查询就绪操作 4.停止选择的方法 三.示例代码 1.服务端代码 2.客户端代码 3.NIO 编程步骤总结 一.Selector 简介 1.Selector 和

  • 最简单js代码实现select二级联动下拉菜单

    本文实例为大家分享了js实现select二级联动下拉菜单,供大家参考,具体内容如下 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.

随机推荐