时间:2015-09-17 来源:

Android自定义View之三种流行进度条的写法 【数据库】

概述: 利用自定义View的onDraw()方法psd切图html,可以绘制很多种图形,psd切图html 100);//每隔100毫秒发送一次handler } break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mButtonStart = (Button) findViewById(R.id.button_start); mProgressView = (ThirdProgressView) findViewById(R.id.progress_view_first); mButtonStart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //向handler发送一个延时空消息,div切图排版1000毫秒后发送 mHandler.sendEmptyMessageDelayed(DOWNLOAD_UPDATE, 1000); } }); } } $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); }); 版权声明:本文为博主原创文章,手机页面切图排版未经博主允许不得转载.

public class SecondProgressView extends View { private int width; private int height; private int progress; private int maxProgress = 100; private Paint mPaintBackGround; private Paint mPaintCurrent; private Paint mPaintText; public void setWidth(int width) { this.width = width; } public void setHeight(int height) { this.height = height; } public int getProgress() { return progress; } public void setProgress(int progress) { this.progress = progress; invalidate(); } public int getMaxProgress() { return maxProgress; } public void setMaxProgress(int maxProgress) { this.maxProgress = maxProgress; } public SecondProgressView(Context context) { super(context); } public SecondProgressView(Context context, attrs); mPaintBackGround = new Paint(); mPaintBackGround.setColor(Color.GRAY); mPaintBackGround.setStyle(Paint.Style.STROKE); mPaintBackGround.setStrokeWidth(20); mPaintBackGround.setAntiAlias(true); mPaintCurrent = new Paint(); mPaintCurrent.setColor(Color.BLUE); mPaintCurrent.setAntiAlias(true); mPaintText = new Paint(); mPaintText.setColor(Color.BLACK); mPaintText.setAntiAlias(true); mPaintText.setTextAlign(Paint.Align.CENTER); mPaintText.setTextSize(50); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawRect(width / 2 - 200, width / 2 + 200, mPaintBackGround); canvas.drawRect(width/2-190,width/2+190,mPaintCurrent); canvas.drawText(progress*100f/maxProgress+"%", height / 2, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, widthMeasureSpec); height = getDefaultSize(getSuggestedMinimumHeight(), height); } } 圆圈式弧形进度框:

