每周一个自定义View-2-动态ProgressViewTip2
其实功用周一就现已结束了, 不过后边的内容感觉比功用的结束还繁琐
照理先看下作用, 这儿可以看到, 随着发展的改动越快, tip偏移的视点也越大, 给人一种加速度高的感觉
规划进程
静态分化
这个view全体github是干什么的看来仍是比较简单的, 可以分红布景和文字的展示
布景的话可以看做一动画个圆角矩形和一个等边三角形, 闪现的文字的话只要让文字在矩形的中心闪现就github打不开可以了
动画作用
动画作用也比较简单, 根据当时需求改动的发展按照比例来旋转全体的视点即可
代码结束
代码相对来说仍是比较简单的, 就不分模块展示了
@Override
protected void onDraw(Canvas canvas) {
//制造区域下移, 防止顶部动画时内容缺失
canvas.translate(0, tipHeight / 3);
//更新制造坐标方位
int tipPosition = (int) ((width - tipWidth) / 100f * progrescanvas标签s);
//防止差值器过度至反常方位
if (tipPosition < tipWidth / 6) {
tipPgithub敞开私库osition = tipWidth / 6;
} else i动画f (tipcanvas交大Position > width - tip动画片猫和老鼠Width / 6f * 7) {
tipPosition = (int) (width - tipWidth / 6f * 7);
}
//布景制造Paingit命令t
Paint paint = new Paintgithub中文社区();
paint.setColor(ba动画专业ckcanvas下载groundColor);
//移动到中心的方位
canvas.trgithub怎样下载文件anslate(tipPosition, 0);
//更新需求改动的视点
int degrees = (int) (changeProgress / 100f * maxDegcanvas交大rees);
//旋转全体
canvas.rotate(degrees,github下载 tipWidth &ggithub中文官网网页t;> 1,
tipHeight + triangleWith);
canvas.save();
//制造圆角矩形区域
canvas.dragithub下载wRoundRect(0,
0,
tipWidth,
tipHeight,
30, 30, paint);
cacanvas动画nvgithub永久回家地址as.translatecanvas的中文意思(tipWidtGitHubh >> 1, tipHegiti轮胎ight);github中文官网网页
//制造底部三角区域
Path path = new Path();
path.moveTo(-triangleWith >> 1, 0);
path.lineTo(triangleWith >> 1, 0);
path.lineTo(0, triangleWith);
path.close();
canvas.drawPath(path, paint);
canvas.resto动画制造软件re();
canvas.save();
//文件制造Paint
Paint tcanvas登录extPaint = new Paint();
textPaint.setColor(textColor);
textPaint.setTextSize(tipHeight >> 1);
textPaint.setStyle(Paint.动画专业Style.FILL);
//使得在文字x轴居中
textPaint.setT动画大放映ext动画片猫和老鼠Align(Paint.Aliggithub怎样下载文件n.CENTER);
//使得在文github直播渠道永久回家字github怎样下载文件y轴居中
Paint.FontMetrics fontMetrics = textPagithub敞开私库int.getFontMetrics();
float top = fontMetrics.top;
float botgithub中文社区tom = fontMetrics.bottom;
int baseLineY = (int) ((tipHeight >> 1) - top / 2 - bottom / 2);
//动画片少儿防止差值器引起的取值反常
igitlabf (progress < 0) {
progress = 0;
} elcanvasse if (progress > 100) {
progress = 100;
}
//更新需求展示的文字信息
Strgithub中文官网网页ing text = "" + progress + "%";
canvas.drawText(text动画片少儿小猪佩奇, tipWidgithub中文官网网页th >> 1, bagitiseLineY, textPaint);
}
最后
相关代码可以拜访我的GitHub来获取,欢迎我们start或许提供主张.