Android MarkTipsView文字標(biāo)識控件使用方法
本文實(shí)例為大家分享了Android MarkTipsView文字標(biāo)識控件的具體代碼,供大家參考,具體內(nèi)容如下
效果預(yù)覽
使用方式跟TextView使用方式一樣,背景設(shè)置直接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標(biāo)注 */public class MarkTipsView extends AppCompatTextView { /** * 畫筆 */ private Paint paint; /** * 寬度 */ private int width; /** * 高度 */ private int height; /** * 標(biāo)識寬度 */ private int markWidth = 12; /** * 標(biāo)識高度 */ 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(); } @Override public void setBackgroundColor(int color) {solid = color;invalidate(); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);width = getMeasuredWidth();height = getMeasuredHeight(); } @Override protected void onFinishInflate() {super.onFinishInflate();setPadding(getPaddingLeft(), getPaddingTop(), getPaddingRight(), getPaddingBottom() + markHeight); } @Override protected 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()); } /** * 獲取底部標(biāo)識箭頭高度 * @return */ public int getMarkHeight() {return markHeight; } /** * 設(shè)置底部標(biāo)識箭頭高度 * @param markHeight */ public void setMarkHeight(int markHeight) {this.markHeight = markHeight;invalidate(); } /** * 獲取底部標(biāo)識箭頭寬度 * @return */ public int getMarkWidth() {return markWidth; } /** * 設(shè)置底部標(biāo)識箭頭寬度 * @param markWidth */ public void setMarkWidth(int markWidth) {this.markWidth = markWidth;invalidate(); } /** * 獲取圓角大小 * @return */ public float getRadius() {return radius; } /** * 設(shè)置圓角大小 * @param radius */ public void setRadius(float radius) {this.radius = radius;invalidate(); }}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. python實(shí)現(xiàn)讀取類別頻數(shù)數(shù)據(jù)畫水平條形圖案例2. python中PyQuery庫用法分享3. python操作數(shù)據(jù)庫獲取結(jié)果之fetchone和fetchall的區(qū)別說明4. python 爬取嗶哩嗶哩up主信息和投稿視頻5. php使用正則驗(yàn)證密碼字段的復(fù)雜強(qiáng)度原理詳細(xì)講解 原創(chuàng)6. AJAX實(shí)現(xiàn)數(shù)據(jù)的增刪改查操作詳解【java后臺】7. 關(guān)于HTML5的img標(biāo)簽8. php5.6不能擴(kuò)展redis.so的解決方法9. ASP.NET MVC前臺動態(tài)添加文本框并在后臺使用FormCollection接收值10. CSS3實(shí)現(xiàn)動態(tài)翻牌效果 仿百度貼吧3D翻牌一次動畫特效
