美文网首页Android技术知识Android学习之旅Android进阶之路
[Android自定义View] - 被忽视的细节点总结

[Android自定义View] - 被忽视的细节点总结

作者: 拔萝卜占坑 | 来源:发表于2019-02-17 16:28 被阅读14次

简介

有些时候,当我们自定义View时,写好代码,总有那么一些地方会出现问题,而且有些问题可能就是一行代码的事情,但是通过百度,google却很难搜索到我们想要的答案,积累遇到的问题,再遇到时能够快速解决。

征集

如果你也有相同的经历,希望你能在评论区留言,大家互相学习,讨论,谢谢

TextView系列

  • 继承TextView实现绘制圆角背景,边框等效果
    有些时候,我们需要不同圆角背景的TextView文本,带边框的文本,如果通过写xml文件,你会发现既繁琐又会新建很多xml文件,所以可以通过继承TextView来优化这一过程。

\color{red}{问题:}发现在绘制边框的时候,文本边框会出现绘制不全,圆角也不圆滑,线条也会出现断开的感觉,或者线条特别细。
\color{red}{解决方案:}绘制边框的时候加上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);

    }

相关文章

网友评论

    本文标题:[Android自定义View] - 被忽视的细节点总结

    本文链接:https://www.haomeiwen.com/subject/bsbgeqtx.html