android 自定义进程条
来源:互联网 发布:金蝶利润表没有数据 编辑:程序博客网 时间:2024/06/05 07:06
package com.nbhero.DIYview;import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.PorterDuff;import android.graphics.PorterDuffXfermode;import android.util.AttributeSet;import android.util.Log;import android.view.View;import com.nbhero.flower.R;import com.nbhero.util.tool;/** * Created by zhenglingzhong on 2016/11/7. * 描述:实例化出一个对象然后直接调用set方法传入 运行时间 或者运行和租用总时长 * */public class ProView extends View { private Context con; //view private int left; private int viewheight; private int viewwidth; private PorterDuffXfermode porterDuffXfermode; //point1 private Paint paintStart; private int startX; private int startY; private int startWidth; //line1 private Paint paintLineback; private int lineBackStartX; private int lineBackStartY; private int lineBackEndX; private int lineBackEndY; private int lineBackWidth; //line2 private Paint paintLinePro; private int lineProStartX; private int lineProStartY; private int lineProEndX; private int lineProEndY; //point2 private Paint paintEnd; private int endX; private int endY; private int endWidth; //数据 private float pro = 1.0f; private float linewidth; private int move = 0; private int stype = -1; //0为自运营 1为租用 //运行时间 private int runtimeh = -1; private int runtimem = -1; //租用时间 private int renttimeh = -1; private int renttimem = -1; //文字 private Paint painttextTop; private Paint painttextBottom; private int speed = 2; public ProView(Context context) { this(context,null); } public ProView(Context context, AttributeSet attrs) { this(context, attrs,0); } public ProView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); con = context; } public void set(int runtime){ stype = 0; runtimeh = runtime /60; runtimem = runtime % 60; pro = 1.0f; } public void set(int runtime,int renttime){ stype = 1; pro = runtime / renttime; runtimeh = runtime /60; runtimem = runtime % 60; renttimeh = renttime / 60; renttimem = renttime % 60; pro = (float) runtime /(float) renttime; } /** *传入速度int型 2 到10有效 范围外默认为2 */ public void setSpeed(int speed){ if(2<speed && speed<10){ this.speed = speed; } } //初始化画笔 private void init(){ //view left = tool.dip2px(con,40); move = left + startWidth * 2 ; porterDuffXfermode = new PorterDuffXfermode(PorterDuff.Mode.SRC_IN); //起始点 paintStart = new Paint(); paintStart.setColor(getResources().getColor(R.color.headcolor)); paintStart.setStrokeWidth(tool.dip2px(con,14)); startWidth = tool.dip2px(con,10); startX = left + startWidth ; startY = viewheight / 2; //背景线条 paintLineback = new Paint(); paintLineback.setColor(getResources().getColor(R.color.textcolor)); paintLineback.setStrokeWidth(tool.dip2px(con,2)); lineBackStartX = left + startWidth * 2; lineBackStartY = startY; lineBackEndX = viewwidth - left - startWidth * 2; lineBackEndY = startY; lineBackWidth = lineBackEndX - lineBackStartX; //进度条 paintLinePro = new Paint(); paintLinePro.setColor(getResources().getColor(R.color.headcolor)); paintLinePro.setStrokeWidth(tool.dip2px(con,3)); lineProStartX = lineBackStartX; lineProStartY = startY; linewidth = pro * lineBackWidth; lineProEndX = (int)linewidth + left + startWidth * 2; lineProEndY = startY; //结束点 paintEnd = new Paint(); paintEnd.setColor(getResources().getColor(R.color.textcolor)); endX = viewwidth - startX; endY = startY; endWidth = startWidth; //文字 painttextTop = new Paint();// painttextTop.setStrokeWidth(tool.dip2px(con,16)); painttextTop.setTextSize(tool.dip2px(con,16)); painttextTop.setTextAlign(Paint.Align.CENTER); painttextTop.setColor(getResources().getColor(R.color.headcolor));//文字下 painttextBottom = new Paint();// painttextBottom.setStrokeWidth(tool.dip2px(con,16)); painttextBottom.setTextSize(tool.dip2px(con,12)); painttextBottom.setTextAlign(Paint.Align.CENTER); painttextBottom.setColor(getResources().getColor(R.color.headcolor)); Log.e("zlz",lineProStartX+"lineProStartX"); Log.e("zlz",lineBackWidth+"lineBackWidth"); Log.e("zlz",lineBackEndX+"lineBackEndX"); Log.e("zlz",lineProEndX+"lineProEndX"); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { viewheight = View.MeasureSpec.getSize(heightMeasureSpec); viewwidth = View.MeasureSpec.getSize(widthMeasureSpec); setMeasuredDimension(viewwidth, viewheight); init(); } @Override protected void onDraw(Canvas canvas) { if(stype == 0){ //自运营状态 canvas.drawText(runtimeh+"h:"+runtimem+"m",endX ,endY - tool.dip2px(con,20),painttextTop); canvas.drawText("运行总时长",endX ,endY + tool.dip2px(con,30),painttextBottom); }else if(stype == 1){ //租用状态 canvas.drawText(runtimeh+"h:"+runtimem+"m",startX ,endY - tool.dip2px(con,20),painttextTop); canvas.drawText("运行总时长",startX ,endY + tool.dip2px(con,30),painttextBottom); canvas.drawText(renttimeh+"h:"+renttimem+"m",endX ,endY - tool.dip2px(con,20),painttextTop); canvas.drawText("租用总时长",endX ,endY + tool.dip2px(con,30),painttextBottom); //浮标 canvas.drawLine(move,startY - startWidth,move,startY+startWidth,paintLinePro); canvas.drawText((int)(((float)(move - left - startWidth * 2)/ (float)lineBackWidth) * 100) + 1 + "%",move,endY + tool.dip2px(con,30),painttextBottom ); } canvas.drawLine(lineBackStartX,lineBackStartY,lineBackEndX,lineBackEndY,paintLineback); canvas.drawCircle(startX,startY,startWidth,paintStart); canvas.drawCircle(endX,endY,endWidth,paintEnd); paintLinePro.setXfermode(porterDuffXfermode); canvas.drawLine(lineProStartX,lineProStartY,move,lineBackEndY,paintLinePro); if(move + speed < lineProEndX ) { move += speed; postInvalidate(); } }}
0 0
- android 自定义进程条
- 自定义进程条
- android 自定义导航条
- 自定义Android应用程序标题条
- Android自定义SeekBar滑动条
- android 自定义SeekBar(拖动条)
- Android 自定义横向滚动条
- Android自定义音量条控件
- Android自定义控件-等级条
- Android中自定义滑动条风格
- android评分条RatingBar自定义设置
- android评分条RatingBar自定义设置
- Android之自定义ListView滚动条样式
- Android 仿 iPhone 自定义滚条视图
- Android之自定义ListView滚动条样式
- Android之自定义ListView滚动条样式
- android评分条RatingBar自定义设置
- android评分条RatingBar自定义设置
- eclipse中安装SVN、安装javaHL、Failed to load JavaHL Library错误解决方案
- 嵌入式linux软件平台--QtLib、QwtLib实现图形显示(一)
- MathType编辑带框运算符的方法
- 使用umlet时遇到的错误
- 笔记-html 定位
- android 自定义进程条
- ORA-01830:日期格式图片在转换整个输入字符串之前结束
- 洛谷 P1140 相似基因
- 输出空心三角形
- ActiveMQ介绍
- 关于小白程序员的一些思考。
- 即兴知识点-2(String 所有功能)
- 关于0309的研究
- Android资源文件中@和?含义、区别