当前位置: 移动技术网 > IT编程>移动开发>Android > Android 仿支付宝中的余额宝收益进度条

Android 仿支付宝中的余额宝收益进度条

2019年07月24日  | 移动技术网IT编程  | 我要评论

婚假申请书,泡椒手机论坛,奔跑吧兄弟第五季第九期

一、 看效果

二、上代码

package com.framework.widget;
import android.app.activity;
import android.content.context;
import android.content.res.typedarray;
import android.graphics.canvas;
import android.graphics.color;
import android.graphics.paint;
import android.graphics.rect;
import android.graphics.rectf;
import android.util.attributeset;
import android.util.displaymetrics;
import android.view.view;
import com.r;
/**
 * @author dahai
 * @classname: (仿支付宝) 收益进度条
 * @description: ${todo}
 * @date ${date} ${time}
 * @email 202491024@qq.com
 * @since $android
进度条

 */
public class profitprogerssbar extends view {
 //背景色
 private static final int default_back_color = color.parsecolor("#ffffff");
 //字的颜色
 private static final int default_text_color = color.parsecolor("#ffffff");
 //进度条背景颜色
 private static final int default_progress_color = color.parsecolor("#abacaf");
 //进度条默认的高度
 private static final float default_progress_height =120f;
 //文字的大小
 private static final float default_text_size = 50;
 /**
  * 收益进度条左右两边margin大小
  */
 private static final int margin_size = 20;
 private context context;
 /**
  * 背景颜色的画笔
  */
 private paint backgroundpaint;
 /**
  * 收益进度颜色的画笔
  */
 private paint progresspaint;
 /**
  * 画文字的画笔
  */
 private paint textpaint;
 /**
  * 背景的宽度
  */
 private int view_background_width;
 /**
  * 背景的高度
  */
 private float view_background_height = default_progress_height;
 /**
  * 日期
  */
 private string date = "2016/12/07";
 /**
  * 描叙(百分比/元)
  */
 private string desc = "2.1234";
 /**
  * 要显示的长度的百分比
  */
 private int progress = 70;
 //进度条颜色
 private int progress_color = default_progress_color;
 //背景色
 private int progress_back_color = default_back_color;
 //字的颜色
 private int text_color = default_text_color;
 //字的大小
 private float text_size = default_text_size;
 public profitprogerssbar(context context) {
  super(context);
  initview(context);
 }
 public profitprogerssbar(context context, attributeset attrs) {
  super(context, attrs);
  initview(context);
 }
 public profitprogerssbar(context context, attributeset attrs, int defstyleattr) {
  super(context, attrs, defstyleattr);
  initview(context);
 }
 private void initview(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 = new paint();
  backgroundpaint.setstrokewidth(10);
  backgroundpaint.setcolor(progress_back_color);
  backgroundpaint.setdither(true);
  backgroundpaint.setantialias(true);
  progresspaint = new paint();
  progresspaint.setstrokewidth(10);
  progresspaint.setdither(true);
  progresspaint.setantialias(true);
  textpaint = new paint();
  textpaint.setstrokewidth(10);
  textpaint.setdither(true);
  textpaint.setantialias(true);
  textpaint.settextsize(text_size);
  displaymetrics d = new displaymetrics();
  ((activity) context).getwindowmanager().getdefaultdisplay().getmetrics(d);
  view_background_width = d.widthpixels;
 }
 /**
  * 初始化 进度条
  * @param date
  * @param desc
  * @param progress
  * @param progresscolor
  */
 public void init(string date,string desc,int progress,int progresscolor){
  this.date = date;
  this.desc = desc;
  this.progress = progress;
  this.progress_color = progresscolor;
 }
 @override
 protected void ondraw(canvas canvas) {
  super.ondraw(canvas);
  view_background_height = this.getmeasuredheight();
  rectf r = new rectf();
  r.left = 0;
  r.top = 0;
  r.right = view_background_width;
  r.bottom = view_background_height;////------------------------
  canvas.drawrect(r, backgroundpaint);
  rectf r1 = new rectf();
  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 = new rect();
  textpaint.gettextbounds(date,0,date.length(),r2);
  canvas.drawtext(date, margin_size, (view_background_height-r2.top)/2, textpaint);//日期
  rect r3 = new rect();
  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();
 }
}

三、

<com.framework.widget.profitprogerssbar
 android:layout_width="match_parent"
 android:layout_height="35dp"
 android:layout_marginleft="10dp"
 android:layout_marginright="10dp"
 android:layout_margintop="10dp"
 app:progress_back_color="@color/white"
 app:progress_text_color="@color/white"
 app:progress_text_size="14dp"
 android:id="@+id/profitprogerssbar"
 />
<declare-styleable name="profitprogerssbar">
 <attr name="progress_backg_color" format="color"/>
 <attr name="progress_text_color" format="color"/>
 <attr name="progress_text_size" format="dimension"/>
</declare-styleable>

以上所述是小编给大家介绍的android 仿支付宝中的余额宝收益进度条,希望对大家有所帮助

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网