您的位置:首页 > 其它

自定义View之自定义按键圆角边框背景添加点击效果

2017-06-26 15:51 645 查看
自定义View之自定义按键圆角边框背景添加点击效果

设置边框可以参考前一篇博客

添加后效果如图



1、新添加了几个属性

<!-- 点击状态 -->
<attr name="isChick" format="boolean"/>

<!--点击后背景颜色-->
<attr name="clickedBgColor" format="color"/>
<!--点击后边框颜色-->
<attr name="clickedCornerRadiusColor" format="color"/>
<!--点击后字体颜色-->
<attr name="clickedTextColor" format="color"/>


相应的效果如注释

2、在定义控件中获取设置的属性

isChick = typedArray.getBoolean(R.styleable.BgButton_isChick, false);

clickedBgColor = typedArray.getColor(R.styleable.BgButton_clickedBgColor, -1);
clickedCornerRadiusColor = typedArray.getColor(R.styleable.BgButton_clickedCornerRadiusColor, -1);
textColor = getCurrentTextColor();
clickedTextColor = typedArray.getColor(R.styleable.BgButton_clickedTextColor, -1);


3、在设置点击效果的时候其实主要是用不同颜色的画笔进行绘制控件

if (borderWidth > 0 && borderColor != 0) {
paintBorder = new Paint();
if (isChick) {
paintBorder.setColor(clickedCornerRadiusColor);
} else {
paintBorder.setColor(borderColor);
}
paintBorder.setStyle(Paint.Style.STROKE);
paintBorder.setStrokeWidth(borderWidth);
paintBorder.setAntiAlias(true);
}
paintBg = new Paint();
if (isChick) {
paintBg.setColor(clickedBgColor);
setTextColor(clickedTextColor);
} else {
paintBg.setColor(bgColor);
setTextColor(textColor);
}
paintBg.setAntiAlias(true);
paintBg.setStyle(Paint.Style.FILL);

4、对点击效果后进行重新绘制
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
isChick = !isChick;
drawBackgroud(isChick);
}
return super.onTouchEvent(event);
}

private void drawBackgroud(boolean b) {
if (b) {
paintBg.setColor(clickedBgColor);
if (borderWidth > 0 && borderColor != 0) {
paintBorder.setColor(clickedCornerRadiusColor);
}
setTextColor(clickedTextColor);
} else {
paintBg.setColor(bgColor);
if (borderWidth > 0 && borderColor != 0) {
paintBorder.setColor(borderColor);
}
setTextColor(textColor);
}
invalidate();
}

最后GitHub链接和使用方法:https://github.com/cc0819/BgButton
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: