package com.lcodecore.tkrefreshlayout.header.bezierlayout; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Path; import android.graphics.PixelFormat; import android.graphics.drawable.Drawable; import android.support.annotation.ColorInt; import android.util.AttributeSet; import android.view.View; /** * Created by cjj on 2015/8/5. * 绘制贝塞尔来绘制波浪形 */ public class WaveView extends View { private int waveHeight; private int headHeight; Path path; Paint paint; public WaveView(Context context) { this(context, null, 0); } public WaveView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public WaveView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } private void init() { path = new Path(); paint = new Paint(); paint.setColor(0xff1F2426); paint.setAntiAlias(true); } public int getHeadHeight() { return headHeight; } public void setHeadHeight(int headHeight) { this.headHeight = headHeight; } public int getWaveHeight() { return waveHeight; } public void setWaveHeight(int waveHeight) { this.waveHeight = waveHeight; } public void setWaveColor(@ColorInt int color) { if (paint != null) paint.setColor(color); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //重置画笔 path.reset(); path.lineTo(0, headHeight); //绘制贝塞尔曲线 path.quadTo(getMeasuredWidth() / 2, headHeight + waveHeight, getMeasuredWidth(), headHeight); path.lineTo(getMeasuredWidth(), 0); canvas.drawPath(path, paint); } static Bitmap drawableToBitmap(Drawable drawable) // drawable 转换成bitmap { int width = drawable.getIntrinsicWidth();// 取drawable的长宽 int height = drawable.getIntrinsicHeight(); Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565;// 取drawable的颜色格式 Bitmap bitmap = Bitmap.createBitmap(width, height, config);// 建立对应bitmap Canvas canvas = new Canvas(bitmap);// 建立对应bitmap的画布 drawable.setBounds(0, 0, width, height); drawable.draw(canvas);// 把drawable内容画到画布中 return bitmap; } }