先看效果
1.新建一个Class类AudioView并继承View
package topteam.com.activity_demo.diyview;
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.support.annotation.Nullable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
/**
* 音频条效果
*/
public class AudioView extends View {
private Paint paint;
//音频的数量
private int audioCont;
//屏幕的宽
private int width;
//音频条的宽高
private float audioWidth;
private float audioHeight;
//音频的随机高度
private float random;
public AudioView(Context context) {
super(context);
}
public AudioView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
initView();
}
private void initView(){
paint = new Paint();
paint.setColor(Color.GREEN);
paint.setStyle(Paint.Style.FILL);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
audioCont = 10;
width = getWidth();
audioHeight = getHeight();
audioWidth = (float) (width*0.8/audioCont);
LinearGradient linearGradient = new LinearGradient(0,0,audioWidth,audioHeight, Color.parseColor("#A8FF24"),Color.parseColor("#9F4D95"), Shader.TileMode.CLAMP);
paint.setShader(linearGradient);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
for (int i = 0; i < audioCont; i++) {
random = (float) Math.random();
float currentHeight = random*audioHeight;
canvas.drawRect((float)(width*0.1/2+audioWidth*i+20),currentHeight, (float) (width*0.1/2+audioWidth*(i+1)),audioHeight,paint);
}
postInvalidateDelayed(200);
}
}
2.布局文件中直接调用即可
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#AAAAFF"
>
<topteam.com.activity_demo.diyview.AudioView
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>