自定义shape的view,不用配置xml

使用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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值