简介
有些时候,当我们自定义View时,写好代码,总有那么一些地方会出现问题,而且有些问题可能就是一行代码的事情,但是通过百度,google却很难搜索到我们想要的答案,积累遇到的问题,再遇到时能够快速解决。
征集
如果你也有相同的经历,希望你能在评论区留言,大家互相学习,讨论,谢谢
TextView系列
- 继承TextView实现绘制圆角背景,边框等效果
有些时候,我们需要不同圆角背景的TextView文本,带边框的文本,如果通过写xml文件,你会发现既繁琐又会新建很多xml文件,所以可以通过继承TextView来优化这一过程。
发现在绘制边框的时候,文本边框会出现绘制不全,圆角也不圆滑,线条也会出现断开的感觉,或者线条特别细。
绘制边框的时候加上2.5的偏移,至于为什么,自己可以去查看TextView的源码
关键代码
mRectF.set(2.5f, 2.5f, getWidth() - 2.5f, getHeight() - 2.5f);
@Override
protected void onDraw(Canvas canvas) {
mRectF.set(2.5f, 2.5f, getWidth() - 2.5f, getHeight() - 2.5f);
if (mIsDrawRadius) {
mPaint.reset();
mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
mPaint.setColor(mBgColor);
mPaint.setStyle(Style.FILL);
canvas.drawRoundRect(mRectF, mRadius, mRadius, mPaint);
}
if (mIsDrawStroke) {
mPaint.reset();
mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
mPaint.setStrokeWidth(mStrokeWidth);
mPaint.setColor(mStrokeColor);
mPaint.setStyle(Style.STROKE);
canvas.drawRoundRect(mRectF, mRadius, mRadius, mPaint);
}
super.onDraw(canvas);
}
网友评论