drawText實(shí)現(xiàn)文字居中繪制

方法參數(shù)解讀

/**
 * Draw the text, with origin at (x,y), using the specified paint. The
 * origin is interpreted based on the Align setting in the paint.
 *
 * @param text  The text to be drawn
 * @param x     The x-coordinate of the origin of the text being drawn
 * @param y     The y-coordinate of the origin of the text being drawn
 * @param paint The paint used for the text (e.g. color, size, style)
 */
第二個(gè)參數(shù):baseLine 的 x值
第三個(gè)參數(shù):baseLine 的 y值
public void drawText(@NonNull String text, float x, float y, @NonNull Paint paint) {} 參數(shù)解讀

方法一

首先自己動(dòng)手做實(shí)驗(yàn)呀忧,自己定一個(gè)baseline泻蚊,然后把文字畫上去,再畫上FontMetrics的幾條線钞速。FontMetrics里是字體圖樣的信息贷掖,有float型int型的版本,都可以從Paint中獲取渴语。它的每個(gè)成員數(shù)值都是以baseline為基準(zhǔn)計(jì)算的苹威,所以負(fù)值表示在baseline之上。

Rect targetRect = new Rect(0, 0, getMeasuredWidth(), getMeasuredHeight());  //文字在 targetRect 居中
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setStrokeWidth(3);
paint.setTextSize(80);
String testString = "測(cè)試:ijkJQKA:1234";
paint.setColor(Color.BLACK);
canvas.drawRect(targetRect, paint);
paint.setColor(Color.RED);
Paint.FontMetricsInt fontMetrics = paint.getFontMetricsInt();
// 轉(zhuǎn)載請(qǐng)注明出處:http://blog.csdn.net/hursing
//int baseline = targetRect.centerY() - (fontMetrics.bottom + fontMetrics.top) / 2;一樣
int baseline = (targetRect.bottom + targetRect.top - fontMetrics.bottom - fontMetrics.top) / 2;
paint.setTextAlign(Paint.Align.CENTER); //注意,drawText 對(duì)應(yīng)改為傳入targetRect.centerX()
canvas.drawText(testString, targetRect.centerX(), baseline, paint);

核心代碼:

*寫法1
    paint.setTextAlign(Paint.Align.CENTER); //注意,drawText對(duì)應(yīng)改為傳入targetRect.centerX()
    canvas.drawText(testString, targetRect.centerX(), baseline, paint);
*寫法2
    Rect mTextRect = new Rect();
    paint.getTextBounds(testString, 0, testString.length(), mTextRect);
    int x = targetRect.centerX() - mTextRect.centerX();
    canvas.drawText(testString, x, baseline, paint);

方法二

  1. init 中通過制定的 Paint 對(duì)象計(jì)算 mTextBound
mBackPaint.setStyle(Style.FILL);
mBackPaint.setTextScaleX(2f);
mBackPaint.setColor(Color.BLACK);   // 繪畫字體的顏色
mBackPaint.setTextSize(30);
mBackPaint.getTextBounds(mText, 0, mText.length(), mTextBound);
  1. 在 onDraw 中
//控制好+-號(hào)驾凶, 計(jì)算width時(shí): 計(jì)算height時(shí):
canvas.drawText(mText, (getWidth() - mTextBound.width()) / 2
    ,(getHeight() + mTextBound.height()) / 2, mBackPaint);

參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末牙甫,一起剝皮案震驚了整個(gè)濱河市掷酗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌窟哺,老刑警劉巖泻轰,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異且轨,居然都是意外死亡浮声,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門旋奢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泳挥,“玉大人,你說我怎么就攤上這事至朗√敕” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵锹引,是天一觀的道長(zhǎng)矗钟。 經(jīng)常有香客問我,道長(zhǎng)嫌变,這世上最難降的妖魔是什么吨艇? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮初澎,結(jié)果婚禮上秸应,老公的妹妹穿的比我還像新娘。我一直安慰自己碑宴,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布桑谍。 她就那樣靜靜地躺著延柠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锣披。 梳的紋絲不亂的頭發(fā)上贞间,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音雹仿,去河邊找鬼增热。 笑死,一個(gè)胖子當(dāng)著我的面吹牛胧辽,可吹牛的內(nèi)容都是我干的峻仇。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼邑商,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼摄咆!你這毒婦竟也來了凡蚜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤吭从,失蹤者是張志新(化名)和其女友劉穎朝蜘,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涩金,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谱醇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了步做。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片副渴。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖辆床,靈堂內(nèi)的尸體忽然破棺而出佳晶,到底是詐尸還是另有隱情,我是刑警寧澤讼载,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布轿秧,位于F島的核電站,受9級(jí)特大地震影響咨堤,放射性物質(zhì)發(fā)生泄漏菇篡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一一喘、第九天 我趴在偏房一處隱蔽的房頂上張望驱还。 院中可真熱鬧,春花似錦凸克、人聲如沸议蟆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咐容。三九已至,卻和暖如春蚂维,著一層夾襖步出監(jiān)牢的瞬間戳粒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工虫啥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蔚约,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓涂籽,卻偏偏與公主長(zhǎng)得像苹祟,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 一苔咪、概述 1. 四線格與基線 小時(shí)候锰悼,我們?cè)趧傞_始學(xué)習(xí)寫字母時(shí),用的本子是四線格的团赏,我們必須把字母按照規(guī)則寫在四線...
    addapp閱讀 7,669評(píng)論 2 17
  • Android - Canvas 簡(jiǎn)單總結(jié): http://www.cnblogs.com/hwgt/p/5416...
    zhangdong0921閱讀 456評(píng)論 0 0
  • 婚姻對(duì)一個(gè)女生意味著什么箕般? 一個(gè)人生最好的歸宿,愛情的最完美的終站點(diǎn) 身邊那一對(duì) 曾經(jīng)的幸福的只有對(duì)方舔清,令我驚嘆愛...
    顏定閱讀 219評(píng)論 0 0
  • 我是誰(二) 生命的旅程一直向前行駛丝里,回眸過去,我們可以看到自己曾經(jīng)輕舞飛揚(yáng)体谒,看到自己曾經(jīng)熱淚盈眶杯聚,看到自己曾經(jīng)跌...
    許敏雅蘭閱讀 377評(píng)論 0 1
  • 感謝天,感謝地抒痒,感謝在玫瑰花開的季節(jié)下的那場(chǎng)玫瑰雨幌绍。 淅淅瀝瀝的小雨終于停了,我漫步走進(jìn)公園看到櫻桃花開了故响,粉紅粉...
    敕勒川云海峰閱讀 371評(píng)論 2 3