Android|Android MarkTipsView文字标识控件使用方法
本文实例为大家分享了Android MarkTipsView文字标识控件的具体代码,供大家参考,具体内容如下
效果预览
文章图片
使用
使用方式跟TextView使用方式一样,背景设置直接setBackgroundColor
源码:
import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.graphics.RectF; import android.util.AttributeSet; import androidx.appcompat.widget.AppCompatTextView; /** * 绘制mark标注 */public class MarkTipsView extends AppCompatTextView {/*** 画笔*/private Paint paint; /*** 宽度*/private int width; /*** 高度*/private int height; /*** 标识宽度*/private int markWidth = 12; /*** 标识高度*/private int markHeight = 12; /*** 圆角大小*/private float radius = 10; /*** 填充颜色*/private int solid = Color.parseColor("#F1AA44"); public MarkTipsView(Context context) {super(context); initAttributeSet(context, null); }public MarkTipsView(Context context, AttributeSet attrs) {super(context, attrs); initAttributeSet(context, attrs); }public MarkTipsView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr); initAttributeSet(context, attrs); }private void initAttributeSet(Context context, AttributeSet attrs) {paint = new Paint(); paint.setDither(true); paint.setAntiAlias(true); paint.setStyle(Paint.Style.FILL); TypedArray array = context.obtainStyledAttributes(attrs,new int[]{android.R.attr.background}); solid =array.getInt(0,solid); array.recycle(); }@Overridepublic void setBackgroundColor(int color) {solid = color; invalidate(); }@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec); width = getMeasuredWidth(); height = getMeasuredHeight(); }@Overrideprotected void onFinishInflate() {super.onFinishInflate(); setPadding(getPaddingLeft(), getPaddingTop(), getPaddingRight(), getPaddingBottom() + markHeight); }@Overrideprotected void onDraw(Canvas canvas) {paint.setColor(solid); //矩形Path path = new Path(); RectF rect = new RectF(0, 0, width, height - markHeight); path.addRoundRect(rect, radius, radius, Path.Direction.CCW); //三角形Path onePath = new Path(); onePath.lineTo(width / 2 - markWidth, rect.height()); onePath.lineTo(width / 2, height); onePath.lineTo(width / 2 + markWidth, rect.height()); onePath.close(); path.addPath(onePath); //绘制路径canvas.drawPath(path, paint); super.onDraw(canvas); //重绘文字setText(getText()); }/*** 获取底部标识箭头高度* @return*/public int getMarkHeight() {return markHeight; }/*** 设置底部标识箭头高度* @param markHeight*/public void setMarkHeight(int markHeight) {this.markHeight = markHeight; invalidate(); }/*** 获取底部标识箭头宽度* @return*/public int getMarkWidth() {return markWidth; }/*** 设置底部标识箭头宽度* @param markWidth*/public void setMarkWidth(int markWidth) {this.markWidth = markWidth; invalidate(); }/*** 获取圆角大小* @return*/public float getRadius() {return radius; }/*** 设置圆角大小* @param radius*/public void setRadius(float radius) {this.radius = radius; invalidate(); }}
【Android|Android MarkTipsView文字标识控件使用方法】以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读
- android第三方框架(五)ButterKnife
- Android中的AES加密-下
- 带有Hilt的Android上的依赖注入
- android|android studio中ndk的使用
- 时光,是行走在文字里的眷恋
- Android事件传递源码分析
- 罗塞塔石碑的意义(古埃及文字的起源,圣书体文字是如何被破解的)
- RxJava|RxJava 在Android项目中的使用(一)
- Android7.0|Android7.0 第三方应用无法访问私有库
- 深入理解|深入理解 Android 9.0 Crash 机制(二)