如何通过代码创建圆角矩形和图片背景选择器

原创 2015年11月20日 21:58:54

通过xml文件创建shape来实现圆角矩形以及在res/drawable目录下创建图片背景选择器的方式这里就不用介绍,这里主要介绍如何通过代码来生成shape图形,以及生成图片背景选择器.

效果图:


图片展示的是一个FlowLayout,里面的都是一个个的TextView,TextView的背景shape和选择器就是通过代码动态生成的.

1.生成Shape和Selector的工具类:

package com.example.mchenys.mygoogleplay.utils;

import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.StateListDrawable;

/**
 * Created by mChenys on 2015/11/20.
 */
public class DrawableUtils {
    /**
     * 创建Shape 圆角矩形
     *
     * @param color  背景颜色
     * @param radius 圆角半径
     * @return
     */
    public static GradientDrawable getGradientDrawable(int color, float radius) {
        GradientDrawable drawable = new GradientDrawable();
        //设置形状为矩形
        drawable.setGradientType(GradientDrawable.RECTANGLE);
        //设置圆角半径
        drawable.setCornerRadius(radius);
        //设置颜色
        drawable.setColor(color);
        return drawable;
    }

    /**
     * 获取图片背景选择器
     *
     * @param press  按下时的图片
     * @param normal 默认显示的图片
     * @return
     */
    public static StateListDrawable getDrawableSelector(Drawable press, Drawable normal) {
        StateListDrawable selector = new StateListDrawable();
        //按下时的图片
        selector.addState(new int[]{android.R.attr.state_pressed}, press);
        //默认图片
        selector.addState(new int[]{}, normal);
        return selector;
    }

    /**
     * 获取图片的背景选择器
     *
     * @param normalColor 默认的背景颜色
     * @param pressColor  按下时的背景颜色
     * @param radius      圆角矩形的半径
     * @return
     */
    public static StateListDrawable getDrawableSelector(int normalColor, int pressColor, float radius) {
        Drawable press = getGradientDrawable(pressColor, radius);
        Drawable normal = getGradientDrawable(normalColor, radius);
        return getDrawableSelector(press, normal);
    }
}


2.使用示例:

    Random random = new Random();
    for (int i = 0; i < mData.size(); i++) {
         TextView textView = new TextView(UIUtils.getContext());
         final String keyWord = mData.get(i);
         textView.setText(keyWord);
         //设置字体颜色
         textView.setTextColor(Color.WHITE);
         //设置字体大小和布局
         textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
         textView.setGravity(Gravity.CENTER);
         textView.setPadding(padding, padding, padding, padding);
         //创建随机颜色0-255
         int r = 30 + random.nextInt(210);//30-239
         int g = 30 + random.nextInt(210);
         int b = 30 + random.nextInt(210);
         //按下后的偏白的背景色
         int pressColor = 0xffcecece;
         //生成状态选择器
         StateListDrawable selector = DrawableUtils.getDrawableSelector(Color.rgb(r, g, b), pressColor, UIUtils.dip2px(6));
         textView.setBackgroundDrawable(selector);
         textView.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
                 Toast.makeText(UIUtils.getContext(), keyWord, Toast.LENGTH_SHORT).show();
             }
           });
          flowLayout.addView(textView);
    }



版权声明:本文为博主原创文章,未经博主允许不得转载。

css+div实现圆角矩形代码总结

  • chengzhaolu
  • chengzhaolu
  • 2010年01月05日 12:22
  • 849

背景选择器selector

/**  * 在res/drawable文件夹新增一个文件,此文件设置了图片的触发状态,你可以设置 state_pressed,state_checked,state_pressed,  * st...
  • yong199105140
  • yong199105140
  • 2012年12月24日 15:33
  • 2263

CSS做出圆角矩形

如何用CSS做出圆角矩形
  • adks9241
  • adks9241
  • 2017年05月29日 10:07
  • 259

css让图片变成圆角矩形 border-radius: 15px;

.wrapper img {border-radius: 15px;} border-radius:2em;等价于:border-top-left-radius:2em; border-top-rig...
  • forest_fire
  • forest_fire
  • 2016年03月21日 10:51
  • 3182

Android如何将一张图片裁成圆形/圆角矩形/特殊形状

总体思路如下: (1)使用canvas先画一层形状层,即最后是要图片裁剪成神马样的 (2)再将paint做如下设置(画两层则取上层和下层的交叉部分,显示上层) paint.setXf...
  • cb269267
  • cb269267
  • 2013年10月12日 16:57
  • 2710

用photoshop把图片剪裁成圆角矩形

1 打开图片 选择 路径 选择 圆角矩形工具 。 在图片上截出一个圆角矩形。 2 按ctrl+enter选中圆角矩形。 再按按ctrl+shift+i 反选。 3在你需要剪裁的图片那...
  • mmoooodd
  • mmoooodd
  • 2014年06月14日 09:39
  • 2227

使用代码动态创建Selector

代码如下第一步:创建:/** * Created by developer on 16/10/13. 动态创建Selector */public class CommonUtils { /*...
  • north1989
  • north1989
  • 2016年10月13日 13:18
  • 595

Android自定义圆角矩形图片ImageView

//自定义的圆形的ImageView类的实现代码如下:package com.xc.xcskin.view;import android.content.Context; import android...
  • codehxy
  • codehxy
  • 2016年07月02日 16:19
  • 1451

Canvas---Canvas版画图、圆角矩形、圆形、矩形、图形填充、mvc模式重新整合代码版

 使用Canvas实现画图程序。(转载注明出处与作者啊) 本次主要更新了一下功能: 新添加图形:矩形,圆形,圆角矩形 实现了描边颜色与填充颜色的选择 使用类似mvc的模式重新整理了代码。...
  • MIKUScallion
  • MIKUScallion
  • 2015年01月27日 15:08
  • 4255

android圆角矩形的实现

在res/drawable目录下穿件shape的xml来实现圆角矩形效果。代码如下:
  • u014600432
  • u014600432
  • 2014年11月24日 14:32
  • 1539
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何通过代码创建圆角矩形和图片背景选择器
举报原因:
原因补充:

(最多只允许输入30个字)