Android自定义View之比赛时间闪动效果

虽然很low,但是也是一种思路

效果

这里写图片描述

代码

上代码

public class TwinkleTextView extends TextView implements Runnable {

    /**
     * 是否显示
     */
    private boolean flag = true;
    /**
     * 闪动内容
     */
    private String twinkleText = "'";

    /**
     * 闪动时间
     */
    private int delayMillis = 500;


    private boolean run = false;

    public TwinkleTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public TwinkleTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public TwinkleTextView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    public void beginRun(){
        run = true;
        run();
    }

    @Override
    public void run() {
        if (flag){
            setVisibility(VISIBLE);
            flag = false;
        }else{
            setVisibility(INVISIBLE);
            flag = true;
        }
        postDelayed(this, delayMillis);
    }

    public String getTwinkleText() {
        return twinkleText;
    }

    public void setTwinkleText(String twinkleText) {
        this.twinkleText = twinkleText;
        setText(twinkleText);
    }

    public int getDelayMillis() {
        return delayMillis;
    }

    public void setDelayMillis(int delayMillis) {
        this.delayMillis = delayMillis;
    }

    public boolean isRun() {
        return run;
    }

    public void setRun(boolean run) {
        this.run = run;
    }

}

使用注意事项

我的RecyclerView框架是BRVAH

public class MyAdapter extends BaseQuickAdapter<User, BaseViewHolder> {
    public MyAdapter(int layoutResId, @Nullable List<User> data) {
        super(layoutResId, data);
    }

    @Override
    protected void convert(BaseViewHolder helper, User item) {
        TextView textView = helper.getView(R.id.text);
        textView.setText(helper.getAdapterPosition() + "");

        TwinkleTextView twinkleTextView = helper.getView(R.id.twinkle);
        twinkleTextView.setDelayMillis(500);
        if (!twinkleTextView.isRun()) {
            twinkleTextView.beginRun();
        }
    }
}

使用的时候一定要判断是否正在运行

if (!twinkleTextView.isRun()) {
    twinkleTextView.beginRun();
}
谢谢
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值