欢迎光临
我们一直在努力

直播源码网站,消息图标在收到消息时展示消息条数

直播源码网站,消息图标在收到消息时展示消息条数实现的相关代码

 

    <YourPackgaename.NumberImageView
        android:layout_width="wrap_content"
        android:layout_height="45dp"
        android:paddingHorizontal="20dp"
        android:layout_marginVertical="10dp"
        android:src="@mipmap/ic_shop_sign"
        app:number="15"
        app:numberMarginRight="18dp"
        app:numberTextSize="12sp" />

1.attrs.xml

 


    <attr name="numbersTextSize" format="dimension|reference" />
    <attr name="numberMarginTop" format="dimension|reference" />
    <attr name="numberMarginRight" format="dimension|reference" />
    <attr name="number" format="string|reference" />
    <attr name="numberTextColor" format="color|reference" />
    <attr name="numberTextSize" format="dimension|reference" />
    <attr name="numberSolidColor" format="color|reference" />
    <declare-styleable name="NumberImageView">
        <attr name="numberMarginTop" />
        <attr name="numberMarginRight" />
        <attr name="numberSolidColor" />
        <attr name="numberTextColor" />
        <attr name="numberTextSize" />
        <attr name="number" />
    </declare-styleable>

 

 

2.代码

 


import android.content.context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.RectF;
import android.support.v7.widget.AppCompatImageView;
import android.support.v7.widget.AppCompatTextView;
import android.text.TextUtils;
import android.util.AttributeSet;
/**
 * 圆点数字 + 文字
 */
public class NumberTextView extends AppCompatTextView {
    private Paint paint;
    //圆点文字
    private String text = "0";
    //圆点文字大小
    private int textSize = 16;
    //圆点文字颜色
    private int textColor = Color.WHITE;
    //圆点颜色
    private int solidColor = Color.RED;
    //圆点半径大小
    private int radius = 18;
    //圆点文字上间距
    private int textMarginTop = 10;
    //圆点文字下间距
    private int textMarginRight = 10;
    public NumberTextView(Context context) {
        super(context);
        initAttributeSet(context, null);
    }
    public NumberTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        initAttributeSet(context, attrs);
    }
    public NumberTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initAttributeSet(context, attrs);
    }
    private void initAttributeSet(Context context, AttributeSet attrs) {
        if (attrs != null) {
            TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.NumberTextView);
            text = array.getString(R.styleable.NumberTextView_number);
            text = TextUtils.isEmpty(text) ? "0" : text;
            textSize = array.getDimensionPixelSize(R.styleable.NumberTextView_numberTextSize, textSize);
            textColor = array.getColor(R.styleable.NumberTextView_numberTextColor, textColor);
            solidColor = array.getColor(R.styleable.NumberTextView_numberSolidColor, solidColor);
            textMarginTop = array.getDimensionPixelSize(R.styleable.NumberTextView_numberMarginTop, textMarginTop);
            textMarginRight = array.getDimensionPixelSize(R.styleable.NumberTextView_numberMarginRight, textMarginRight);
        }
    }
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        if (text.equals("0")) {
            return;
        }
        paint = new Paint();
        paint.setAntiAlias(true);
        //圆点背景
        paint.setColor(solidColor);
        int textSpace = 0;
        if (text.length() > 2) {
            textSpace = (text.length() - 2) * textSize / 2;
        }
        int cx = getMeasuredWidth() - radius - textSpace - textMarginRight;
        int cy = radius + textMarginTop;
        paint.setStyle(Paint.Style.FILL);
        RectF rectF = new RectF(cx - radius - textSpace, cy - radius, cx + radius + textSpace, cy + radius);
        canvas.drawRoundRect(rectF, radius, radius, paint);
        //文字
        paint = new Paint();
        paint.setAntiAlias(true);
        paint.setColor(textColor);
        paint.setTextSize(textSize);
        Rect rect = new Rect();
        paint.getTextBounds(text, 0, text.length(), rect);
        canvas.drawText(text, cx - rect.width() / 2, cy + rect.height() / 2, paint);
    }
    /**
     * 设置文字
     *
     * @param text
     */
    public void setText(String text) {
        this.text = text;
        invalidate();
    }
    /**
     * 设置文字大小
     *
     * @param textSize
     */
    public void setTextSize(int textSize) {
        this.textSize = textSize;
        invalidate();
    }
    /**
     * 设置颜色
     *
     * @param solidColor
     */
    public void setSolidColor(int solidColor) {
        this.solidColor = solidColor;
        invalidate();
    }
    /**
     * 设置圆点半径
     *
     * @param radius
     */
    public void setRadius(int radius) {
        this.radius = radius;
        invalidate();
    }
}

 

以上就是直播源码网站,消息图标在收到消息时展示消息条数实现的相关代码, 更多内容欢迎关注之后的文章

 

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《直播源码网站,消息图标在收到消息时展示消息条数》
文章链接:https://www.456zj.com/9506.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址