真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android實(shí)現(xiàn)傾斜角標(biāo)樣式的方法

這篇文章給大家分享的是有關(guān)Android實(shí)現(xiàn)傾斜角標(biāo)樣式的方法的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

在伊美等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)整合營(yíng)銷推廣,成都外貿(mào)網(wǎng)站建設(shè),伊美網(wǎng)站建設(shè)費(fèi)用合理。

前言

最近產(chǎn)品有一個(gè)需求是:要在一個(gè)距形卡片上做一個(gè)傾斜的Tag,類似:

Android實(shí)現(xiàn)傾斜角標(biāo)樣式的方法

(PS:不要注意那兩毛三分的窮鬼),剛開始想著用UI切圖就可以了嘛,but是不可以的,在不同手機(jī)上分辨率是不同的,直接用圖片適配肯定會(huì)有問(wèn)題,所以打算自定義。

實(shí)現(xiàn)思路

Android實(shí)現(xiàn)傾斜角標(biāo)樣式的方法

額畫圖太丑了,這里解釋一下:這里以左上角為例,我們可以把手機(jī)屏幕看成是一個(gè)直角坐標(biāo)軸,我們要畫一個(gè)斜角標(biāo)示,只需要在我們的距形框內(nèi)畫一個(gè)正方形通過(guò)正方形的對(duì)角線(這里必須是正方形,這樣可以控制x,y等距離),這樣操控斜角標(biāo)示長(zhǎng)度只需要控制對(duì)角線長(zhǎng)度通過(guò)path方法來(lái)繪制路徑,右邊同理,我們也不需要過(guò)多計(jì)算,只需要通過(guò)moveTo方法移動(dòng)坐標(biāo)原點(diǎn)。

而繪制字體呢以對(duì)角線中心為坐標(biāo)原點(diǎn)像左右繪制通過(guò)canvas.rotate()設(shè)置字體傾斜于對(duì)角線平行。效果如下:

Android實(shí)現(xiàn)傾斜角標(biāo)樣式的方法

核心代碼

繪制背景色

case TAG_LEFT:
        path.lineTo(0, mHeight);
        path.lineTo(mWidth, 0);
        break;
      case TAG_Right:
        path.lineTo(mWidth, 0);
        path.lineTo(mWidth, mHeight);
        break;
      case TAG_LEFT_BOTTOM:
        path.lineTo(mWidth, mHeight);
        path.lineTo(0, mHeight);
        break;
      case TAG_RIGHT_BOTTOM:
        path.moveTo(0, mHeight);//移動(dòng)坐標(biāo)原點(diǎn)位置
        path.lineTo(mWidth, mHeight);
        path.lineTo(mWidth, 0);
        break;
      case TAG_LEFT_BAR:
        path.moveTo(mWidth, 0);
        path.lineTo(0, mHeight);
        path.lineTo(0, mHeight - mySlantedHeight);
        path.lineTo(mWidth - mySlantedHeight, 0);
        break;
      case TAG_RIGHT_BAR:
        path.lineTo(mWidth, mHeight);
        path.lineTo(mWidth, mHeight - mySlantedHeight);
        path.lineTo(mySlantedHeight, 0);
        break;
      case TAG_LEFT_BOTTOM_BAR:
        path.lineTo(mWidth, mHeight);
        path.lineTo(mWidth - mySlantedHeight, mHeight);
        path.lineTo(0, mySlantedHeight);
        break;
      case TAG_RIGHT_BOTTOM_BAR:
        path.moveTo(0, mHeight);
        path.lineTo(mySlantedHeight, mHeight);
        path.lineTo(mWidth, mySlantedHeight);
        path.lineTo(mWidth, 0);
        break;

通過(guò)計(jì)算繪制字體和角度           

 rect = new Rect(0, 0, w, h);
        rectF = new RectF(rect);
        rectF.right = mTextPaint.measureText(myText, 0, myText.length());
        rectF.bottom = mTextPaint.descent() - mTextPaint.ascent();//Ascent: 字符頂部到baseLine的距離 Descent: 字符底部到baseLine的距離
        rectF.left += (rect.width() - rectF.right) / 2.0f;
        rectF.top += (rect.height() - rectF.bottom) / 2.0f;
        xy[0] = rectF.left;
        xy[1] = rectF.top - mTextPaint.ascent();
        xy[2] = w / 2;
        xy[3] = h / 2;
        xy[4] = -ROTATE_ANGLE;
        //設(shè)置字體
canvas.rotate(angle, centerX, centerY);
    canvas.drawText(myText, toX, toY + PADDING_TOP, mTextPaint);

使用方法

 testView.setText("打折中")
        .setMode(TAG_LEFT_BAR)
        .setBackground(Color.parseColor("#ff6677"))
        .setTextColor(Color.parseColor("#000000"))
        .setSlantedHeight(50)
        .setTextSize(29);
        或直接在布局中
        

常用API

API名稱介紹
myBackgroundColor斜角背景顏色
mySlantedHeight斜角高度
myText字體展示
tagModel樣式模式共八種
myTextSize字體大小
myTextColor字體顏色

感謝各位的閱讀!關(guān)于“Android實(shí)現(xiàn)傾斜角標(biāo)樣式的方法”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!


網(wǎng)頁(yè)標(biāo)題:Android實(shí)現(xiàn)傾斜角標(biāo)樣式的方法
本文地址:http://weahome.cn/article/jseios.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部