android 仿物流进度条,Android (仿支付宝) 收益进度条

packagecom.framework.widget;importandroid.app.Activity;importandroid.content.Context;importandroid.content.res.TypedArray;importandroid.graphics.Canvas;importandroid.graphics.Color;importandroid.graphics.Paint;importandroid.graphics.Rect;importandroid.graphics.RectF;importandroid.util.AttributeSet;importandroid.util.DisplayMetrics;importandroid.view.View;importcom.R;/***@authordahai*@ClassName:(仿支付宝) 收益进度条*@Description:${todo}*@date${date} ${time}*@email202491024@qq.com*@since${tags}*/public classProfitProgerssBar extendsView {

//背景色private static final intDEFAULT_BACK_COLOR= Color.parseColor("#ffffff");//字的颜色private static final intDEFAULT_TEXT_COLOR= Color.parseColor("#ffffff");//进度条背景颜色private static final intDEFAULT_PROGRESS_COLOR= Color.parseColor("#abacaf");//进度条默认的高度private static final floatDEFAULT_PROGRESS_HEIGHT=120f;//文字的大小private static final floatDEFAULT_TEXT_SIZE= 50;/*** 收益进度条左右两边margin大小*/private static final intMARGIN_SIZE= 20;privateContext context;/*** 背景颜色的画笔*/privatePaint backgroundPaint;/*** 收益进度颜色的画笔*/privatePaint progressPaint;/*** 画文字的画笔*/privatePaint textPaint;/*** 背景的宽度*/private intview_background_width;/*** 背景的高度*/private floatview_background_height= DEFAULT_PROGRESS_HEIGHT;/*** 日期*/privateString date= "2016/12/07";/*** 描叙(百分比/元)*/privateString desc= "2.1234";/*** 要显示的长度的百分比*/private intprogress= 70;//进度条颜色private intprogress_color= DEFAULT_PROGRESS_COLOR;//背景色private intprogress_back_color= DEFAULT_BACK_COLOR;//字的颜色private inttext_color= DEFAULT_TEXT_COLOR;//字的大小private floatTEXT_SIZE= DEFAULT_TEXT_SIZE;publicProfitProgerssBar(Context context) {

super(context);initView(context);}

publicProfitProgerssBar(Context context,AttributeSet attrs) {

super(context,attrs);initView(context);}

publicProfitProgerssBar(Context context,AttributeSet attrs, intdefStyleAttr) {

super(context,attrs,defStyleAttr);initView(context);}

private voidinitView(Context context) {

this.context= context;TypedArray typedArray = this.context.obtainStyledAttributes(R.styleable.ProfitProgerssBar);progress_back_color= typedArray.getColor(R.styleable.ProfitProgerssBar_progress_backg_color,DEFAULT_BACK_COLOR);text_color= typedArray.getColor(R.styleable.ProfitProgerssBar_progress_text_color,DEFAULT_TEXT_COLOR);TEXT_SIZE= typedArray.getDimension(R.styleable.ProfitProgerssBar_progress_text_size,DEFAULT_TEXT_SIZE);backgroundPaint= newPaint();backgroundPaint.setStrokeWidth(10);backgroundPaint.setColor(progress_back_color);backgroundPaint.setDither(true);backgroundPaint.setAntiAlias(true);progressPaint= newPaint();progressPaint.setStrokeWidth(10);progressPaint.setDither(true);progressPaint.setAntiAlias(true);textPaint= newPaint();textPaint.setStrokeWidth(10);textPaint.setDither(true);textPaint.setAntiAlias(true);textPaint.setTextSize(TEXT_SIZE);DisplayMetrics d = newDisplayMetrics();((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(d);view_background_width= d.widthPixels;}

/*** 初始化 进度条*@paramdate*@paramdesc*@paramprogress*@paramprogressColor*/public voidinit(String date,String desc,intprogress,intprogressColor){

this.date= date;this.desc= desc;this.progress= progress;this.progress_color= progressColor;}

@Overrideprotected voidonDraw(Canvas canvas) {

super.onDraw(canvas);view_background_height= this.getMeasuredHeight();RectF r = newRectF();r.left= 0;r.top= 0;r.right= view_background_width;r.bottom= view_background_height;------------------------canvas.drawRect(r,backgroundPaint);RectF r1 = newRectF();r1.left= 0;r1.top= 0;r1.right= view_background_width* progress/ 100;r1.bottom= view_background_height;------------------------progressPaint.setColor(progress_color);canvas.drawRect(r1,progressPaint);textPaint.setColor(text_color);Rect r2 = newRect();textPaint.getTextBounds(date,0,date.length(),r2);canvas.drawText(date,MARGIN_SIZE,(view_background_height-r2.top)/2,textPaint);//日期Rect r3 = newRect();textPaint.getTextBounds(desc,0,desc.length(),r3);if(progress>95&&progress<100){

canvas.drawText(desc,r1.right-textPaint.measureText(desc)-MARGIN_SIZE-30,(view_background_height-r3.top)/2,textPaint);}else if(progress>=100) {

canvas.drawText(desc,r1.right-textPaint.measureText(desc)-MARGIN_SIZE-45,(view_background_height-r3.top)/2,textPaint);}else{

canvas.drawText(desc,r1.right- textPaint.measureText(desc) - MARGIN_SIZE,(view_background_height- r3.top) / 2,textPaint);}

invalidate();}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值