十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这期内容当中小编将会给大家带来有关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); 或直接在布局中
常用API
myBackgroundColor斜角背景颜色mySlantedHeight斜角高度myText字体展示tagModel样式模式共八种myTextSize字体大小myTextColor字体颜色
上述就是小编为大家分享的Android中怎么实现一个倾斜角标样式了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。