MD风格的progressbar实现,可以在5.1以下使用
2017-01-07 10:25
387 查看
自从安卓5.0出来后,一堆的md风格就出来了,让人觉得眼前一亮,我靠!怎么这么好看!可惜了,我的系统还是4.4的,这些东西都用不了啊!难受... 然后想一下,既然用不了,那我就仿照着写一个可以用的,好啦,下面就是我的尝试了...没有官方的那么好,不过大体也算是实现了。 关键代码很少,直接上。
public class ProgressView extends View { private Paint mPaint; private float start; private float sweep; private RectF rectF; public ProgressView(Context context) { this(context, null); } public ProgressView(Context context, AttributeSet attrs) { super(context, attrs); mPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG); mPaint.setStyle(Paint.Style.STROKE); mPaint.setColor(Color.RED); mPaint.setStrokeWidth(10); rectF = new RectF(110, 110, 290, 290); } boolean flag = true; @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); start +=4; if (flag){ sweep +=5f; }else { sweep-=3; start+=2; } if (start>=360){ start-=360; } if (sweep>=270){ flag=false; } if (!flag&&sweep<=45){ flag=true; } canvas.save(); canvas.drawArc(rectF, start, sweep, false, mPaint); canvas.restore(); invalidate(); } }
来看下具体效果
原谅我不会搞gif,第一次写,仅供交流学习,能力有限,如果有什么问题,欢迎讨论。
最后附一demo地址:
Material ProgressBar Demo
相关文章推荐
- Android:使用android-support-design实现MD风格对话框
- 用java实现验证码的生成,以下代码是一个controller,可以直接使用!
- Android编程使用android-support-design实现MD风格对话框功能示例
- 在进行C#编程时候,有的时候我们需要判断一个字符串是否是数字字符串,我们可以通过以下两种方法来实现。 【方法一】:使用 try{} catch{} 语句。 我们可以在try语句块中试图
- 五星-原型模式常使用于以下场景--而JAVA中的任何类只要实现了Cloneable标识接口,就可以使用clone方法来进行对象的拷贝
- 裸奔编程之使用Servlet实现REST风格 单纯使用Servlet进行完成REST解析
- 在Webwork中使用ww:action实现页面控制器风格Action复用
- jcaptchaService生成的图片确实比较丑,可以更改为以下实现
- 使用JtabbedPane实现Sina网页中Tab风格
- 为何在DataGrid中使用UpdateCommand无法实现数据的修改?(换种思维可以实现)
- 使用Web部件连接接口实现可以设置条件的过滤器
- VC++6 实现界面使用XP风格
- 使用DefaultButton 实现回车事件,可以有多个,甚至在用户控件内也行
- (精)在ASP.NET中使用IFRAME+DIV,可以实现在同一页面使用弹出(模态)窗口
- 使用manifest文件实现XP风格界面
- 去掉代码中的空行和注释行,可以使用以下正则表达式替换。
- ESC之ESC.wsf可以实现javascript的代码压缩附使用方法第1/5页
- luyikk 的C# PING 工具 与 传统的不一样的是 他可以修改你的 IP地址实现伪造ICMP数据包 ,当然 XP下无法使用 2003下才可以使用
- 裸奔编程之使用Servlet实现REST风格 开篇
- Owc的使用---自己封装好的类可以实现14种分析图