diff --git a/.idea/misc.xml b/.idea/misc.xml index 738d045..76827e6 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -65,7 +65,7 @@ - + diff --git a/.idea/misc.xml b/.idea/misc.xml index 738d045..76827e6 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -65,7 +65,7 @@ - + diff --git a/app/src/main/java/com/casic/dcms/ui/TrendAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/TrendAnalysisActivity.java index a9a5332..18a314c 100644 --- a/app/src/main/java/com/casic/dcms/ui/TrendAnalysisActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/TrendAnalysisActivity.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui; import android.content.Context; +import android.os.CountDownTimer; import android.view.View; import androidx.core.content.ContextCompat; @@ -10,18 +11,24 @@ import com.casic.dcms.databinding.ActivityTrendAnalysisBinding; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.TimeOrDateUtil; +import com.casic.dcms.widgets.CircleProgressBar; import com.casic.dcms.widgets.DetailsMarkerView; -import com.github.mikephil.charting.components.Description; +import com.github.mikephil.charting.components.Legend; import com.github.mikephil.charting.components.XAxis; import com.github.mikephil.charting.components.YAxis; +import com.github.mikephil.charting.data.BarData; +import com.github.mikephil.charting.data.BarDataSet; +import com.github.mikephil.charting.data.BarEntry; import com.github.mikephil.charting.data.Entry; import com.github.mikephil.charting.data.LineData; import com.github.mikephil.charting.data.LineDataSet; +import com.github.mikephil.charting.formatter.ValueFormatter; import com.github.mikephil.charting.interfaces.datasets.ILineDataSet; import com.jzxiang.pickerview.TimePickerDialog; import com.jzxiang.pickerview.data.Type; import com.jzxiang.pickerview.listener.OnDateSetListener; +import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.List; @@ -29,10 +36,14 @@ public class TrendAnalysisActivity extends AndroidxBaseActivity { + private static final String TAG = "TrendAnalysisActivity"; + private static final DecimalFormat decimalFormat = new DecimalFormat("##0"); + private static final String[] labelName = {"普通", "快速", "三包"}; private final Context context = TrendAnalysisActivity.this; private final List totalEntries = new ArrayList<>(); private final List handleEntries = new ArrayList<>(); private final List lineDataSets = new ArrayList<>(); + private final List barEntries = new ArrayList<>(); @Override protected void setupTopBarLayout() { @@ -44,8 +55,17 @@ protected void initData() { //默认显示当前月的分析数据 viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis())); - viewBinding.wholeCircleProgressBar.setCurrentValue(80); + //完成率总览 + bindProgressAnimation(viewBinding.wholeProgressBar, 80); //初始化折线图 + initLineChart(); + //初始化柱状图 + initBarChart(); + //案卷核实率 + bindProgressAnimation(viewBinding.verifyProgressBar, 50); + } + + private void initLineChart() { viewBinding.lineChart.setDrawGridBackground(false); viewBinding.lineChart.setDrawBorders(false); Calendar calendar = Calendar.getInstance(); @@ -62,6 +82,8 @@ //设置图表右边的y轴禁用 rightAxis.setEnabled(false); YAxis leftAxis = viewBinding.lineChart.getAxisLeft(); + leftAxis.setAxisMinimum(0f); + viewBinding.lineChart.setScaleYEnabled(false);//Y轴不可缩放 //设置x轴 XAxis xAxis = viewBinding.lineChart.getXAxis(); xAxis.setTextColor(ContextCompat.getColor(context, R.color.textColor)); @@ -73,10 +95,14 @@ xAxis.setDrawGridLines(false);//设置x轴上每个点对应的线 xAxis.setGranularity(1f);//禁止放大后x轴标签重绘 xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); + viewBinding.lineChart.setExtraBottomOffset(5f);//解决X轴显示不完全问题 //去掉描述 - Description description = new Description(); - description.setEnabled(false); - viewBinding.lineChart.setDescription(description); + viewBinding.lineChart.getDescription().setEnabled(false); + //设置图例 + Legend legend = viewBinding.lineChart.getLegend(); + legend.setOrientation(Legend.LegendOrientation.HORIZONTAL); + legend.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP); + legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER); //添加自定义Marker DetailsMarkerView detailsMarkerView = new DetailsMarkerView(this); detailsMarkerView.setChartView(viewBinding.lineChart); @@ -98,6 +124,54 @@ viewBinding.lineChart.invalidate(); } + private void initBarChart() { + viewBinding.barChart.setDrawGridBackground(false); + viewBinding.barChart.setDrawBorders(false); + viewBinding.barChart.setScaleEnabled(false); + //去掉描述 + viewBinding.barChart.getDescription().setEnabled(false); + //去掉图例 + viewBinding.barChart.getLegend().setEnabled(false); + //TODO 这是模拟数据 + for (int i = 0; i < 3; i++) { + barEntries.add(new BarEntry(i, new Random().nextInt(300))); + } + XAxis xAxis = viewBinding.barChart.getXAxis(); + xAxis.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + xAxis.setTextSize(12f); + xAxis.setDrawLabels(true);//绘制标签 指x轴上的对应数值 + xAxis.setLabelCount(3); // 设置x轴上的标签个数 + xAxis.setValueFormatter(new ValueFormatter() { + @Override + public String getFormattedValue(float value) { + return labelName[(int) value]; + } + }); + xAxis.setDrawAxisLine(true);//是否绘制轴线 + xAxis.setDrawGridLines(false);//设置x轴上每个点对应的线 + xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); + viewBinding.barChart.setExtraBottomOffset(5f);//解决X轴显示不完全问题 + //设置样式 + YAxis rightAxis = viewBinding.barChart.getAxisRight(); + //设置图表右边的y轴禁用 + rightAxis.setEnabled(false); + YAxis leftAxis = viewBinding.barChart.getAxisLeft(); + leftAxis.setAxisMinimum(0f); + //绑定数据 + BarDataSet barDataSet = new BarDataSet(barEntries, ""); + barDataSet.setColor(ContextCompat.getColor(context, R.color.mainThemeColor)); + barDataSet.setValueFormatter(new ValueFormatter() { + @Override + public String getFormattedValue(float value) { + return decimalFormat.format(value); + } + }); + BarData barData = new BarData(barDataSet); + barData.setBarWidth(0.5f); + viewBinding.barChart.setData(barData); + viewBinding.barChart.invalidate(); + } + @Override protected void initEvent() { viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() { @@ -121,4 +195,19 @@ } }); } + + private void bindProgressAnimation(CircleProgressBar bar, int value) { + new CountDownTimer(value * 10L, 10) { + + @Override + public void onTick(long l) { + bar.setCurrentValue(value - (int) (l / 10)); + } + + @Override + public void onFinish() { + bar.setCurrentValue(value); + } + }.start(); + } } diff --git a/.idea/misc.xml b/.idea/misc.xml index 738d045..76827e6 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -65,7 +65,7 @@ - + diff --git a/app/src/main/java/com/casic/dcms/ui/TrendAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/TrendAnalysisActivity.java index a9a5332..18a314c 100644 --- a/app/src/main/java/com/casic/dcms/ui/TrendAnalysisActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/TrendAnalysisActivity.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui; import android.content.Context; +import android.os.CountDownTimer; import android.view.View; import androidx.core.content.ContextCompat; @@ -10,18 +11,24 @@ import com.casic.dcms.databinding.ActivityTrendAnalysisBinding; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.TimeOrDateUtil; +import com.casic.dcms.widgets.CircleProgressBar; import com.casic.dcms.widgets.DetailsMarkerView; -import com.github.mikephil.charting.components.Description; +import com.github.mikephil.charting.components.Legend; import com.github.mikephil.charting.components.XAxis; import com.github.mikephil.charting.components.YAxis; +import com.github.mikephil.charting.data.BarData; +import com.github.mikephil.charting.data.BarDataSet; +import com.github.mikephil.charting.data.BarEntry; import com.github.mikephil.charting.data.Entry; import com.github.mikephil.charting.data.LineData; import com.github.mikephil.charting.data.LineDataSet; +import com.github.mikephil.charting.formatter.ValueFormatter; import com.github.mikephil.charting.interfaces.datasets.ILineDataSet; import com.jzxiang.pickerview.TimePickerDialog; import com.jzxiang.pickerview.data.Type; import com.jzxiang.pickerview.listener.OnDateSetListener; +import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.List; @@ -29,10 +36,14 @@ public class TrendAnalysisActivity extends AndroidxBaseActivity { + private static final String TAG = "TrendAnalysisActivity"; + private static final DecimalFormat decimalFormat = new DecimalFormat("##0"); + private static final String[] labelName = {"普通", "快速", "三包"}; private final Context context = TrendAnalysisActivity.this; private final List totalEntries = new ArrayList<>(); private final List handleEntries = new ArrayList<>(); private final List lineDataSets = new ArrayList<>(); + private final List barEntries = new ArrayList<>(); @Override protected void setupTopBarLayout() { @@ -44,8 +55,17 @@ protected void initData() { //默认显示当前月的分析数据 viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis())); - viewBinding.wholeCircleProgressBar.setCurrentValue(80); + //完成率总览 + bindProgressAnimation(viewBinding.wholeProgressBar, 80); //初始化折线图 + initLineChart(); + //初始化柱状图 + initBarChart(); + //案卷核实率 + bindProgressAnimation(viewBinding.verifyProgressBar, 50); + } + + private void initLineChart() { viewBinding.lineChart.setDrawGridBackground(false); viewBinding.lineChart.setDrawBorders(false); Calendar calendar = Calendar.getInstance(); @@ -62,6 +82,8 @@ //设置图表右边的y轴禁用 rightAxis.setEnabled(false); YAxis leftAxis = viewBinding.lineChart.getAxisLeft(); + leftAxis.setAxisMinimum(0f); + viewBinding.lineChart.setScaleYEnabled(false);//Y轴不可缩放 //设置x轴 XAxis xAxis = viewBinding.lineChart.getXAxis(); xAxis.setTextColor(ContextCompat.getColor(context, R.color.textColor)); @@ -73,10 +95,14 @@ xAxis.setDrawGridLines(false);//设置x轴上每个点对应的线 xAxis.setGranularity(1f);//禁止放大后x轴标签重绘 xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); + viewBinding.lineChart.setExtraBottomOffset(5f);//解决X轴显示不完全问题 //去掉描述 - Description description = new Description(); - description.setEnabled(false); - viewBinding.lineChart.setDescription(description); + viewBinding.lineChart.getDescription().setEnabled(false); + //设置图例 + Legend legend = viewBinding.lineChart.getLegend(); + legend.setOrientation(Legend.LegendOrientation.HORIZONTAL); + legend.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP); + legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER); //添加自定义Marker DetailsMarkerView detailsMarkerView = new DetailsMarkerView(this); detailsMarkerView.setChartView(viewBinding.lineChart); @@ -98,6 +124,54 @@ viewBinding.lineChart.invalidate(); } + private void initBarChart() { + viewBinding.barChart.setDrawGridBackground(false); + viewBinding.barChart.setDrawBorders(false); + viewBinding.barChart.setScaleEnabled(false); + //去掉描述 + viewBinding.barChart.getDescription().setEnabled(false); + //去掉图例 + viewBinding.barChart.getLegend().setEnabled(false); + //TODO 这是模拟数据 + for (int i = 0; i < 3; i++) { + barEntries.add(new BarEntry(i, new Random().nextInt(300))); + } + XAxis xAxis = viewBinding.barChart.getXAxis(); + xAxis.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + xAxis.setTextSize(12f); + xAxis.setDrawLabels(true);//绘制标签 指x轴上的对应数值 + xAxis.setLabelCount(3); // 设置x轴上的标签个数 + xAxis.setValueFormatter(new ValueFormatter() { + @Override + public String getFormattedValue(float value) { + return labelName[(int) value]; + } + }); + xAxis.setDrawAxisLine(true);//是否绘制轴线 + xAxis.setDrawGridLines(false);//设置x轴上每个点对应的线 + xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); + viewBinding.barChart.setExtraBottomOffset(5f);//解决X轴显示不完全问题 + //设置样式 + YAxis rightAxis = viewBinding.barChart.getAxisRight(); + //设置图表右边的y轴禁用 + rightAxis.setEnabled(false); + YAxis leftAxis = viewBinding.barChart.getAxisLeft(); + leftAxis.setAxisMinimum(0f); + //绑定数据 + BarDataSet barDataSet = new BarDataSet(barEntries, ""); + barDataSet.setColor(ContextCompat.getColor(context, R.color.mainThemeColor)); + barDataSet.setValueFormatter(new ValueFormatter() { + @Override + public String getFormattedValue(float value) { + return decimalFormat.format(value); + } + }); + BarData barData = new BarData(barDataSet); + barData.setBarWidth(0.5f); + viewBinding.barChart.setData(barData); + viewBinding.barChart.invalidate(); + } + @Override protected void initEvent() { viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() { @@ -121,4 +195,19 @@ } }); } + + private void bindProgressAnimation(CircleProgressBar bar, int value) { + new CountDownTimer(value * 10L, 10) { + + @Override + public void onTick(long l) { + bar.setCurrentValue(value - (int) (l / 10)); + } + + @Override + public void onFinish() { + bar.setCurrentValue(value); + } + }.start(); + } } diff --git a/app/src/main/java/com/casic/dcms/widgets/CircleProgressBar.java b/app/src/main/java/com/casic/dcms/widgets/CircleProgressBar.java index 752a572..0f516bc 100644 --- a/app/src/main/java/com/casic/dcms/widgets/CircleProgressBar.java +++ b/app/src/main/java/com/casic/dcms/widgets/CircleProgressBar.java @@ -7,24 +7,18 @@ import android.graphics.Paint; import android.graphics.Rect; import android.graphics.RectF; -import android.os.Handler; -import android.os.Message; import android.text.TextPaint; import android.util.AttributeSet; import android.view.View; -import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import com.casic.dcms.R; import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import java.lang.ref.WeakReference; - public class CircleProgressBar extends View { - private static WeakReferenceHandler weakReferenceHandler; private final Context context; private final int backgroundColor; private final int foregroundColor; @@ -56,7 +50,6 @@ a.recycle(); //初始化画笔 initPaint(); - weakReferenceHandler = new WeakReferenceHandler(this); } private void initPaint() { @@ -163,36 +156,6 @@ } else { this.currentValue = value + "%"; } - //进度条缓慢前进 - new Thread(() -> { - for (int i = 0; i < value; i++) { - Message message = weakReferenceHandler.obtainMessage(); - message.arg1 = i; - message.what = 20220130; - weakReferenceHandler.handleMessage(message); - try { - Thread.sleep(10); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - }).start(); - } - - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; - - private WeakReferenceHandler(CircleProgressBar view) { - reference = new WeakReference<>(view); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CircleProgressBar bar = reference.get(); - if (msg.what == 20220130) { - bar.sweepAngle = (float) msg.arg1 * 360 / 100; - } - } + sweepAngle = (float) value * 360 / 100; } } diff --git a/.idea/misc.xml b/.idea/misc.xml index 738d045..76827e6 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -65,7 +65,7 @@ - + diff --git a/app/src/main/java/com/casic/dcms/ui/TrendAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/TrendAnalysisActivity.java index a9a5332..18a314c 100644 --- a/app/src/main/java/com/casic/dcms/ui/TrendAnalysisActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/TrendAnalysisActivity.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui; import android.content.Context; +import android.os.CountDownTimer; import android.view.View; import androidx.core.content.ContextCompat; @@ -10,18 +11,24 @@ import com.casic.dcms.databinding.ActivityTrendAnalysisBinding; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.TimeOrDateUtil; +import com.casic.dcms.widgets.CircleProgressBar; import com.casic.dcms.widgets.DetailsMarkerView; -import com.github.mikephil.charting.components.Description; +import com.github.mikephil.charting.components.Legend; import com.github.mikephil.charting.components.XAxis; import com.github.mikephil.charting.components.YAxis; +import com.github.mikephil.charting.data.BarData; +import com.github.mikephil.charting.data.BarDataSet; +import com.github.mikephil.charting.data.BarEntry; import com.github.mikephil.charting.data.Entry; import com.github.mikephil.charting.data.LineData; import com.github.mikephil.charting.data.LineDataSet; +import com.github.mikephil.charting.formatter.ValueFormatter; import com.github.mikephil.charting.interfaces.datasets.ILineDataSet; import com.jzxiang.pickerview.TimePickerDialog; import com.jzxiang.pickerview.data.Type; import com.jzxiang.pickerview.listener.OnDateSetListener; +import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.List; @@ -29,10 +36,14 @@ public class TrendAnalysisActivity extends AndroidxBaseActivity { + private static final String TAG = "TrendAnalysisActivity"; + private static final DecimalFormat decimalFormat = new DecimalFormat("##0"); + private static final String[] labelName = {"普通", "快速", "三包"}; private final Context context = TrendAnalysisActivity.this; private final List totalEntries = new ArrayList<>(); private final List handleEntries = new ArrayList<>(); private final List lineDataSets = new ArrayList<>(); + private final List barEntries = new ArrayList<>(); @Override protected void setupTopBarLayout() { @@ -44,8 +55,17 @@ protected void initData() { //默认显示当前月的分析数据 viewBinding.titleBarLayout.dateView.setText(TimeOrDateUtil.timestampToYearMonth(System.currentTimeMillis())); - viewBinding.wholeCircleProgressBar.setCurrentValue(80); + //完成率总览 + bindProgressAnimation(viewBinding.wholeProgressBar, 80); //初始化折线图 + initLineChart(); + //初始化柱状图 + initBarChart(); + //案卷核实率 + bindProgressAnimation(viewBinding.verifyProgressBar, 50); + } + + private void initLineChart() { viewBinding.lineChart.setDrawGridBackground(false); viewBinding.lineChart.setDrawBorders(false); Calendar calendar = Calendar.getInstance(); @@ -62,6 +82,8 @@ //设置图表右边的y轴禁用 rightAxis.setEnabled(false); YAxis leftAxis = viewBinding.lineChart.getAxisLeft(); + leftAxis.setAxisMinimum(0f); + viewBinding.lineChart.setScaleYEnabled(false);//Y轴不可缩放 //设置x轴 XAxis xAxis = viewBinding.lineChart.getXAxis(); xAxis.setTextColor(ContextCompat.getColor(context, R.color.textColor)); @@ -73,10 +95,14 @@ xAxis.setDrawGridLines(false);//设置x轴上每个点对应的线 xAxis.setGranularity(1f);//禁止放大后x轴标签重绘 xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); + viewBinding.lineChart.setExtraBottomOffset(5f);//解决X轴显示不完全问题 //去掉描述 - Description description = new Description(); - description.setEnabled(false); - viewBinding.lineChart.setDescription(description); + viewBinding.lineChart.getDescription().setEnabled(false); + //设置图例 + Legend legend = viewBinding.lineChart.getLegend(); + legend.setOrientation(Legend.LegendOrientation.HORIZONTAL); + legend.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP); + legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER); //添加自定义Marker DetailsMarkerView detailsMarkerView = new DetailsMarkerView(this); detailsMarkerView.setChartView(viewBinding.lineChart); @@ -98,6 +124,54 @@ viewBinding.lineChart.invalidate(); } + private void initBarChart() { + viewBinding.barChart.setDrawGridBackground(false); + viewBinding.barChart.setDrawBorders(false); + viewBinding.barChart.setScaleEnabled(false); + //去掉描述 + viewBinding.barChart.getDescription().setEnabled(false); + //去掉图例 + viewBinding.barChart.getLegend().setEnabled(false); + //TODO 这是模拟数据 + for (int i = 0; i < 3; i++) { + barEntries.add(new BarEntry(i, new Random().nextInt(300))); + } + XAxis xAxis = viewBinding.barChart.getXAxis(); + xAxis.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + xAxis.setTextSize(12f); + xAxis.setDrawLabels(true);//绘制标签 指x轴上的对应数值 + xAxis.setLabelCount(3); // 设置x轴上的标签个数 + xAxis.setValueFormatter(new ValueFormatter() { + @Override + public String getFormattedValue(float value) { + return labelName[(int) value]; + } + }); + xAxis.setDrawAxisLine(true);//是否绘制轴线 + xAxis.setDrawGridLines(false);//设置x轴上每个点对应的线 + xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); + viewBinding.barChart.setExtraBottomOffset(5f);//解决X轴显示不完全问题 + //设置样式 + YAxis rightAxis = viewBinding.barChart.getAxisRight(); + //设置图表右边的y轴禁用 + rightAxis.setEnabled(false); + YAxis leftAxis = viewBinding.barChart.getAxisLeft(); + leftAxis.setAxisMinimum(0f); + //绑定数据 + BarDataSet barDataSet = new BarDataSet(barEntries, ""); + barDataSet.setColor(ContextCompat.getColor(context, R.color.mainThemeColor)); + barDataSet.setValueFormatter(new ValueFormatter() { + @Override + public String getFormattedValue(float value) { + return decimalFormat.format(value); + } + }); + BarData barData = new BarData(barDataSet); + barData.setBarWidth(0.5f); + viewBinding.barChart.setData(barData); + viewBinding.barChart.invalidate(); + } + @Override protected void initEvent() { viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() { @@ -121,4 +195,19 @@ } }); } + + private void bindProgressAnimation(CircleProgressBar bar, int value) { + new CountDownTimer(value * 10L, 10) { + + @Override + public void onTick(long l) { + bar.setCurrentValue(value - (int) (l / 10)); + } + + @Override + public void onFinish() { + bar.setCurrentValue(value); + } + }.start(); + } } diff --git a/app/src/main/java/com/casic/dcms/widgets/CircleProgressBar.java b/app/src/main/java/com/casic/dcms/widgets/CircleProgressBar.java index 752a572..0f516bc 100644 --- a/app/src/main/java/com/casic/dcms/widgets/CircleProgressBar.java +++ b/app/src/main/java/com/casic/dcms/widgets/CircleProgressBar.java @@ -7,24 +7,18 @@ import android.graphics.Paint; import android.graphics.Rect; import android.graphics.RectF; -import android.os.Handler; -import android.os.Message; import android.text.TextPaint; import android.util.AttributeSet; import android.view.View; -import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import com.casic.dcms.R; import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import java.lang.ref.WeakReference; - public class CircleProgressBar extends View { - private static WeakReferenceHandler weakReferenceHandler; private final Context context; private final int backgroundColor; private final int foregroundColor; @@ -56,7 +50,6 @@ a.recycle(); //初始化画笔 initPaint(); - weakReferenceHandler = new WeakReferenceHandler(this); } private void initPaint() { @@ -163,36 +156,6 @@ } else { this.currentValue = value + "%"; } - //进度条缓慢前进 - new Thread(() -> { - for (int i = 0; i < value; i++) { - Message message = weakReferenceHandler.obtainMessage(); - message.arg1 = i; - message.what = 20220130; - weakReferenceHandler.handleMessage(message); - try { - Thread.sleep(10); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - }).start(); - } - - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; - - private WeakReferenceHandler(CircleProgressBar view) { - reference = new WeakReference<>(view); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CircleProgressBar bar = reference.get(); - if (msg.what == 20220130) { - bar.sweepAngle = (float) msg.arg1 * 360 / 100; - } - } + sweepAngle = (float) value * 360 / 100; } } diff --git a/app/src/main/res/layout/activity_trend_analysis.xml b/app/src/main/res/layout/activity_trend_analysis.xml index 7adcf2d..cde61b5 100644 --- a/app/src/main/res/layout/activity_trend_analysis.xml +++ b/app/src/main/res/layout/activity_trend_analysis.xml @@ -17,12 +17,12 @@ + android:orientation="vertical" + android:padding="@dimen/padding_10dp"> @@ -34,7 +34,7 @@ android:padding="@dimen/padding_10dp"> @@ -150,6 +149,84 @@ android:layout_height="180dp" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file