使用shape作为view的背景很灵活,一般可以通过创建xml来实现,但是如果样式过多,那么相应的xml文件也多,不好维护,这里介绍使用代码在创建shape背景,个人感觉很方便
以TextView为例
public class ShapeTextView extends TextView { private Context context; private GradientDrawable gradientDrawable; /** * @param context * @param attrs */ public ShapeTextView(Context context,AttributeSet attrs) { super(context,attrs); this.context = context; gradientDrawable = new GradientDrawable(); } public GradientDrawable getGradientDrawable() { return gradientDrawable; } /** * 设置背景色 * * @param color */ @SuppressWarnings("deprecation") public void setColor(int color) { gradientDrawable.setColor(color); setBackgroundDrawable(gradientDrawable); } /** * 设置圆角弧度 * * @param radius */ @SuppressWarnings("deprecation") public void setCornerRadius(float radius) { gradientDrawable.setCornerRadius(radius); setBackgroundDrawable(gradientDrawable); } /** * 设置边框宽度和颜色 * * @param width * @param color */ @SuppressWarnings("deprecation") public void setStroke(int width,int color) { gradientDrawable.setStroke(width,color); setBackgroundDrawable(gradientDrawable); } /** * 设置背景样式 * * @param bgcolor * 背景颜色 * @param radius * 圆角弧度 * @param strokewidth * 边框宽度 * @param strokecolor * 边框颜色 */ @SuppressWarnings("deprecation") public void setShape(int bgcolor,float radius,int strokewidth, int strokecolor) { gradientDrawable.setColor(bgcolor); gradientDrawable.setCornerRadius(radius); gradientDrawable.setStroke(strokewidth,strokecolor); setBackgroundDrawable(gradientDrawable); } }
主要通过构建GradientDrawable,并设置背景颜色、圆角弧度、边框宽度,边框颜色等属性
代码很简单,样式都能看懂
其他类型的源码(包括通过代码设置属性与自定义属性,并在xml中配置)
http://download.csdn.net/detail/dianqiugg/6755919 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|