如何通过代码创建圆角矩形和图片背景选择器
来源:互联网 发布:阿里云英文缩写 编辑:程序博客网 时间:2024/04/30 05:57
通过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); }}
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); }
0 0
- 如何通过代码创建圆角矩形和图片背景选择器
- 工具类:通过shape来设置圆角矩形背景
- PS 如何制作 圆角矩形 图片
- PS如何制作圆角矩形图片
- 安卓如何设置控件的圆角矩形背景
- 同一个控件中实现背景选择器和图片选择器
- 定义圆角矩形背景
- android圆角矩形背景
- Glide加载图片显示圆形和圆角矩形图片
- android圆角矩形有背景颜色
- 345_圆角矩形背景
- View的圆背景以及圆角矩形背景
- 如何创建圆形头像和圆角图片
- 背景选择器之代码实现
- Android 代码实现背景选择器
- 如何通过自定义主题创建背景透明的activity
- android 图片转 圆形和圆角矩形
- android 图片转 圆形和圆角矩形
- ASP.NET-MVC4-06-ViewData-ViewBag
- 《算法竞赛入门经典2ndEdition 》--Chapter 2 习题解答(Page 34-35)
- 一步一步制作yaffs/yaffs2根文件系统(四)---构建etc、dev等剩余目录
- 创建多线程的第二种方法
- 一步一步制作yaffs/yaffs2根文件系统(五)---生成yaffs/yaffs2镜像文件及下载到开发板
- 如何通过代码创建圆角矩形和图片背景选择器
- linux根文件系统/etc/group文件详解
- modal
- 河狸家:Redis 源码的深度剖析
- 1007. 素数对猜想 (20)
- 索引
- Java访问修饰符总结
- llinux根文件系统/etc/passwd文件详解
- Struts2的namespace+路径问题