Demo 这是一个模拟下载的demo.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/button_start" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Start Download"/> <com.example.administrator.selfdefinedview.widget.ThirdProgressView android:id="@+id/progress_view_first" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout> 主活动的中自定义View也需要声明和findViewById,加载的是第三种自定义View, AttributeSet attrs) { super(context, attrs); mPaintBackGround = new Paint();//新定义一个画笔,承接网站前端用来画背景 mPaintBackGround.setColor(Color.GRAY);//设置画笔颜色 mPaintBackGround.setAntiAlias(true);//设置为true,代表抗锯齿 mPaintCurrent = new Paint();//用于画进度图 mPaintCurrent.setColor(Color.GREEN); mPaintCurrent.setAntiAlias(true); mPaintText = new Paint();//用来画文本的画笔 mPaintText.setColor(Color.BLACK); mPaintText.setAntiAlias(true); mPaintText.setTextAlign(Paint.Align.CENTER);//设置文本排布方式:正中央 mPaintText.setTextSize(50);//设置文本大小,psd切图html这里为50xp } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //左起:圆心x坐标web外包,圆心y坐标,div切图排版半径网页切图制作, height / 2, mPaintBackGround); canvas.drawCircle(width/2,progress*400f/maxProgress,mPaintCurrent); //左起:文本内容,psd切图html起始位置x坐标web外包,起始位置y坐标,web外包画笔 canvas.drawText(progress*100f/maxProgress+"%", height / 2, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, widthMeasureSpec); //该View布局高 height = getDefaultSize(getSuggestedMinimumHeight(), height); } } 水箱型注水式进度框

public class ThirdProgressView extends View { private int width; private int height; private int progress; private int maxProgress = 100; private Paint mPaintBackGround; private Paint mPaintCurrent; private Paint mPaintText; public void setWidth(int width) { this.width = width; } public void setHeight(int height) { this.height = height; } public int getProgress() { return progress; } public void setProgress(int progress) { this.progress = progress; invalidate(); } public int getMaxProgress() { return maxProgress; } public void setMaxProgress(int maxProgress) { this.maxProgress = maxProgress; } public ThirdProgressView(Context context) { super(context); } public ThirdProgressView(Context context, attrs); mPaintBackGround = new Paint(); mPaintBackGround.setColor(Color.GRAY); mPaintBackGround.setStrokeWidth(60); mPaintBackGround.setStyle(Paint.Style.STROKE); mPaintBackGround.setAntiAlias(true); mPaintCurrent = new Paint(); mPaintCurrent.setColor(Color.GREEN); mPaintCurrent.setStrokeWidth(60); mPaintCurrent.setStyle(Paint.Style.STROKE); mPaintCurrent.setAntiAlias(true); mPaintText = new Paint(); mPaintText.setColor(Color.BLACK); mPaintText.setAntiAlias(true); mPaintText.setTextAlign(Paint.Align.CENTER); mPaintText.setTextSize(50); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawCircle(width / 2, 400,height/2-400,height/2+400); //左起分别是RectF对象psd切图html,起始角度,psd切图html终止角度web外包,Paint对象 canvas.drawArc(oval,progress*360f/maxProgress,mPaintCurrent); canvas.drawText(progress*100f/maxProgress+"%", height / 2, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, widthMeasureSpec); height = getDefaultSize(getSuggestedMinimumHeight(), height); } } 需要在布局文件中加载自定义View,这里随便加载一个作示范(自定义View都这么加载):

demo1

自中央逐渐充满型圆形进度框

点击次数:9977
作者:
web前端行业资讯
Web new NewsList
Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日苹果经典电脑Lisa源代码修复完成将于2018年开源 ,,2017年12月28日腾讯浏览指数发布年终榜单2017年人们都关注哪些AI话题? ,,2017年12月28日除了发现开普勒90,NASA还靠AI做了什么? ,,2017年12月28日柯洁宣布:明年4月,将再次与围棋AI交锋 ,,2017年12月28日百度无人车美国首秀CES将发布Apollo2.0 ,,2017年12月28日这四种技术发展趋势将在2018年改变世界 ,,2017年12月28日2017:谷歌DeepMind团队的年度回顾 ,,2017年12月28日封杀这个公式,AI智商将为零 ,,2017年12月28日微软AI高管:要让所有人、所有机构都用上人工智能 ,,2017年12月28日为什么Linux桌面年一直未到来 ,,2017年12月28日AppleLisa操作系统将开源 ,,2017年12月28日2018年9大技术趋势预测 ,,2017年12月28日谷歌研究院发布NIMA:能评价图像有多美,还能让图像变得更美 ,,2017年12月28日苹果为2019年iPhone开发大容量电池新技术 ,,2017年12月28日谷歌发布Tacotron2:能更简单地训练AI学习演讲 ,,2017年12月21日TensorFlow漏洞爆发背后:关于AI安全我们的傻与天真 ,,2017年12月21日Android端Edge浏览器新版发布:常规性能优化和BUG修复 ,,2017年12月21日三星开发出全球最小的DRAM芯片技术领先优势扩大 ,,2017年12月21日腾讯绝艺AI下一步将学习AlphaGozero自对弈训练 ,,2017年12月21日Facebook社交VR应用Spaces扩大覆盖面:入驻HTCVive ,,2017年12月21日设计图曝光:三星双屏折叠手机原来是这样的 ,,2017年12月21日微信支付和支付宝已成为世界移动支付的"老师" ,,2017年12月21日新专利表明FaceID未来有望装备在iPad、MacBook和iMac等设备 ,,2017年12月21日首批九个建议加入EE4J的项目 ,,2017年12月21日这就是SurfacePhone?微软可折叠手机概念图曝光 ,,2017年12月21日继“Angel”开源后,腾讯又开放TDinsight机器学习平台 ,,2017年12月21日进程间通信(5)-命名管道(FIFO) 【数据库】2015年06月18日二叉树的查找javascript【移动开发】2015年05月19日实用JS系列——BOM常用对象 【系统运维】2015年01月21日软考总结之网络+病毒攻击类型【综合】2015年06月03日PHP中设置时区方法小结2014年01月29日侧滑删除进阶(三) 【编程语言】2015年08月14日视频监控系统:CS&BS 【移动开发】2015年07月20日MySQL5.1.40已经发布新的性能工具出现2014年01月28日CodeforcesRound#117(Div.2)E---WoodenFence(dp) 【数据库】2015年03月24日Swift集合类型(CollectionType)之数组(array)(官方文档翻译及总结) 【移动开发】2015年07月20日UI第一课2014年12月01日第14周上机实践项目3——多科成绩单(1) 【移动开发】2014年12月04日ZOJ3875LunchTime(The12thZhejiangProvincialCollegiateProgrammingContest) 【架构设计】2015年04月27日Hadoop源代码分析(MapTask辅助类,II) 【综合】2015年06月05日兔子--html,js,php,ASP,ASP.NET,JSP的关系 【综合】2015年07月06日List集合remove问题 【数据库】2015年07月23日Nginx负载均衡:分布式热备WebServer的搭建 【互联网】2015年03月16日cocos2dx编译时间长问题【移动开发】2015年08月15日Google内网部署IPv6 ,,2016年06月23日AndroidTV(GoogleADT1开发者版)初体验 【Web前端】2014年12月04日最新版ADT新建项目报错解决办法(三) 【编程语言】2015年02月13日Oracle锁定临时表统计信息及锁住后是否能用动态采集的hint【研发管理】2014年11月24日AccountHuntingforInvoke-TokenManipulation伪造token前的账号猎取【系统运维】2015年02月04日MongoDBr3.0.13-rc0发布 ,,2016年10月27日Swift开发教程--设置圆角Button和圆角边框TextView 【编程语言】2015年08月28日【基础练习】【堆】codevs1063合并果子题解 【架构设计】2015年07月27日多边形重心问题【编程语言】2015年02月28日Jsp之两个Jsp页面之间传输数据【综合】2015年08月07日Linux平台上SQLite数据库教程(一)——终端使用篇 【移动开发】2015年09月02日perl中尖括号运算符(<>)使用说明2014年01月29日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)