【Android自定义View】- 被忽视的细节点总结

简介

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

征集

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

TextView系列

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

《【Android自定义View】- 被忽视的细节点总结》发现在绘制边框的时候,文本边框会出现绘制不全,圆角也不圆滑,线条也会出现断开的感觉,或者线条特别细。
《【Android自定义View】- 被忽视的细节点总结》绘制边框的时候加上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);

    }
    原文作者:奔跑的平头哥
    原文地址: https://www.jianshu.com/p/a8a832ad264a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