[Android自定義View] - 被忽視的細節點總結
簡介
有些時候,當我們自定義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); }