自定义TextView设置边框与背景颜色添加点击事件,点击更改随机数与背景

本文介绍如何创建一个自定义的TextView,设置其边框和背景颜色,并添加点击事件,使得每次点击后文本显示随机数并改变背景颜色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MyTextView

public class MyTextView extends android.support.v7.widget.AppCompatTextView {

    /**
     * 需要绘制的文字
     */
    private String mText;
    /**
     * 文本的颜色
     */
    private int mTextColor;
    /**
     * 文本的大小
     */
    private int mTextSize = 10;
    /**
     * 绘制时控制文本绘制的范围
     */
    private Paint mPaint;

    private Paint mPaintIn;
    public MyTextView(Context context) {
        super(context);
        init();
    }

    public MyTextView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public MyTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        //边框颜色
        canvas.drawRect(new Rect(0, 0, getMeasuredWidth(), getMeasuredHeight()), mPaintIn);
        //绘画文本
        canvas.drawText(mText, 0, 100, mPaint);
    }

    private void init() {
        //初始化
        mText = "4546";
        mTextSize = 100;
        mTextColor = Color.BLACK;

        //文本的画笔
        mPaint = new Paint();
        mPaint.setColor(mTextColor);
        mPaint.setAntiAlias(true);
        mPaint.setTextSize(mTextSize);


        this.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

                mText = randomText();

                String color = randomColor();
                mPaintIn.setColor(Color.parseColor("#F"+color));
                invalidate();
            }
        });

        //边框背景颜色的画笔
        mPaintIn = new Paint();
        mPaintIn.setAntiAlias(true);
        mPaintIn.setDither(true);
        mPaintIn.setStyle(Paint.Style.FILL);
        mPaintIn.setColor(getResources().getColor(R.color.colorPrimary));

    }

    //随机数
    private String randomText() {
        Random random = new Random();
        Set<Integer> set = new HashSet<Integer>();
        while (set.size() < 4) {
            int randomInt = random.nextInt(10);
            set.add(randomInt);
        }
        StringBuffer sb = new StringBuffer();
        for (Integer i : set) {
            sb.append("" + i);
        }

        return sb.toString();
    }

    //设置颜色的随机数
    private String randomColor() {
        Random random = new Random();
        Set<Integer> set = new HashSet<Integer>();
        while (set.size() < 5) {
            int randomInt = random.nextInt(10);
            set.add(randomInt);
        }
        StringBuffer sb = new StringBuffer();
        for (Integer i : set) {
            sb.append("" + i);
        }

        return sb.toString();
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值