第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

使用自定義布局模仿下雨(只是小線條~)

標(biāo)簽:
Android

public abstract class BaseView extends View {

private Thread thread;

public BaseView(Context context, AttributeSet attrs) {
    super(context, attrs);

}

public BaseView(Context context) {
    super(context);
}

protected abstract void drawSub(Canvas canvas);

protected abstract void logic();

protected abstract void init();

@Override
protected void onDraw(Canvas canvas) {
    if (thread == null) {
        thread = new MyThread();
        thread.start();
    } else {
        drawSub(canvas);
    }
}

@Override
protected void onDetachedFromWindow() {
    running = false;
    super.onDetachedFromWindow();
}

private boolean running = true;

class MyThread extends Thread {
    @Override
    public void run() {
        init();
        while (running) {
            logic();
            postInvalidate();
            try {
                Thread.sleep(30);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

}

public RainItem(int width, int height) {
this.width = width;
this.height = height;
init();
}

public RainItem(int width, int height, int size) {
    this.width = width;
    this.height = height;
    this.size = size;
    init();
}

public RainItem(int width, int height, int size, int color) {
    this.width = width;
    this.height = height;
    this.size = size;
    this.color = color;
    init();
}

public RainItem(int width, int height, int size, int color,
        boolean randColor) {
    this.width = width;
    this.height = height;
    this.size = size;
    this.color = color;
    this.randColor = randColor;
    init();
}

private void init() {
    random = new Random();
    sizeX = 1 + random.nextInt(size / 2);
    sizeY = 10 + random.nextInt(size);
    startX = random.nextInt(width);
    startY = random.nextInt(height);
    stopX = startX + sizeX;
    stopY = startY + sizeY;
    opt = 0.2f + random.nextFloat();
    paint = new Paint();
    if (randColor) {

        int r = random.nextInt(256);
        int g = random.nextInt(256);
        int b = random.nextInt(256);
        paint.setARGB(255, r, g, b);
    } else {
        paint.setColor(0xffffffff);
    }
}

public void draw(Canvas canvas) {
    canvas.drawLine(startX, startY, stopX, stopY, paint);
}

public void move() {
    startX += sizeX * opt;
    stopX += sizeX * opt;

    startY += sizeY * opt;
    stopY += sizeY * opt;
    if (startY > height) {
        init();
    }
}

public RainView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray ta = context.obtainStyledAttributes(attrs,
R.styleable.RainView);
rainNum = ta.getInteger(R.styleable.RainView_rainNum, 80);
size = ta.getInteger(R.styleable.RainView_size, 20);
rainColor = ta.getInteger(R.styleable.RainView_rainColor, 0xffffff);
randColor = ta.getBoolean(R.styleable.RainView_randColor, false);
ta.recycle();
}

public RainView(Context context) {
    super(context);
}

@Override
protected void drawSub(Canvas canvas) {
    for (RainItem item : list) {
        item.draw(canvas);
    }
}

@Override
protected void logic() {
    for (RainItem item : list) {
        item.move();
    }
}

@Override
protected void init() {
    for (int i = 0; i < rainNum; i++) {
        RainItem item = new RainItem(getWidth(), getHeight(), size);
        list.add(item);
    }
}
點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
移動(dòng)開(kāi)發(fā)工程師
手記
粉絲
4
獲贊與收藏
155

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消