Android实现倾斜角标样式的方法

  介绍

这篇文章给大家分享的是有关Android实现倾斜角标样式的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

<强>前言

最近产品有一个需求的是:要在一个距形卡片上做一个倾斜的标签,类似:

 Android实现倾斜角标样式的方法

(PS:不要注意那两毛三分的穷鬼),刚开始想着用界面切图就可以了嘛,但是是不可以的,在不同手机上分辨率是不同的,直接用图片适配肯定会有问题,所以打算自定义。

<强>实现思路

 Android实现倾斜角标样式的方法

额画图太丑了,这里解释一下:这里以左上角为例,我们可以把手机屏幕看成是一个直角坐标轴,我们要画一个斜角标示,只需要在我们的距形框内画一个正方形通过正方形的对角线(这里必须是正方形,这样可以控制x, y等距离),这样操控斜角标示长度只需要控制对角线长度通过路径方法来绘制路径,右边同理,我们也不需要过多计算,只需要通过移至方法移动坐标原点。

而绘制字体呢以对角线中心为坐标原点像左右绘制通过<代码>画布。旋转()设置字体倾斜于对角线平行。效果如下:

 Android实现倾斜角标样式的方法

核心代码

绘制背景色

case  TAG_LEFT:   ,,,,,,,path.lineTo (0,, mHeight);   ,,,,,,,path.lineTo (mWidth, 0);   ,,,,,,,休息;   ,,,,,case  TAG_Right:   ,,,,,,,path.lineTo (mWidth, 0);   ,,,,,,,path.lineTo (mHeight mWidth也);   ,,,,,,,休息;   ,,,,,case  TAG_LEFT_BOTTOM:   ,,,,,,,path.lineTo (mHeight mWidth也);   ,,,,,,,path.lineTo (0,, mHeight);   ,,,,,,,休息;   ,,,,,case  TAG_RIGHT_BOTTOM:   ,,,,,,,path.moveTo (0,, mHeight);//移动坐标原点位置   ,,,,,,,path.lineTo (mHeight mWidth也);   ,,,,,,,path.lineTo (mWidth, 0);   ,,,,,,,休息;   ,,,,,case  TAG_LEFT_BAR:   ,,,,,,,path.moveTo (mWidth, 0);   ,,,,,,,path.lineTo (0,, mHeight);   ,,,,,,,path.lineTo (0,, mHeight 作用;mySlantedHeight);   ,,,,,,,path.lineTo (mWidth 安康;mySlantedHeight,, 0);   ,,,,,,,休息;   ,,,,,case  TAG_RIGHT_BAR:   ,,,,,,,path.lineTo (mHeight mWidth也);   ,,,,,,,path.lineTo (mWidth, mHeight 作用;mySlantedHeight);   ,,,,,,,path.lineTo (mySlantedHeight, 0);   ,,,,,,,休息;   ,,,,,case  TAG_LEFT_BOTTOM_BAR:   ,,,,,,,path.lineTo (mHeight mWidth也);   ,,,,,,,path.lineTo (mWidth 安康;mySlantedHeight, mHeight);   ,,,,,,,path.lineTo (0,, mySlantedHeight);   ,,,,,,,休息;   ,,,,,case  TAG_RIGHT_BOTTOM_BAR:   ,,,,,,,path.moveTo (0,, mHeight);   ,,,,,,,path.lineTo (mHeight mySlantedHeight也);   ,,,,,,,path.lineTo (mySlantedHeight mWidth也);   ,,,,,,,path.lineTo (mWidth, 0);   ,,,,,,,打破;

通过计算绘制字体和角度,,,,,,,,,,,

, rect =, new 矩形(0,0,w, h);   ,,,,,,,rectF =, new  RectF(矩形);   ,,,,,,,rectF.right =, mTextPaint.measureText (myText, 0, myText.length ());   ,,,,,,,rectF.bottom =, mTextPaint.descent(),安康;mTextPaint.ascent();//提升:,字符顶部到基线的距离,血统:,字符底部到基线的距离   ,,,,,,,rectF.left  +=, (rect.width(),安康;rectF.right),/, 2.0 f;   ,,,,,,,rectF.top  +=, (rect.height(),安康;rectF.bottom),/, 2.0 f;   ,,,,,,,xy [0],=, rectF.left;   ,,,,,,,xy [1],=, rectF.top 作用;mTextPaint.ascent ();   ,,,,,,,xy [2],=, w /, 2;   ,,,,,,,xy [3],=, h /, 2;   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Android实现倾斜角标样式的方法