Android 仿支付宝中的余额宝收益进度条
作者:Susan8888 发布时间:2022-11-23 03:58:33
一、 看效果
二、上代码
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 仿支付宝中的余额宝收益进度条网站的支持!
来源:http://blog.csdn.net/susan8888/article/details/53538068


猜你喜欢
- Android中在sqlite插入数据的时候默认一条语句就是一个事务,因此如果存在上万条数据插入的话,那就需要执行上万次插入操作,操作速度可
- indexof方法:注解:indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置。如果没有找到子字符串,则返回-1
- 本文简单介绍如何引入validation的步骤,如何通过自定义validation减少代码量,提高生产力。特别提及:非基本类型属性的vali
- 翻译自 John Demetriou 2019年2月17日 的文章 《C# 8 – Introducing Index Struct And
- 本文主要描述在C#中线程同步的方法。线程的基本概念网上资料也很多就不再赘述了。直接接入 主题,在多线程开发的应用中,线程同步是不可避免的。在
- 前言本文主要给大家介绍了关于Android中GridView布局整体居中的相关内容,是对于自己在项目中遇到问题的一个记录,分享出来供大家参考
- 本文研究的主要是Java回调函数与观察者模式的实现,具体介绍和实现代码如下。观察者模式(有时又被称为发布(publish )-订阅(Subs
- 域对象共享数据使用ServletAPI向request域对象共享数据@RequestMapping("/testServletAP
- 前言最近对 base-spring-boot 项目进行了升级。在将其用于应用开发中时遇到java.lang.ArrayStoreE
- 本文实例为大家分享了android自定义波浪加载动画的具体代码,供大家参考,具体内容如下效果图1.自定义控件 WaveViewpackage
- 本文为大家分享了android实现图片橡皮擦和快速染色的具体代码,供大家参考,具体内容如下源码地址:Eraselmg1.染色 &n
- LockSupport类用于创建锁和其他同步类的基本线程阻塞原语,此类与使用它的每个线程关联一个许可。如果获得许可,将立即返回对park的调
- using System;using System.Collections.Generic;using System.Linq;using
- Java多线程线程的创建1.继承Thread2.实现Runnable3.实现Callable使用继承Thread类来开发多线程的应用程序在设
- 摘要:最近有一个需求,为客户提供一些Restful API 接口,QA使用postman进行测试,但是postman的测试接口与java调用
- 1、SpringMVC验证@Validated的使用第一步:编写国际化消息资源文件编写国际化消息资源ValidatedMessage.pro
- 简单讲下用法://引依赖<dependency><groupId>tk.mybatis</groupId>
- summarydetail传统的Spring项目会有很多的配置文件,比如我们要使用Redis,一般除了对应的依赖的jar包我们还需要在app
- 这篇文章主要介绍了java通过实例了解值传递和引用传递,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- 线程堆栈:简称栈 Stack托管堆: 简称堆 Heap使用.Net框架开发程序的时候,我们无需关心内存分配问题,因为有GC这个大管家给我们料