通过代码定义shape/selector

public class DrawableUtil {
    /**
     * 定义一个shape资源
     *
     * @param rgb
     * @param corneradius
     * @return
     */
    public static GradientDrawable getDrawable(int rgb, int corneradius) {
        GradientDrawable gradientDrawable = new GradientDrawable();
        gradientDrawable.setColor(rgb);
        gradientDrawable.setGradientType(GradientDrawable.RECTANGLE);
        gradientDrawable.setCornerRadius(corneradius);
        gradientDrawable.setStroke(UIUtils.dp2px(1), rgb);
        return gradientDrawable;
    }
    public static StateListDrawable getSelector(Drawable normalDrawable,Drawable pressDrawable) {
        StateListDrawable stateListDrawable = new StateListDrawable();
        //给当前的颜色选择器添加选中图片指向状态,未选中图片指向状态
        stateListDrawable.addState(new int[]{android.R.attr.state_enabled, android.R.attr.state_pressed}, pressDrawable);
        stateListDrawable.addState(new int[]{android.R.attr.state_enabled}, normalDrawable);
        //设置默认状态
        stateListDrawable.addState(new int[]{}, normalDrawable);
        return stateListDrawable;
    }
}

  

运用

  int r = random.nextInt(210);
            int g = random.nextInt(210);
            int b = random.nextInt(210);
            tv.setBackground(
                    DrawableUtil.getSelector(DrawableUtil.getDrawable(Color.rgb(r, g, b), UIUtils.dp2px(5)),
                            DrawableUtil.getDrawable(Color.WHITE, UIUtils.dp2px(5))));

  

时间: 2024-10-26 14:48:45

通过代码定义shape/selector的相关文章

1.在写TextView 和ImageView 使用Selector切换字体颜色和图片的时候遇到定义的selector无效?

1.在写TextView 和ImageView 使用Selector切换字体颜色和图片的时候遇到定义的selector无效? 解决办法:textView字体颜色切换的selector最好写在res/color文件夹下,并且要在配置文件中添加clickable="true" ImageView的图片切换也是要添加这个属性.如果没有添加这个属性,在代码中为相应的textView 和ImageView设置相应的事件监听也可达到效果, 这里建议添加clickable="true&qu

在使用shape的同时,用代码修改shape的颜色属性

Android里面经常会使用shape来定制一些View的背景 可以修改View的背景颜色,形状等属性 一般情况下,shape都是在xml文件里面写死了,今天遇到一个需求,View的形状是圆角的,但是颜色是在代码里面设置的 最开始的思路是先在代码里给View设置颜色,再在shape里面设置solid属性为透明色 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="htt

iOS开发--xib自定义UIView,与IB 、 xib 、 代码 定义与初始化对比

一.自定义UIView 二.关于xib定义的view实例化,初始化. 三.使用IB VS xib  VS 使用代码定义与实例化

android实用技巧 - 用代码来实现selector

众所周知,android可以通过XML文件来创建selector,以Drawable对象的形式安装到组件上,以提供统一的风格设置.但是在某些时候,我们需要通过代码的形式来实现相同的功能,例如组件数量非常多,对应不同的图片,这时候如果还用XML的话就需要创建大量的selector文件,非常繁琐. 例如一个TextView使用了如下的selector <TextView         android:id="@+id/TextView_title"         android:

SharePoint 2013 图文开发系列之代码定义列表

原文:SharePoint 2013 图文开发系列之代码定义列表 在SharePoint的开发中,用Visual Studio自定义列表是经常会用到的,因为很多时候,我们并不会手动创建列表,而手动创建列表在测试服务器和正式机之间同步字段,也很麻烦,所以我们经常用代码来定义列表或者文档库. 尤其在工作流的开发中,我们经常会用到代码定义任务列表,或者历史记录列表,用来存储我们需要存储的相关数据.而在Visual Studio 2013中,定义列表也提供了模板,通过模板创建,我们很容易就可以定义需要的

c# 用代码定义带数据的datatable

DataTable customerTable = new DataTable(); customerTable.Columns.Add("clsCustomerID", typeof(string)); customerTable.Columns.Add("clsCustomerNM", typeof(string)); //定义列 DataRow row = customerTable.NewRow(); //新加一行 row["clsCustomer

WPF中通过代码定义模板

原文:WPF中通过代码定义模板 WPF中可以再XAML中定义模板,也可以通过C#代码定义模板,通过代码可能更清楚的看清其逻辑,而且代码的好处就是可以随时动态的去操作,而在XAML中定义的一般都是静态的. //控件呈现的显示内容1(这里为Image) FrameworkElementFactory fe = new FrameworkElementFactory(typeof(Image), "Image"); BitmapImage bi = new BitmapImage(); bi

代码设置Shape和Selector

开发中经常需要使用Shape和Selector,如果每个都用xml设置的话,会占用apk大小,同时命名多了也会混乱,使用代码来设置会方便很多. 需要用到2个类:GradientDrawable和StateListDrawable 相关API: setColor(rgb); //填充颜色setGradientType(GradientDrawable.RECTANGLE); //shape矩形setCornerRadius(radius); //四周圆角半径setStroke(1,strokenC

android自定义样式大全:shape,selector,layer-list,drawable,动画,style

原文:http://keeganlee.me/post/android/20150830 以下摘取了部分内容: shape 一般用shape定义的xml文件存放在drawable目录下,若项目没有该目录则新建一个,而不要将它放到drawable-hdpi等目录中.只需要在对应控件设置(bg_rectangle_with_stroke_dash.xml) android:background="@drawable/bg_rectangle_with_stroke_dash" 四种类型 使