腾讯的狼人杀。玩家发言在矩形的头相框,动态展示倒计时进度条,感觉很好玩,参考网上一些做法:
最终可以实现效果:
Paste_Image.png
可以控制 修改颜色显示 ,是否显示小球等:
先给出demo地址:
链接: https://pan.baidu.com/s/1bp8NbGz 密码: 75sg
主界面大体上就是通过handler 发送消息更新ui的思想,布局也比较简单。
重点是绘制:
import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.drawable.shapes.RectShape;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
/**
* Created by Administrator on 2017/8/26.
*/
public class SquareProgress extends View {
private String TAG = "SquareProgress";
//各个画笔的颜色
private int maxColor = Color.YELLOW;//总进度条颜色为灰色
private int curColor = Color.GREEN;//当前进度条颜色为蓝色
private int dotColor = Color.RED;//进度条前端的小圆点为红色
private float allLength;//进度条的总长度
private int maxProgress = 60;//总的进度条长度为100(可改变)
private int curProgress = 0;//当前进度为30(可改变)
private Paint curPaint;//当前进度条的画笔
private Paint maxPaint;//总进度条的画笔
private Paint dotPaint;//进度条前端小圆点的画笔
private int width;//整个view的宽度,(包括paddingleft和paddingright)
private int height;//整个view的高度,(包括paddingtop和paddingbottom)
private float maxProgressWidth;//整个进度条画笔的宽度
private float curProgressWidth;//当前进度条画笔的宽度
private float dotDiameter;//进度条顶端小圆点的直径
private boolean canDisplayDot = true;//是否显示小圆点
private Path curPath;//当前进度条的路径,(总的进度条的路径作为onDraw的局部变量)
private float proWidth;//整个进度条构成矩形的宽度
private float proHeight;//整个进度条构成矩形的高度
private float dotCX;//小圆点的X坐标(相对view)
private float dotCY;//小圆点的Y坐标(相对view)
public SquareProgress(Context context) {
super(context);
initView();
}
public SquareProgress(Context context, AttributeSet attrs) {
super(context, attrs);
initView();
}
public SquareProgress(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView();
}
@TargetApi(21)
public SquareProgress(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {