自制圓形文字ICON

序言

在最近的項(xiàng)目中,有一個(gè)地方有很多Item兔跌,但是沒有相應(yīng)的圖標(biāo)座享,于是和設(shè)計(jì)商量用彩色圓形和第一個(gè)文字作為圖標(biāo)。于是就寫了這個(gè)東西龄减。

效果

這里寫圖片描述

實(shí)現(xiàn)

通過繼承Drawable 使用的時(shí)候也很簡單如下

 ImageView.setImageDrawable(new ColorCircleDrawable("A",Color.RED));

比較麻煩的是文字居中
感謝博客 Android Canvas drawText實(shí)現(xiàn)中文垂直居中 幫我理清了思路

源碼

public class ColorCircleDrawable extends Drawable {
    String mTitle;
    Paint mPaint;
    int size;
    float titleSpace = 0.5f;
    Paint backgroundPaint;
    int cx, cy;
    private int radius;
    private int tx, ty;


    /**
     * 
     * @param title 標(biāo)題
     * @param color 背景色
     */
    public ColorCircleDrawable(String title, int color) {
        mTitle = title;
        mPaint = new Paint();
        mPaint.setAntiAlias(true);
        mPaint.setColor(Color.WHITE);
        //文字水平居中
        mPaint.setTextAlign(Paint.Align.CENTER);
        backgroundPaint = new Paint();
        backgroundPaint.setStyle(Paint.Style.FILL_AND_STROKE);
        backgroundPaint.setColor(color);
        backgroundPaint.setAntiAlias(true);

    }

    @Override
    public void draw(@NonNull Canvas canvas) {
        canvas.drawCircle(cx, cy, radius, backgroundPaint);
        //drawText中的项钮,x和文字的Paint的Align屬性有關(guān)
        //y是指文字baseLine的位置。
        canvas.drawText(mTitle, cx, ty, mPaint);
    }

    @Override
    protected void onBoundsChange(Rect bounds) {
        size = Math.min(bounds.height(), bounds.width());
        int textSize = (int) (size * titleSpace / mTitle.length());
        mPaint.setTextSize(textSize);
        radius = size / 2;
        cx = bounds.width() / 2;
        cy = bounds.height() / 2;
        //正確獲取字體的高度希停,在繪制的時(shí)候需要向上偏移fontMetricsInt.bottom
        Paint.FontMetricsInt fontMetricsInt = mPaint.getFontMetricsInt();
        int fontHeight = fontMetricsInt.bottom - fontMetricsInt.top;
        ty = cy + fontHeight / 2 - fontMetricsInt.bottom;
    }

    @Override
    public void setAlpha(@IntRange(from = 0, to = 255) int alpha) {

    }

    @Override
    public void setColorFilter(@Nullable ColorFilter colorFilter) {

    }

    @Override
    public int getOpacity() {
        return PixelFormat.OPAQUE;
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末烁巫,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子宠能,更是在濱河造成了極大的恐慌亚隙,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棍潘,死亡現(xiàn)場離奇詭異恃鞋,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)亦歉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門恤浪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肴楷,你說我怎么就攤上這事水由。” “怎么了赛蔫?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵砂客,是天一觀的道長。 經(jīng)常有香客問我呵恢,道長鞠值,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任渗钉,我火速辦了婚禮彤恶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鳄橘。我一直安慰自己声离,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布瘫怜。 她就那樣靜靜地躺著术徊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鲸湃。 梳的紋絲不亂的頭發(fā)上赠涮,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天子寓,我揣著相機(jī)與錄音,去河邊找鬼世囊。 笑死别瞭,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的株憾。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼晒衩,長吁一口氣:“原來是場噩夢啊……” “哼嗤瞎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起听系,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤贝奇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后靠胜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掉瞳,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年浪漠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了陕习。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,852評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡址愿,死狀恐怖该镣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情响谓,我是刑警寧澤损合,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站娘纷,受9級特大地震影響嫁审,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜赖晶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一律适、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧嬉探,春花似錦擦耀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至胎围,卻和暖如春吁系,著一層夾襖步出監(jiān)牢的瞬間德召,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工汽纤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留上岗,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓蕴坪,卻偏偏與公主長得像肴掷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子背传,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評論 2 361

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