From 75e83be13a8c4ccf081c4dc07a262e4096783c7e Mon Sep 17 00:00:00 2001
From: 陈奇 <1650699704@qq.com>
Date: Fri, 02 Nov 2018 17:34:21 +0800
Subject: [PATCH] [*]修改电磁版本 配合电子修改bug
---
app/src/main/java/com/moral/yunfushao/ui/PanelView.java | 211 +++++++++++++++++++++++++++++++---------------------
1 files changed, 126 insertions(+), 85 deletions(-)
diff --git a/app/src/main/java/com/moral/yunfushao/ui/PanelView.java b/app/src/main/java/com/moral/yunfushao/ui/PanelView.java
index edd75ff..c712411 100644
--- a/app/src/main/java/com/moral/yunfushao/ui/PanelView.java
+++ b/app/src/main/java/com/moral/yunfushao/ui/PanelView.java
@@ -1,5 +1,6 @@
package com.moral.yunfushao.ui;
+import android.animation.ValueAnimator;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
@@ -28,11 +29,11 @@
private int mmHeight;
//���������������������������
private Paint mShaderPaint;
- private int[] mshaderColor = new int[]{0xfff70e17,0xfff70e17,0xfff70e17,0xffff5c92,0xff00c44a,0xff00d062,0xff00f5af,0xff00f6cb,0xff00ccff,0xff179fff,0xffa054ff,0xffa53aff,0xffd74bff,0xfff64da5,0xfff70e17};
- private int[] mshaderRedColor = new int[]{0xfff70e17,0xffff5c92};
- private int[] mshaderZiseColor = new int[]{0xffa53aff,0xffd74bff,0xfff64da5};
- private int[] mshaderBlueColor = new int[]{0xff00f6cb,0xff00ccff,0xff179fff,0xffa054ff};
- private int[] mshaderGreenColor = new int[]{0xff00c44a,0xff00d062,0xff00f5af};
+ private int[] mshaderColor = new int[]{0xfff70e17, 0xfff70e17, 0xfff70e17, 0xffff5c92, 0xff00c44a, 0xff00d062, 0xff00f5af, 0xff00f6cb, 0xff00ccff, 0xff179fff, 0xffa054ff, 0xffa53aff, 0xffd74bff, 0xfff64da5, 0xfff70e17};
+ private int[] mshaderRedColor = new int[]{0xfff70e17, 0xffff5c92};
+ private int[] mshaderZiseColor = new int[]{0xffa53aff, 0xffd74bff, 0xfff64da5};
+ private int[] mshaderBlueColor = new int[]{0xff00f6cb, 0xff00ccff, 0xff179fff, 0xffa054ff};
+ private int[] mshaderGreenColor = new int[]{0xff00c44a, 0xff00d062, 0xff00f5af};
//������������������������
private SweepGradient mSweepGradient;
private int mShaderWidth = 70;
@@ -59,7 +60,7 @@
private Paint drawTextPaint;
private int textColor = Color.GRAY;
private int textSize = 36;
- private String[] level = {"������������","������������","������������","������������"};
+ private String[] level = {"������������", "������������", "������������", "������������"};
//������������
private Paint mCirclePaint;
@@ -75,17 +76,26 @@
private Bitmap mBitmap;
private float percent = 0;//���������������
+ private float percent2 = (float) 0.27;//���������������
+
private String statusStr = "���������";
+ private ValueAnimator anim;
- public void setStatusStr(String statusStr){
+ public void setStatusStr(String statusStr) {
this.statusStr = statusStr;
postInvalidate();
}
- public void setPercent(float percent){
+ public void setPercent(float percent) {
this.percent = percent;
+// this.percent2 = percent;
postInvalidate();
+// if (anim.isStarted() || anim.isRunning()) {
+// anim.end();
+// anim.cancel();
+// }
+// anim.start();
}
public PanelView(Context context) {
@@ -106,15 +116,15 @@
private void init(Context mContext) {
this.mContext = mContext;
//���������
- mShaderWidth = dip2px(mContext,24);
- line1Length = dip2px(mContext,14);
- line2Length = dip2px(mContext,22);
- lineWidth = dip2px(mContext,2);
- widthInner = dip2px(mContext,40);
- paddingKedu = dip2px(mContext,10);
- mCircleWidth = dip2px(mContext,24);
- innerPadding = dip2px(mContext,8);
- textSize = dip2px(mContext,12);
+ mShaderWidth = dip2px(mContext, 24);
+ line1Length = dip2px(mContext, 14);
+ line2Length = dip2px(mContext, 22);
+ lineWidth = dip2px(mContext, 2);
+ widthInner = dip2px(mContext, 40);
+ paddingKedu = dip2px(mContext, 10);
+ mCircleWidth = dip2px(mContext, 24);
+ innerPadding = dip2px(mContext, 8);
+ textSize = dip2px(mContext, 12);
//������������
mShaderPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
@@ -123,7 +133,7 @@
mShaderPaint.setStrokeCap(Paint.Cap.ROUND);
paintGapLine = new Paint(Paint.ANTI_ALIAS_FLAG);
paintGapLine.setColor(Color.WHITE);
- paintGapLine.setStrokeWidth(dip2px(mContext,3));
+ paintGapLine.setStrokeWidth(dip2px(mContext, 3));
//������
mLinePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mLinePaint.setStyle(Paint.Style.STROKE);
@@ -149,7 +159,8 @@
mBitPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mBitPaint.setFilterBitmap(true);
mBitPaint.setDither(true);
- mBitmap = ((BitmapDrawable)mContext.getResources().getDrawable(R.mipmap.zhizhen)).getBitmap();
+ mBitmap = ((BitmapDrawable) mContext.getResources().getDrawable(R.mipmap.zhizhen)).getBitmap();
+// startAnimation();
}
@Override
@@ -169,50 +180,78 @@
} else {
mmHeight = dip2px(mContext, 300);
}
- mWidth = mmWidth<mmHeight?mmWidth:mmHeight;
+ mWidth = mmWidth < mmHeight ? mmWidth : mmHeight;
setMeasuredDimension(mmWidth, mmHeight);
}
+
+// private void startAnimation() {
+// anim = ValueAnimator.ofObject(new CustomPointEvaluator(),(float)0, percent2);
+// anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
+// @Override
+// public void onAnimationUpdate(ValueAnimator animation) {
+// percent = (float) animation.getAnimatedValue();
+// System.out.println("chenqi rotato " + percent + " all -> " + percent2 * 300);
+//// invalidate();
+// }
+// });
+// anim.setDuration(3000L);
+// anim.setRepeatCount(Animation.INFINITE);
+// }
+//
+// private class CustomPointEvaluator implements TypeEvaluator<Float> {
+// @Override
+// public Float evaluate(float fraction, Float startValue, Float endValue) {
+// System.out.println("chenqi2 rotato " + fraction + " all -> " + endValue);
+// float y = fraction * endValue;
+// return y;
+// }
+// }
+
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
- //���������
+ //���������
drawKedu(canvas);
//���������������
drawTextKedu(canvas);
//���������������
drawJianbianCircle(canvas);
//���������
- RectF cirlcleRect = new RectF(mShaderWidth + widthInner+mCircleWidth+innerPadding, mShaderWidth + widthInner+mCircleWidth+innerPadding, mWidth - mShaderWidth - widthInner-mCircleWidth-innerPadding, mWidth - mShaderWidth - widthInner-mCircleWidth-innerPadding);
+ RectF cirlcleRect = new RectF(mShaderWidth + widthInner + mCircleWidth + innerPadding, mShaderWidth + widthInner + mCircleWidth + innerPadding, mWidth - mShaderWidth - widthInner - mCircleWidth - innerPadding, mWidth - mShaderWidth - widthInner - mCircleWidth - innerPadding);
canvas.drawArc(cirlcleRect, 0, 360, false, mCirclePaint);
//���������
- float circleR = (cirlcleRect.right - cirlcleRect.left)/2;
+ float circleR = (cirlcleRect.right - cirlcleRect.left) / 2;
float bitH = circleR;
- float bitW = bitH*0.448f;
+ float bitW = bitH * 0.448f;
canvas.save();
- canvas.rotate(percent*300-150,mWidth/2,mWidth/2);
- RectF btmRect = new RectF((float) (cirlcleRect.left+bitH-bitW*0.535), (float) (cirlcleRect.top+mCircleWidth*0.68),(float) (cirlcleRect.left+bitH+bitW*0.465), (float) (cirlcleRect.top+bitH+mCircleWidth*0.68));
+
+ System.out.println("chenqi percent connect" + percent);
+ canvas.rotate(percent * 300 - 150, mWidth / 2, mWidth / 2);
+ RectF btmRect = new RectF((float) (cirlcleRect.left + bitH - bitW * 0.535), (float) (cirlcleRect.top + mCircleWidth * 0.68), (float) (cirlcleRect.left + bitH + bitW * 0.465), (float) (cirlcleRect.top + bitH + mCircleWidth * 0.68));
// Log.d("haijiang","left="+btmRect.left);
// Log.d("haijiang","right="+btmRect.right);
// Log.d("haijiang","top="+btmRect.top);
// Log.d("haijiang","bottom="+btmRect.bottom);
// Log.d("haijiang","������������="+(btmRect.right-btmRect.left)/(btmRect.bottom-btmRect.top));
- canvas.drawBitmap(mBitmap,null,btmRect,mBitPaint);
+ canvas.drawBitmap(mBitmap, null, btmRect, mBitPaint);
canvas.restore();
drawTextPaint.setColor(line3Color);
drawTextPaint.setTextSize(textSize);
int statusStrWidth = (int) drawTextPaint.measureText(this.statusStr);
- canvas.drawText(this.statusStr,mWidth / 2-statusStrWidth/2, mWidth/2+(btmRect.bottom-btmRect.top)/2,drawTextPaint);
- if(percent>0)
- canvas.drawArc(new RectF(mShaderWidth + widthInner+mCircleWidth+innerPadding, mShaderWidth + widthInner+mCircleWidth+innerPadding, mWidth - mShaderWidth - widthInner-mCircleWidth-innerPadding, mWidth - mShaderWidth - widthInner-mCircleWidth-innerPadding), 120, 300*percent, false, mProgressPaint);
+ canvas.drawText(this.statusStr, mWidth / 2 - statusStrWidth / 2, mWidth / 2 + (btmRect.bottom - btmRect.top) / 2, drawTextPaint);
+ if (percent > 0)
+ canvas.drawArc(new RectF(mShaderWidth + widthInner + mCircleWidth + innerPadding, mShaderWidth + widthInner + mCircleWidth + innerPadding, mWidth - mShaderWidth - widthInner - mCircleWidth - innerPadding, mWidth - mShaderWidth - widthInner - mCircleWidth - innerPadding),
+ 120, 300 * percent, false, mProgressPaint);
}
/**
* ���������
+ *
* @param canvas
*/
- private void drawKedu(Canvas canvas){
+ private void drawKedu(Canvas canvas) {
//���������������
for (int i = 0; i <= 50; i++) {
canvas.save();
@@ -245,85 +284,86 @@
/**
* ���������������
+ *
* @param canvas
*/
- private void drawTextKedu(Canvas canvas){
- for(int i=0;i<level.length;i++){
+ private void drawTextKedu(Canvas canvas) {
+ for (int i = 0; i < level.length; i++) {
float textWidth = drawTextPaint.measureText(level[i]);
- if(percent<0.25){
- if(i==0){
+ if (percent < 0.25) {
+ if (i == 0) {
drawTextPaint.setColor(line3Color);
- }else{
+ } else {
drawTextPaint.setColor(Color.GRAY);
}
canvas.save();
- if(i==0){
- canvas.rotate(-120,mWidth/2,mWidth/2);
- }else if(i==1){
- canvas.rotate(-45,mWidth/2,mWidth/2);
- }else if(i==2){
- canvas.rotate(45,mWidth/2,mWidth/2);
- }else if(i==3){
- canvas.rotate(120,mWidth/2,mWidth/2);
+ if (i == 0) {
+ canvas.rotate(-120, mWidth / 2, mWidth / 2);
+ } else if (i == 1) {
+ canvas.rotate(-45, mWidth / 2, mWidth / 2);
+ } else if (i == 2) {
+ canvas.rotate(45, mWidth / 2, mWidth / 2);
+ } else if (i == 3) {
+ canvas.rotate(120, mWidth / 2, mWidth / 2);
}
- canvas.drawText(level[i],mWidth / 2-textWidth/2, paddingKedu+line2Length+textSize,drawTextPaint);
+ canvas.drawText(level[i], mWidth / 2 - textWidth / 2, paddingKedu + line2Length + textSize, drawTextPaint);
canvas.restore();
- }else if(percent>=0.25&&percent<0.5){
- if(i==1){
+ } else if (percent >= 0.25 && percent < 0.5) {
+ if (i == 1) {
drawTextPaint.setColor(line3Color);
- }else{
+ } else {
drawTextPaint.setColor(Color.GRAY);
}
canvas.save();
// canvas.rotate(-120+i*75,mWidth/2,mWidth/2);
- if(i==0){
- canvas.rotate(-120,mWidth/2,mWidth/2);
- }else if(i==1){
- canvas.rotate(-45,mWidth/2,mWidth/2);
- }else if(i==2){
- canvas.rotate(45,mWidth/2,mWidth/2);
- }else if(i==3){
- canvas.rotate(120,mWidth/2,mWidth/2);
+ if (i == 0) {
+ canvas.rotate(-120, mWidth / 2, mWidth / 2);
+ } else if (i == 1) {
+ canvas.rotate(-45, mWidth / 2, mWidth / 2);
+ } else if (i == 2) {
+ canvas.rotate(45, mWidth / 2, mWidth / 2);
+ } else if (i == 3) {
+ canvas.rotate(120, mWidth / 2, mWidth / 2);
}
- canvas.drawText(level[i],mWidth / 2-textWidth/2, paddingKedu+line2Length+textSize,drawTextPaint);
+ canvas.drawText(level[i], mWidth / 2 - textWidth / 2, paddingKedu + line2Length + textSize, drawTextPaint);
canvas.restore();
- }else if(percent>=0.5&&percent<0.75){
- if(i==2){
+ } else if (percent >= 0.5 && percent < 0.75) {
+ if (i == 2) {
drawTextPaint.setColor(line3Color);
- }else{
+ } else {
drawTextPaint.setColor(Color.GRAY);
}
canvas.save();
// canvas.rotate(-120+i*75,mWidth/2,mWidth/2);
- if(i==0){
- canvas.rotate(-120,mWidth/2,mWidth/2);
- }else if(i==1){
- canvas.rotate(-45,mWidth/2,mWidth/2);
- }else if(i==2){
- canvas.rotate(45,mWidth/2,mWidth/2);
- }else if(i==3){
- canvas.rotate(120,mWidth/2,mWidth/2);
+ if (i == 0) {
+ canvas.rotate(-120, mWidth / 2, mWidth / 2);
+ } else if (i == 1) {
+ canvas.rotate(-45, mWidth / 2, mWidth / 2);
+ } else if (i == 2) {
+ canvas.rotate(45, mWidth / 2, mWidth / 2);
+ } else if (i == 3) {
+ canvas.rotate(120, mWidth / 2, mWidth / 2);
}
- canvas.drawText(level[i],mWidth / 2-textWidth/2, paddingKedu+line2Length+textSize,drawTextPaint);
+ canvas.drawText(level[i], mWidth / 2 - textWidth / 2, paddingKedu + line2Length + textSize, drawTextPaint);
canvas.restore();
- }else if(percent>=0.75){
- if(i==3){
+ } else if (percent >= 0.75) {
+ if (i == 3) {
drawTextPaint.setColor(line3Color);
- }else{
+ } else {
drawTextPaint.setColor(Color.GRAY);
}
canvas.save();
// canvas.rotate(-105+i*75,mWidth/2,mWidth/2);
- if(i==0){
- canvas.rotate(-120,mWidth/2,mWidth/2);
- }else if(i==1){
- canvas.rotate(-45,mWidth/2,mWidth/2);
- }else if(i==2){
- canvas.rotate(45,mWidth/2,mWidth/2);
- }else if(i==3){
- canvas.rotate(120,mWidth/2,mWidth/2);
+ if (i == 0) {
+ canvas.rotate(-120, mWidth / 2, mWidth / 2);
+ } else if (i == 1) {
+ canvas.rotate(-45, mWidth / 2, mWidth / 2);
+ } else if (i == 2) {
+ canvas.rotate(45, mWidth / 2, mWidth / 2);
+ } else if (i == 3) {
+ canvas.rotate(120, mWidth / 2, mWidth / 2);
}
- canvas.drawText(level[i],mWidth / 2-textWidth/2, paddingKedu+line2Length+textSize,drawTextPaint);
+ canvas.drawText(level[i], mWidth / 2 - textWidth / 2, paddingKedu + line2Length + textSize, drawTextPaint);
canvas.restore();
}
}
@@ -331,24 +371,25 @@
/**
* ���������������
+ *
* @param canvas
*/
- private void drawJianbianCircle(Canvas canvas){
+ private void drawJianbianCircle(Canvas canvas) {
mSweepGradient = new SweepGradient(mWidth / 2, mWidth / 2, mshaderColor, null);
mShaderPaint.setShader(mSweepGradient);
canvas.drawArc(new RectF(mShaderWidth + widthInner, mShaderWidth + widthInner, mWidth - mShaderWidth - widthInner, mWidth - mShaderWidth - widthInner), 120, 300, false, mShaderPaint);
//���������������
canvas.save();
canvas.rotate(75, mWidth / 2, mWidth / 2);
- canvas.drawLine(mWidth / 2, line2Length + paddingKedu*3, mWidth / 2, (float) (line2Length + paddingKedu*0.65+mShaderWidth*2), paintGapLine);
+ canvas.drawLine(mWidth / 2, line2Length + paddingKedu * 3, mWidth / 2, (float) (line2Length + paddingKedu * 0.65 + mShaderWidth * 2), paintGapLine);
canvas.restore();
canvas.save();
canvas.rotate(0, mWidth / 2, mWidth / 2);
- canvas.drawLine(mWidth / 2, line2Length + paddingKedu*3, mWidth / 2, (float) (line2Length + paddingKedu*0.65+mShaderWidth*2), paintGapLine);
+ canvas.drawLine(mWidth / 2, line2Length + paddingKedu * 3, mWidth / 2, (float) (line2Length + paddingKedu * 0.65 + mShaderWidth * 2), paintGapLine);
canvas.restore();
canvas.save();
canvas.rotate(-75, mWidth / 2, mWidth / 2);
- canvas.drawLine(mWidth / 2, line2Length + paddingKedu*3, mWidth / 2, (float) (line2Length + paddingKedu*0.65+mShaderWidth*2), paintGapLine);
+ canvas.drawLine(mWidth / 2, line2Length + paddingKedu * 3, mWidth / 2, (float) (line2Length + paddingKedu * 0.65 + mShaderWidth * 2), paintGapLine);
canvas.restore();
}
--
Gitblit v1.8.0