自定义控件之——音频图

package com.example.zhuang.tiaoxing;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.graphics.Shader;
import android.util.AttributeSet;
import android.view.View;



public class VolumeView extends View{

    private int mWidth;//屏幕宽
    private int mRectWidth;//矩形宽高
    private int mRectHeight;
    private Paint mPaint;
    private int mRectCount;//矩形数量
    private int offset = 5;//矩形之间空隙
    private double mRandom;
    private LinearGradient mLinearGradient;

    public VolumeView(Context context) {
        super(context);
        initView();
    }

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

    public VolumeView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initView();
    }
//初始化布局的时候,先生成画笔
    private void initView() {
        mPaint = new Paint();
        mPaint.setColor(Color.RED);
        mPaint.setStyle(Paint.Style.FILL);
        mRectCount = 15;
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        mWidth = getWidth();//获得屏幕的真实宽高
        mRectHeight = getHeight();
        mRectWidth = (int) (mWidth*0.6/mRectCount);//矩形的宽
        //LinearGradient实现闪动效果
        mLinearGradient = new LinearGradient(
              0,
              0,
              mRectWidth,
              mRectHeight,
              Color.YELLOW,
               Color.GREEN,
                Shader.TileMode.CLAMP
        );

        mPaint.setShader(mLinearGradient);//注意此句别忘写了

    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        for (int i=0;i<mRectCount;i++){
            mRandom = Math.random();
            float currentHeight = (float)(mRectHeight*mRandom);
            canvas.drawRect(
                    (float)(mWidth*0.4/2+mRectWidth*i + offset),
                    currentHeight,
                    (float)(mWidth*0.4/2+mRectWidth*(i+1)),
                    mRectHeight,
                    mPaint
            );
        }
        postInvalidateDelayed(300);//每隔300毫秒绘画一次

    }
}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值