半圆进度

This commit is contained in:
itgaojian163 2023-07-02 20:01:35 +08:00
parent 5241320e6e
commit 54606027cd
3 changed files with 493 additions and 2 deletions

View File

@ -7,9 +7,9 @@ package com.tenlionsoft.baselib.core.retrofit_net;
*/
public class BaseUrlApi {
public static final String IP = "http://192.168.0.15:7011/";/* 测试IP */
// public static final String IP = "http://192.168.0.15:7011/";/* 测试IP */
// public static final String IP = "http://10.25.242.183:80/";/* 测试IP */
// public static final String IP = "http://www.wlcbsyzl.cn/";/* 正式IP */
public static final String IP = "http://www.wlcbsyzl.cn/";/* 正式IP */
public static final String SYS_USERCENTER = "usercenter/";
public static final String SYS_POPULATION = "populationhouse/";/*人口系统*/
public static final String SYS_CASE = "case/";/*事件部件*/

View File

@ -0,0 +1,490 @@
package com.tenlionsoft.baselib.core.widget.views;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
import android.text.Spannable;
import android.util.AttributeSet;
import android.view.View;
import androidx.annotation.Nullable;
import com.tenlionsoft.baselib.utils.LogUtils;
public class HalfCircleChartView extends View {
int mDiam = 800; //直径环形背景
int left = 50;
int top = 50;
int mDiam2 = 700; //直径数字
int left2 = 150;
int top2 = 150;
Path mPath;
Paint mPaintProgress;
Paint mPaintProgressColor;
RectF mRectF;
RectF mRectF2;
public HalfCircleChartView(Context context) {
super(context, null);
}
public HalfCircleChartView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
initView();
}
private void initView() {
mPath = new Path();
mPath.reset();
mRectF = new RectF(left, top, left + mDiam, top + mDiam);
mRectF2 = new RectF(left2, top2, left2 + mDiam2, top2 + mDiam2);
mPaintProgress = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaintProgress.setStrokeWidth(60);
mPaintProgress.setColor(Color.parseColor("#EBF0F6"));
mPaintProgress.setStyle(Paint.Style.STROKE);
mPaintProgress.setStrokeCap(Paint.Cap.ROUND);
// mPaintProgress.setAlpha(40);
mPaintProgress.setShadowLayer(6, -5, 5, Color.parseColor("#E0E0E0"));
mPaintProgressColor = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaintProgressColor.setStrokeWidth(60);
mPaintProgressColor.setColor(Color.parseColor("#305DFD"));
mPaintProgressColor.setStyle(Paint.Style.STROKE);
mPaintProgressColor.setStrokeCap(Paint.Cap.ROUND);
mPaintProgressColor.setShadowLayer(6, -5, 5, Color.parseColor("#C2C9E3"));
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int mWidth = resolveSize(200, widthMeasureSpec);
int mHeight = resolveSize(600, heightMeasureSpec);
setMeasuredDimension(
Math.max(getSuggestedMinimumWidth(),
resolveSize(mWidth,
widthMeasureSpec)),
Math.max(getSuggestedMinimumHeight(),
resolveSize(mHeight,
heightMeasureSpec)));
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int width = getWidth();
int i = width - left * 2;
mRectF.set(left, top, i + left, i + top);
//绘制第一个环形背景
mPath.arcTo(mRectF, 180, 180);
canvas.drawPath(mPath, mPaintProgress);
//添加进度
addProgress(canvas);
//绘制文字
drawText(canvas);
}
private void drawText(Canvas canvas) {
String percent = "70%";
}
private void addProgress(Canvas canvas) {
Path mPathProgress = new Path();
mPathProgress.reset();
//70%的进度
float progress = 0.7f;
float sweepAngle = progress * 180;
mPathProgress.arcTo(mRectF, 180, sweepAngle);
canvas.drawPath(mPathProgress, mPaintProgressColor);
}
//Android Canvas沿着Path绘制文字
// private void addTextPath(Canvas canvas) {
//
// int startAngle = 135; //开始角度
// int sweepAngle = 45; //总共 270度角分6次则为 45度
//
// String[] content = {"0-10W", "10-20W", "20-30W", "30-40W", "40-50W", "50W+"};
// Paint mTextPaint = new Paint();
// mTextPaint.setColor(Color.BLACK);
// mTextPaint.setTextSize(40);
// Path path = null;
//
//
// for (int i = 0; i < 6; i++) {
// path = new Path();
// path.addArc(mRectF2, startAngle, sweepAngle);
// float textLength = mTextPaint.measureText(content[i]);//获得字体长度
// float hOffset = (float) (mDiam2 * Math.PI * (sweepAngle * 1.0 / 360) / 2 - textLength / 2);//The distance along the path
// float vOffset = (float) (mDiam2 / 2 / 6); //垂直路径方向上的偏移
// canvas.drawTextOnPath(content[i], path, hOffset, vOffset, mTextPaint);
//
//// Log.d("Circle", "hOffset:" + hOffset + " vOffset: " + vOffset);
// startAngle += sweepAngle;
// }
//
// }
//
//
// private void addKeDu1(Canvas canvas) {
//
// int pointX = 500;
// int pointY = 500;
//
//
// Paint paintLine = new Paint(Paint.ANTI_ALIAS_FLAG);
// paintLine.setColor(0xff454545);
// paintLine.setStrokeWidth(12);
//
// Paint paintLine2 = new Paint(Paint.ANTI_ALIAS_FLAG);
// paintLine.setColor(0xff454545);
// paintLine.setStrokeWidth(4);
//
//
// float angle = 45;
// //刻度直径
// int radius = 800 - 40;
// int length = 80; //刻度线长度
//
// int px_a1 = (int) (radius / 2 * Math.cos(Math.PI * angle / 180));
// int py_a1 = (int) (radius / 2 * Math.sin(Math.PI * angle / 180));
// int px_a_1 = pointX - px_a1;
// int py_a_1 = pointY + py_a1;
//
// int radius2 = radius - length;
// int px_a2 = (int) (radius2 / 2 * Math.cos(Math.PI * angle / 180));
// int py_a2 = (int) (radius2 / 2 * Math.sin(Math.PI * angle / 180));
// int px_a_2 = pointX - px_a2;
// int py_a_2 = pointY + py_a2;
//
// //绘制粗刻度线
// canvas.drawLine(px_a_1, py_a_1, px_a_2, py_a_2, paintLine);
//
// //绘制细刻度线
// int length2 = 50;
// for (int i = 1; i < 9; i++) {
//
// float angle2 = 45 - (i * 45 / 9);
// int px_a3 = (int) (radius / 2 * Math.cos(Math.PI * angle2 / 180));
// int py_a3 = (int) (radius / 2 * Math.sin(Math.PI * angle2 / 180));
// int px_a_3 = pointX - px_a3;
// int py_a_3 = pointY + py_a3;
//
// int radius3 = radius - length2;
// int px_a4 = (int) (radius3 / 2 * Math.cos(Math.PI * angle2 / 180));
// int py_a4 = (int) (radius3 / 2 * Math.sin(Math.PI * angle2 / 180));
// int px_a_4 = pointX - px_a4;
// int py_a_4 = pointY + py_a4;
//
// canvas.drawLine(px_a_3, py_a_3, px_a_4, py_a_4, paintLine2);
// }
//
// }
//
// private void addKeDu2(Canvas canvas) {
//
// int pointX = 500;
// int pointY = 500;
//
//
// Paint paintLine = new Paint(Paint.ANTI_ALIAS_FLAG);
// paintLine.setColor(0xff454545);
// paintLine.setStrokeWidth(12);
//
// Paint paintLine2 = new Paint(Paint.ANTI_ALIAS_FLAG);
// paintLine.setColor(0xff454545);
// paintLine.setStrokeWidth(4);
//
//
// float angle = 0;
// int radius = 800 - 40;
// int length = 80;
//
// int px_a1 = (int) (radius / 2 * Math.cos(Math.PI * angle / 180));
// int py_a1 = (int) (radius / 2 * Math.sin(Math.PI * angle / 180));
// int px_a_1 = pointX - px_a1;
// int py_a_1 = pointY + py_a1;
//
// int radius2 = radius - length;
// int px_a2 = (int) (radius2 / 2 * Math.cos(Math.PI * angle / 180));
// int py_a2 = (int) (radius2 / 2 * Math.sin(Math.PI * angle / 180));
// int px_a_2 = pointX - px_a2;
// int py_a_2 = pointY + py_a2;
//
// canvas.drawLine(px_a_1, py_a_1, px_a_2, py_a_2, paintLine);
//
// int length2 = 50;
// for (int i = 1; i < 9; i++) {
//
// float angle2 = angle + (i * 45 / 9);
// int px_a3 = (int) (radius / 2 * Math.cos(Math.PI * angle2 / 180));
// int py_a3 = (int) (radius / 2 * Math.sin(Math.PI * angle2 / 180));
// int px_a_3 = pointX - px_a3;
// int py_a_3 = pointY - py_a3;
//
// int radius3 = radius - length2;
// int px_a4 = (int) (radius3 / 2 * Math.cos(Math.PI * angle2 / 180));
// int py_a4 = (int) (radius3 / 2 * Math.sin(Math.PI * angle2 / 180));
// int px_a_4 = pointX - px_a4;
// int py_a_4 = pointY - py_a4;
//
// canvas.drawLine(px_a_3, py_a_3, px_a_4, py_a_4, paintLine2);
// }
//
// }
//
// private void addKeDu3(Canvas canvas) {
//
// int pointX = 500;
// int pointY = 500;
//
//
// Paint paintLine = new Paint(Paint.ANTI_ALIAS_FLAG);
// paintLine.setColor(0xff454545);
// paintLine.setStrokeWidth(12);
//
// Paint paintLine2 = new Paint(Paint.ANTI_ALIAS_FLAG);
// paintLine.setColor(0xff454545);
// paintLine.setStrokeWidth(4);
//
//
// float angle = 45;
// int radius = 800 - 40;
// int length = 80;
//
// int px_a1 = (int) (radius / 2 * Math.cos(Math.PI * angle / 180));
// int py_a1 = (int) (radius / 2 * Math.sin(Math.PI * angle / 180));
// int px_a_1 = pointX - px_a1;
// int py_a_1 = pointY - py_a1;
//
// int radius2 = radius - length;
// int px_a2 = (int) (radius2 / 2 * Math.cos(Math.PI * angle / 180));
// int py_a2 = (int) (radius2 / 2 * Math.sin(Math.PI * angle / 180));
// int px_a_2 = pointX - px_a2;
// int py_a_2 = pointY - py_a2;
//
// canvas.drawLine(px_a_1, py_a_1, px_a_2, py_a_2, paintLine);
//
// int length2 = 50;
// for (int i = 1; i < 9; i++) {
//
// float angle2 = angle + (i * 45 / 9);
// int px_a3 = (int) (radius / 2 * Math.cos(Math.PI * angle2 / 180));
// int py_a3 = (int) (radius / 2 * Math.sin(Math.PI * angle2 / 180));
// int px_a_3 = pointX - px_a3;
// int py_a_3 = pointY - py_a3;
//
// int radius3 = radius - length2;
// int px_a4 = (int) (radius3 / 2 * Math.cos(Math.PI * angle2 / 180));
// int py_a4 = (int) (radius3 / 2 * Math.sin(Math.PI * angle2 / 180));
// int px_a_4 = pointX - px_a4;
// int py_a_4 = pointY - py_a4;
//
// canvas.drawLine(px_a_3, py_a_3, px_a_4, py_a_4, paintLine2);
// }
//
// }
//
// private void addKeDu4(Canvas canvas) {
//
// int pointX = 500;
// int pointY = 500;
//
//
// Paint paintLine = new Paint(Paint.ANTI_ALIAS_FLAG);
// paintLine.setColor(0xff454545);
// paintLine.setStrokeWidth(12);
//
// Paint paintLine2 = new Paint(Paint.ANTI_ALIAS_FLAG);
// paintLine.setColor(0xff454545);
// paintLine.setStrokeWidth(4);
//
//
// float angle = 90;
// int radius = 800 - 40;
// int length = 80;
//
// int px_a1 = (int) (radius / 2 * Math.cos(Math.PI * angle / 180));
// int py_a1 = (int) (radius / 2 * Math.sin(Math.PI * angle / 180));
// int px_a_1 = pointX - px_a1;
// int py_a_1 = pointY - py_a1;
//
// int radius2 = radius - length;
// int px_a2 = (int) (radius2 / 2 * Math.cos(Math.PI * angle / 180));
// int py_a2 = (int) (radius2 / 2 * Math.sin(Math.PI * angle / 180));
// int px_a_2 = pointX - px_a2;
// int py_a_2 = pointY - py_a2;
//
// canvas.drawLine(px_a_1, py_a_1, px_a_2, py_a_2, paintLine);
//
// int length2 = 50;
// for (int i = 1; i < 9; i++) {
//
// float angle2 = angle + (i * 45 / 9);
// int px_a3 = (int) (radius / 2 * Math.cos(Math.PI * angle2 / 180));
// int py_a3 = (int) (radius / 2 * Math.sin(Math.PI * angle2 / 180));
// int px_a_3 = pointX - px_a3;
// int py_a_3 = pointY - py_a3;
//
// int radius3 = radius - length2;
// int px_a4 = (int) (radius3 / 2 * Math.cos(Math.PI * angle2 / 180));
// int py_a4 = (int) (radius3 / 2 * Math.sin(Math.PI * angle2 / 180));
// int px_a_4 = pointX - px_a4;
// int py_a_4 = pointY - py_a4;
//
// canvas.drawLine(px_a_3, py_a_3, px_a_4, py_a_4, paintLine2);
// }
//
// }
//
// private void addKeDu5(Canvas canvas) {
//
// int pointX = 500;
// int pointY = 500;
//
//
// Paint paintLine = new Paint(Paint.ANTI_ALIAS_FLAG);
// paintLine.setColor(0xff454545);
// paintLine.setStrokeWidth(12);
//
// Paint paintLine2 = new Paint(Paint.ANTI_ALIAS_FLAG);
// paintLine.setColor(0xff454545);
// paintLine.setStrokeWidth(4);
//
//
// float angle = 135;
// int radius = 800 - 40;
// int length = 80;
//
// int px_a1 = (int) (radius / 2 * Math.cos(Math.PI * angle / 180));
// int py_a1 = (int) (radius / 2 * Math.sin(Math.PI * angle / 180));
// int px_a_1 = pointX - px_a1;
// int py_a_1 = pointY - py_a1;
//
// int radius2 = radius - length;
// int px_a2 = (int) (radius2 / 2 * Math.cos(Math.PI * angle / 180));
// int py_a2 = (int) (radius2 / 2 * Math.sin(Math.PI * angle / 180));
// int px_a_2 = pointX - px_a2;
// int py_a_2 = pointY - py_a2;
//
// canvas.drawLine(px_a_1, py_a_1, px_a_2, py_a_2, paintLine);
//
// int length2 = 50;
// for (int i = 1; i < 9; i++) {
//
// float angle2 = angle + (i * 45 / 9);
// int px_a3 = (int) (radius / 2 * Math.cos(Math.PI * angle2 / 180));
// int py_a3 = (int) (radius / 2 * Math.sin(Math.PI * angle2 / 180));
// int px_a_3 = pointX - px_a3;
// int py_a_3 = pointY - py_a3;
//
// int radius3 = radius - length2;
// int px_a4 = (int) (radius3 / 2 * Math.cos(Math.PI * angle2 / 180));
// int py_a4 = (int) (radius3 / 2 * Math.sin(Math.PI * angle2 / 180));
// int px_a_4 = pointX - px_a4;
// int py_a_4 = pointY - py_a4;
//
// canvas.drawLine(px_a_3, py_a_3, px_a_4, py_a_4, paintLine2);
// }
//
// }
//
// private void addKeDu6(Canvas canvas) {
//
// int pointX = 500;
// int pointY = 500;
//
//
// Paint paintLine = new Paint(Paint.ANTI_ALIAS_FLAG);
// paintLine.setColor(0xff454545);
// paintLine.setStrokeWidth(12);
//
// Paint paintLine2 = new Paint(Paint.ANTI_ALIAS_FLAG);
// paintLine.setColor(0xff454545);
// paintLine.setStrokeWidth(4);
//
//
// float angle = 180;
// int radius = 800 - 40;
// int length = 80;
//
// int px_a1 = (int) (radius / 2 * Math.cos(Math.PI * angle / 180));
// int py_a1 = (int) (radius / 2 * Math.sin(Math.PI * angle / 180));
// int px_a_1 = pointX - px_a1;
// int py_a_1 = pointY - py_a1;
//
// int radius2 = radius - length;
// int px_a2 = (int) (radius2 / 2 * Math.cos(Math.PI * angle / 180));
// int py_a2 = (int) (radius2 / 2 * Math.sin(Math.PI * angle / 180));
// int px_a_2 = pointX - px_a2;
// int py_a_2 = pointY - py_a2;
//
// canvas.drawLine(px_a_1, py_a_1, px_a_2, py_a_2, paintLine);
//
// int length2 = 50;
// for (int i = 1; i < 9; i++) {
//
// float angle2 = angle + (i * 45 / 9);
// int px_a3 = (int) (radius / 2 * Math.cos(Math.PI * angle2 / 180));
// int py_a3 = (int) (radius / 2 * Math.sin(Math.PI * angle2 / 180));
// int px_a_3 = pointX - px_a3;
// int py_a_3 = pointY - py_a3;
//
// int radius3 = radius - length2;
// int px_a4 = (int) (radius3 / 2 * Math.cos(Math.PI * angle2 / 180));
// int py_a4 = (int) (radius3 / 2 * Math.sin(Math.PI * angle2 / 180));
// int px_a_4 = pointX - px_a4;
// int py_a_4 = pointY - py_a4;
//
// canvas.drawLine(px_a_3, py_a_3, px_a_4, py_a_4, paintLine2);
// }
//
// }
//
// private void addEndKeDu(Canvas canvas) {
// int pointX = 500;
// int pointY = 500;
//
// Paint paintLine = new Paint(Paint.ANTI_ALIAS_FLAG);
// paintLine.setColor(0xff454545);
// paintLine.setStrokeWidth(12);
//
// Paint paintLine2 = new Paint(Paint.ANTI_ALIAS_FLAG);
// paintLine.setColor(0xff454545);
// paintLine.setStrokeWidth(4);
//
//
// float angle = 225;
// int radius = 800 - 40;
// int length = 80;
//
// int px_a1 = (int) (radius / 2 * Math.cos(Math.PI * angle / 180));
// int py_a1 = (int) (radius / 2 * Math.sin(Math.PI * angle / 180));
// int px_a_1 = pointX - px_a1;
// int py_a_1 = pointY - py_a1;
//
// int radius2 = radius - length;
// int px_a2 = (int) (radius2 / 2 * Math.cos(Math.PI * angle / 180));
// int py_a2 = (int) (radius2 / 2 * Math.sin(Math.PI * angle / 180));
// int px_a_2 = pointX - px_a2;
// int py_a_2 = pointY - py_a2;
//
// canvas.drawLine(px_a_1, py_a_1, px_a_2, py_a_2, paintLine);
// }
}

View File

@ -374,6 +374,7 @@
android:layout_width="match_parent"
android:layout_height="320dp"
android:layout_marginTop="10dp" />
</LinearLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>