温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android中怎么实现一个倾斜角标样式

发布时间:2021-07-27 18:14:48 来源:亿速云 阅读:141 作者:Leah 栏目:编程语言

这期内容当中小编将会给大家带来有关Android中怎么实现一个倾斜角标样式,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

实现思路

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

而绘制字体呢以对角线中心为坐标原点像左右绘制通过canvas.rotate()设置字体倾斜于对角线平行。效果如下:

核心代码

绘制背景色

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);//移动坐标原点位置        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;

通过计算绘制字体和角度

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;        //设置字体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);        或直接在布局中        <com.example.mylibrary.mySlantedTextView          android:layout_width="80dp"          android:layout_height="80dp"          android:layout_alignParentTop="true"          android:layout_alignParentRight="true"          app:myBackgroundColor="#667fff"          app:mySlantedHeight="30dp"          app:myText="热卖中"          app:myTextColor="#ffffff"          app:myTextSize="16sp"          app:tagModel="right_bar" />

常用API

myBackgroundColor斜角背景颜色mySlantedHeight斜角高度myText字体展示tagModel样式模式共八种myTextSize字体大小myTextColor字体颜色

上述就是小编为大家分享的Android中怎么实现一个倾斜角标样式了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI