前言:由于项目的需要,在视频录制的时候需要点击开始的按钮带圆形进度条的功能,所以就看了网上的一些资料,基本都是长按仿微信的录制功能。
而我自己需要的是点击录制和点击的暂停,也不需要那么炫的效果,所以自定义了一个view,有需要的伙伴们可以看看,自定义厉害的大神们可以无视此博客
此view功能不算强大,但是原理简单,可以任意扩展,使用以及修改极其方便,而且注释很清晰明了
总之一句话,这个代码就是一眼看去完全懂了,你按照自己的需要想怎么改就怎么改!!
好了不废话了,直接上这个类的代码:
package com.deepblue.lanbuff.view;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
/**
* 自定义的圆形进度按钮 用于录制视频页面的开始和暂停功能
* Created by meng on 2017/11/8.
*/
public class CircleButtonView extends View {
private Paint mBigCirclePaint;//外圈进度的背景色
private Paint mSmallCirclePaint;//内圈圆
private Paint mProgressCirclePaint;//外圈进度的颜色
private Paint mInnerSquarePaint;//内圈的正方形
/**
* 自定义使用的颜色资源id
*/
private int mBigCircleColorId=0;//外圈进度的背景色
private int mSmallCircleId=0;//内圈圆形的颜色
private int mProgressCircleId=0;//外圈进度条的颜色
private int mInnerSquareId=0;//内圈的正方形的颜色
private int mHeight;//当前View的高
private int mWidth;//当前View的宽
private float mBigRadius;//外圈大圆的半径
private float mSmallRadius;//内圈小圆的半径
private boolean isRecording = false;//录制状态
private float mCurrentProgress = 0;//当前进度
private int maxTime = 120;//录制最大时间s
private float mProgressW = 17f