bug修复、App更新方式更换

This commit is contained in:
itgaojian 2023-07-07 16:58:18 +08:00
parent 2077808f18
commit 8b66cb3f68
12 changed files with 915 additions and 335 deletions

View File

@ -797,5 +797,6 @@ public class PathConfig {
public static final String ACTION_UPDATE_ERROR = "com.tenlionsoft.girdcclient.update_error";
public static final String ACTION_UPDATE_PROGRESS = "com.tenlionsoft.girdcclient.update_progress";
public static final String ACTION_UPDATE_SUCCESS = "com.tenlionsoft.girdcclient.update_success";
public static final String ACTION_UPDATE_STAET = "com.tenlionsoft.girdcclient.update_start";
}

View File

@ -381,15 +381,13 @@ public class HttpUtils {
.build();
}
//设置拦截器
client.newBuilder()
.addNetworkInterceptor(new Interceptor() { //设置拦截器
@Override
public Response intercept(Chain chain) throws IOException {
Response originalResponse = chain.proceed(chain.request());
return originalResponse.newBuilder()
.body(new ResponseProgressBody(originalResponse.body(), downloadResponseHandler))
.build();
}
.addNetworkInterceptor(chain -> {
Response originalResponse = chain.proceed(chain.request());
return originalResponse.newBuilder()
.body(new ResponseProgressBody(originalResponse.body(), downloadResponseHandler))
.build();
})
.build()
.newCall(request)

View File

@ -23,7 +23,7 @@ public class DownloadCallback implements Callback {
private String mFilename;
public DownloadCallback(Handler handler, DownloadResponseHandler downloadResponseHandler,
String filedir, String filename) {
String filedir, String filename) {
mHandler = handler;
mDownloadResponseHandler = downloadResponseHandler;
mFileDir = filedir;
@ -44,39 +44,22 @@ public class DownloadCallback implements Callback {
@Override
public void onResponse(Call call, final Response response) throws IOException {
if(response.isSuccessful()) {
if (response.isSuccessful()) {
File file = null;
try {
file = saveFile(response, mFileDir, mFilename);
} catch (final IOException e) {
// LogUtils.e("onResponse saveFile fail", e);
mHandler.post(new Runnable() {
@Override
public void run() {
mDownloadResponseHandler.onFailure("onResponse saveFile fail." + e.toString());
}
});
mHandler.post(() -> mDownloadResponseHandler.onFailure("onResponse saveFile fail." + e.toString()));
}
final File newFile = file;
mHandler.post(new Runnable() {
@Override
public void run() {
mDownloadResponseHandler.onFinish(newFile);
}
});
mHandler.post(() -> mDownloadResponseHandler.onFinish(newFile));
} else {
// LogUtils.e("onResponse fail status=" + response.code());
mHandler.post(new Runnable() {
@Override
public void run() {
mDownloadResponseHandler.onFailure("fail status=" + response.code());
}
});
mHandler.post(() -> mDownloadResponseHandler.onFailure("fail status=" + response.code()));
}
}
//保存文件
private File saveFile(Response response, String filedir, String filename) throws IOException {
InputStream is = null;

View File

@ -11,6 +11,7 @@ import com.tenlionsoft.baselib.core.network.HttpUtils;
import com.tenlionsoft.baselib.core.network.response.DownloadResponseHandler;
import com.tenlionsoft.baselib.core.network.update.utils.Constants;
import com.tenlionsoft.baselib.core.network.update.utils.StorageUtils;
import com.tenlionsoft.baselib.utils.LogUtils;
import com.tenlionsoft.baselib.utils.ToastUtils;
import java.io.File;
@ -22,6 +23,7 @@ public class DownloadService extends Service {
private DownInfo downInfo;
private int oldProgress = 0;
private boolean mIsSuccess = true;
@Override
public void onCreate() {
@ -44,20 +46,21 @@ public class DownloadService extends Service {
private void downLoadFile() {
Intent intent = new Intent();
intent.setAction(PathConfig.ACTION_UPDATE_STAET);
sendBroadcast(intent);
HttpUtils.getInstance().download(downInfo.getUrl(), downInfo.getSavePath(), downInfo.getApkName(),
new DownloadResponseHandler() {
@Override
public void onFinish(File download_file) {
//收起通知栏
Intent intent = new Intent();
intent.setAction(PathConfig.ACTION_UPDATE_SUCCESS);
intent.putExtra("apkFile", download_file);
sendBroadcast(intent);
// NotificationBarUtil.setNotificationBarVisibility(DownloadService.this, false);
//安装
// notificationHelper.cancel();
LogUtils.e("下载成功");
if (mIsSuccess) {
//收起通知栏
Intent intent = new Intent();
intent.setAction(PathConfig.ACTION_UPDATE_SUCCESS);
intent.putExtra("apkFile", download_file);
sendBroadcast(intent);
}
stopSelf();
}
@ -65,7 +68,6 @@ public class DownloadService extends Service {
public void onProgress(long currentBytes, long totalBytes) {
int progress = (int) ((currentBytes * 1.0 / totalBytes) * 100);
if (progress != oldProgress) {
// notificationHelper.updateProgress(progress);
Intent intent = new Intent();
intent.setAction(PathConfig.ACTION_UPDATE_PROGRESS);
intent.putExtra("progress", progress);
@ -76,11 +78,12 @@ public class DownloadService extends Service {
@Override
public void onFailure(String error_msg) {
LogUtils.e("下载失败");
mIsSuccess = false;
ToastUtils.show("App下载失败,请稍后重试");
Intent intent = new Intent();
intent.setAction(PathConfig.ACTION_UPDATE_ERROR);
sendBroadcast(intent);
// notificationHelper.cancel();
stopSelf();
}
});

View File

@ -0,0 +1,587 @@
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.graphics.Typeface;
import android.text.Layout;
import android.text.SpannableString;
import android.text.StaticLayout;
import android.text.TextPaint;
import android.text.style.ForegroundColorSpan;
import android.text.style.RelativeSizeSpan;
import android.text.style.StyleSpan;
import android.util.AttributeSet;
import android.view.View;
import androidx.annotation.Nullable;
import com.tenlionsoft.baselib.utils.ConvertUtils;
import com.tenlionsoft.baselib.utils.LogUtils;
public class HalfCircleChartView extends View {
private Path mPath;
private Paint mPaintProgress;
private Paint mPaintProgressColor;
private Paint mColorPaint;
private Paint mPercentPaint;
private TextPaint mTextPaint;
private Paint mGrayPaint;
private int mPadding = 60;
private int mPaintWidth = 60;//画笔线宽
private RectF mRectF;
private int mWidth;
private int mHeight;
private Paint mBlackPaint;
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();
mPaintProgress = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaintProgress.setStrokeWidth(mPaintWidth);
mPaintProgress.setColor(Color.parseColor("#EBF0F6"));
mPaintProgress.setStyle(Paint.Style.STROKE);
mPaintProgress.setStrokeCap(Paint.Cap.ROUND);
// mPaintProgress.setAlpha(40);
mPaintProgress.setShadowLayer(6, 0, 6, Color.parseColor("#E0E0E0"));
mPaintProgressColor = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaintProgressColor.setStrokeWidth(mPaintWidth);
mPaintProgressColor.setColor(Color.parseColor("#305DFD"));
mPaintProgressColor.setStyle(Paint.Style.STROKE);
mPaintProgressColor.setStrokeCap(Paint.Cap.ROUND);
// mPaintProgressColor.setShadowLayer(6, -5, 5, Color.parseColor("#C2C9E3"));
mColorPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mColorPaint.setColor(Color.parseColor("#305DFD"));
mColorPaint.setStyle(Paint.Style.FILL);
mColorPaint.setTextAlign(Paint.Align.CENTER);
mColorPaint.setFakeBoldText(true);
mColorPaint.setTextSize(ConvertUtils.sp2px(20));
mColorPaint.setTextAlign(Paint.Align.CENTER);
mPercentPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPercentPaint.setColor(Color.parseColor("#305DFD"));
mPercentPaint.setStyle(Paint.Style.FILL);
mPercentPaint.setTextAlign(Paint.Align.CENTER);
mPercentPaint.setFakeBoldText(true);
mPercentPaint.setTextSize(ConvertUtils.sp2px(12));
mPercentPaint.setTextAlign(Paint.Align.CENTER);
mGrayPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mGrayPaint.setColor(Color.parseColor("#8F8F8F"));
mGrayPaint.setStyle(Paint.Style.FILL);
mGrayPaint.setTextAlign(Paint.Align.CENTER);
mGrayPaint.setTextSize(ConvertUtils.sp2px(12));
mBlackPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mBlackPaint.setColor(Color.BLACK);
mBlackPaint.setStyle(Paint.Style.FILL);
mBlackPaint.setStrokeWidth(10);
mTextPaint = new TextPaint();
mTextPaint.setColor(Color.parseColor("#305DFD"));
mTextPaint.setTextSize(ConvertUtils.sp2px(14));
mTextPaint.setTextAlign(Paint.Align.CENTER);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
mWidth = resolveSize(400, widthMeasureSpec);
mHeight = resolveSize(400, heightMeasureSpec);
setMeasuredDimension(
Math.max(getSuggestedMinimumWidth(),
resolveSize(mWidth,
widthMeasureSpec)),
Math.max(getSuggestedMinimumHeight(),
resolveSize(mHeight,
heightMeasureSpec)));
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//获取最小一边
int min = Math.min(mWidth, mHeight);
//中心点
int centerX = mWidth / 2;
int centerY = mHeight / 2;
int startY = centerY - min / 2;
int startX = centerX - min / 2;
int endY = centerY + min / 2;
int endX = centerX + min / 2;
LogUtils.e("矩形:(" + startX + ".." + startY + ")(" + endX + ".." + endY + ")");
// Rect path = new Rect(startX, startY, endX, endY);
// canvas.drawRect(path, mGrayPaint);
mRectF.set(startX + mPaintWidth, startY + mPaintWidth, endX - mPaintWidth, endY - mPaintWidth);
int offsetY = centerY - mPaintWidth;
LogUtils.e("中心点Y:" + mRectF.centerY() + "==" + centerY);
mRectF.offset(0, offsetY);
//绘制第一个环形背景
mPath.arcTo(mRectF, 180, 180);
canvas.drawPath(mPath, mPaintProgress);
//添加进度
addProgress(canvas);
//绘制文字
drawText(canvas, "70", offsetY);
}
private void drawText(Canvas canvas, String percent, int offsetY) {
//中心点
canvas.save();
int centerX = mWidth / 2;
int centerY = mHeight / 2;
SpannableString s = makeTxt("60");
StaticLayout textLayout = new StaticLayout(s, mTextPaint, canvas.getWidth(),
Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
canvas.translate(centerX, centerY + offsetY - mPaintWidth);
textLayout.draw(canvas);
canvas.restore();
//计算文字所占大小
// Rect perRect = new Rect();
// mColorPaint.getTextBounds(percent, 0, percent.length(), perRect);
//
// Rect centRect = new Rect();
// mPercentPaint.getTextBounds("%", 0, "%".length(), centRect);
// //文字所占长宽
// int strWidth = perRect.width() + centRect.width();
// LogUtils.e("文字所占宽度:" + strWidth);
// int strHeight = perRect.height();
//
// canvas.drawText(percent, centerX - strWidth / 2, centerY + perRect.height() / 2 + offsetY - mPaintWidth,
// mColorPaint);//绘制占比数字
//
// canvas.drawText("%", centerX + perRect.width() / 2, centerY + centRect.height() + offsetY - mPaintWidth,
// mPercentPaint);//绘制百分号
// canvas.drawPoint(centerX, centerY + offsetY - mPaintWidth, mBlackPaint);
//
// Rect re = new Rect();
// String s = "重点青少年占比";
// mGrayPaint.getTextBounds(s, 0, s.length(), re);
// canvas.drawText(s, centerX - re.width() / 2,
// centerY + strHeight + re.height() / 2 + 10 + offsetY - mPaintWidth, mGrayPaint);
}
private SpannableString makeTxt(String str) {
String content = str + "%\n重点青少年占比";
SpannableString s = new SpannableString(content);
s.setSpan(new StyleSpan(Typeface.BOLD), 0, content.indexOf(""), 0);
s.setSpan(new ForegroundColorSpan(Color.parseColor("#2F5CFB")), 0, content.indexOf(""), 0);
s.setSpan(new RelativeSizeSpan(1.3f), 0, content.indexOf(""), 0);
return s;
}
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

@ -49,7 +49,7 @@ public class ExceptionHandler {
} else if (throwable instanceof SocketTimeoutException) {
ToastUtils.show("网络连接超时");
} else {
ToastUtils.show("网络错误,请稍后重试(500)");
ToastUtils.show("服务器发生错误(500)");
}
}

View File

@ -58,8 +58,8 @@ ext {
gCompileSdkVersion = 30
gMinSdkVersion = 21
gTargetSdkVersion = 30
gVersionCode = 14
gVersionName = '1.1.3'
gVersionCode = 15
gVersionName = '1.1.4'
gBuildToolsVersion = "29.0.2"
// gVersionCode=26
// gVersionName='1.3.0'

View File

@ -1,5 +1,7 @@
package com.tengshisoft.commonmodule.activitys.usercenter;
import static android.app.Activity.RESULT_OK;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
@ -19,6 +21,9 @@ import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.content.FileProvider;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
import com.bumptech.glide.Glide;
@ -26,7 +31,6 @@ import com.bumptech.glide.load.resource.bitmap.CircleCrop;
import com.bumptech.glide.request.RequestOptions;
import com.github.promeg.pinyinhelper.Pinyin;
import com.google.gson.Gson;
import com.tenlionsoft.baselib.utils.ToastUtils;
import com.tengshisoft.commonmodule.R;
import com.tengshisoft.commonmodule.R2;
import com.tengshisoft.commonmodule.beans.ChangePwdBean;
@ -61,6 +65,7 @@ import com.tenlionsoft.baselib.utils.ExceptionHandler;
import com.tenlionsoft.baselib.utils.FileUtils;
import com.tenlionsoft.baselib.utils.LogUtils;
import com.tenlionsoft.baselib.utils.ProiderUtil;
import com.tenlionsoft.baselib.utils.ToastUtils;
import com.tenlionsoft.baselib.utils.UIUtil;
import com.tenlionsoft.baselib.utils.UserLgUtils;
@ -70,8 +75,6 @@ import java.util.Collections;
import java.util.List;
import java.util.Locale;
import androidx.annotation.NonNull;
import androidx.core.content.FileProvider;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;
@ -85,8 +88,6 @@ import okhttp3.RequestBody;
import top.zibin.luban.Luban;
import top.zibin.luban.OnCompressListener;
import static android.app.Activity.RESULT_OK;
/**
* 作者: Adam
* 日期: 2019/7/30 - 09:31
@ -179,8 +180,8 @@ public class UserCenterFragment extends BaseFragment {
*/
private void doChangeUserInfo() {
ARouter.getInstance()
.build(PathConfig.PATH_MODULE_COMMON_ACTIVITY_USER_INFO)
.navigation();
.build(PathConfig.PATH_MODULE_COMMON_ACTIVITY_USER_INFO)
.navigation();
}
/**
@ -200,8 +201,8 @@ public class UserCenterFragment extends BaseFragment {
*/
private void doOpenCollect() {
ARouter.getInstance()
.build(PathConfig.PATH_MODULE_COMMON_ACTIVITY_MINE_COLLECT)
.navigation();
.build(PathConfig.PATH_MODULE_COMMON_ACTIVITY_MINE_COLLECT)
.navigation();
}
/**
@ -246,46 +247,47 @@ public class UserCenterFragment extends BaseFragment {
*/
private void doSyncUser() {
RetrofitManager.getInstance()
.create(GridApis.class)
.getAllUserList(UserLgUtils.getToken())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<List<UserDatabaseBean>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
.create(GridApis.class)
.getAllUserList(UserLgUtils.getToken())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<List<UserDatabaseBean>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
}
@Override
public void onNext(@NonNull List<UserDatabaseBean> userDatabaseBeans) {
mUserDatabaseBeanList = userDatabaseBeans;
for (UserDatabaseBean next : mUserDatabaseBeanList) {
if (!TextUtils.isEmpty(next.getUserName())) {
next.setPinYin(Pinyin.toPinyin(next.getUserName(), ","));
} else {
next.setPinYin("#");
@Override
public void onNext(@NonNull List<UserDatabaseBean> userDatabaseBeans) {
mUserDatabaseBeanList = userDatabaseBeans;
for (UserDatabaseBean next : mUserDatabaseBeanList) {
if (!TextUtils.isEmpty(next.getUserName())) {
next.setPinYin(Pinyin.toPinyin(next.getUserName(), ","));
} else {
next.setPinYin("#");
}
}
Collator collator = Collator.getInstance(Locale.ENGLISH);
Collections.sort(mUserDatabaseBeanList, (o1, o2) -> collator.compare(o1.getPinYin(),
o2.getPinYin()));
++mCount;
if (mCount == 2) {
insertAll();
}
}
Collator collator = Collator.getInstance(Locale.ENGLISH);
Collections.sort(mUserDatabaseBeanList, (o1, o2) -> collator.compare(o1.getPinYin(), o2.getPinYin()));
++mCount;
if (mCount == 2) {
insertAll();
@Override
public void onError(@NonNull Throwable e) {
mCount = 0;
mDialog.dismiss();
ToastUtils.show("同步失败,请稍后重试");
}
}
@Override
public void onError(@NonNull Throwable e) {
mCount = 0;
mDialog.dismiss();
ToastUtils.show("同步失败,请稍后重试");
}
@Override
public void onComplete() {
@Override
public void onComplete() {
}
});
}
});
}
/**
@ -293,37 +295,37 @@ public class UserCenterFragment extends BaseFragment {
*/
private void doSyncDept() {
RetrofitManager.getInstance()
.create(GridApis.class)
.getAllDeptList(UserLgUtils.getToken())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<List<DeptDatabaseBean>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
.create(GridApis.class)
.getAllDeptList(UserLgUtils.getToken())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<List<DeptDatabaseBean>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull List<DeptDatabaseBean> deptDatabaseBeans) {
++mCount;
mDatabaseBeanList = deptDatabaseBeans;
if (mCount == 2) {
insertAll();
}
}
@Override
public void onError(@NonNull Throwable e) {
mCount = 0;
mDialog.dismiss();
ToastUtils.show("同步失败,请稍后重试");
}
@Override
public void onNext(@NonNull List<DeptDatabaseBean> deptDatabaseBeans) {
++mCount;
mDatabaseBeanList = deptDatabaseBeans;
if (mCount == 2) {
insertAll();
}
}
@Override
public void onComplete() {
@Override
public void onError(@NonNull Throwable e) {
mCount = 0;
mDialog.dismiss();
ToastUtils.show("同步失败,请稍后重试");
}
}
});
@Override
public void onComplete() {
}
});
}
@Override
@ -358,33 +360,33 @@ public class UserCenterFragment extends BaseFragment {
String obj = gson.toJson(bean);
RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), obj);
RetrofitManager.getInstance()
.create(BaseApiService.class)
.doChangePwd(body, UserLgUtils.getToken())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseSuccessBean>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
.create(BaseApiService.class)
.doChangePwd(body, UserLgUtils.getToken())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseSuccessBean>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
}
@Override
public void onNext(@NonNull BaseSuccessBean baseSuccessBean) {
ToastUtils.show("密码修改成功,请重新登录");
doLoginOut();
}
@Override
public void onNext(@NonNull BaseSuccessBean baseSuccessBean) {
ToastUtils.show("密码修改成功,请重新登录");
doLoginOut();
}
@Override
public void onError(@NonNull Throwable e) {
dialog.dismiss();
ExceptionHandler.handleException(e);
}
@Override
public void onError(@NonNull Throwable e) {
dialog.dismiss();
ExceptionHandler.handleException(e);
}
@Override
public void onComplete() {
@Override
public void onComplete() {
}
});
}
});
}
@ -393,11 +395,11 @@ public class UserCenterFragment extends BaseFragment {
*/
private void changeUserIcon() {
ButtomDialogView buttomDialogView = new ButtomDialogView.DialogBuilder(mActivity)
.setIsBackCancelable(true)
.setIscancelable(true)
.setShowLocation(Gravity.BOTTOM)
.setIsShowFile(false)
.build();
.setIsBackCancelable(true)
.setIscancelable(true)
.setShowLocation(Gravity.BOTTOM)
.setIsShowFile(false)
.build();
buttomDialogView.addOnChoseListener(new ButtomDialogView.OnChoseListener() {
@Override
public void choseFile() {
@ -407,7 +409,7 @@ public class UserCenterFragment extends BaseFragment {
public void choseAlbum() {
Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
"image/*");
"image/*");
startActivityForResult(intent, BaseUrlApi.PHOTO_REQUEST);
buttomDialogView.dismiss();
}
@ -480,63 +482,64 @@ public class UserCenterFragment extends BaseFragment {
ProgressDialog progressDialog = UIUtil.initDialog(mActivity, "头像修改中...");
progressDialog.show();
Luban.with(mActivity)
.load(picPath)
.ignoreBy(100)
.setTargetDir(mCachePath)
.filter(path -> !(TextUtils.isEmpty(path) || path.toLowerCase().endsWith(".gif")))
.setCompressListener(new OnCompressListener() {
@Override
public void onStart() {
.load(picPath)
.ignoreBy(100)
.setTargetDir(mCachePath)
.filter(path -> !(TextUtils.isEmpty(path) || path.toLowerCase().endsWith(".gif")))
.setCompressListener(new OnCompressListener() {
@Override
public void onStart() {
}
@Override
public void onSuccess(File file) {
RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody.Part body = MultipartBody.Part.createFormData("image", file.getName(), requestFile);
RetrofitManager.getInstance()
.create(BaseApiService.class)
.uploadImage(body, UserLgUtils.getToken())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseSuccessBean>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(BaseSuccessBean baseUserBean) {
changeUserInfo(baseUserBean.getData(), progressDialog);
}
@Override
public void onError(Throwable e) {
if (progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
}
ToastUtils.show("头像修改失败,请稍后重试.");
if (file.exists()) {
file.delete();
}
}
@Override
public void onComplete() {
}
});
}
@Override
public void onError(Throwable e) {
if (progressDialog.isShowing()) {
progressDialog.dismiss();
}
ToastUtils.show("头像修改失败,请稍后重试");
}
})
.launch();
@Override
public void onSuccess(File file) {
RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody.Part body = MultipartBody.Part.createFormData("image", file.getName(),
requestFile);
RetrofitManager.getInstance()
.create(BaseApiService.class)
.uploadImage(body, UserLgUtils.getToken())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseSuccessBean>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(BaseSuccessBean baseUserBean) {
changeUserInfo(baseUserBean.getData(), progressDialog);
}
@Override
public void onError(Throwable e) {
if (progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
}
ToastUtils.show("头像修改失败,请稍后重试.");
if (file.exists()) {
file.delete();
}
}
@Override
public void onComplete() {
}
});
}
@Override
public void onError(Throwable e) {
if (progressDialog.isShowing()) {
progressDialog.dismiss();
}
ToastUtils.show("头像修改失败,请稍后重试");
}
})
.launch();
}
private void changeUserInfo(String id, ProgressDialog dialog) {
@ -549,32 +552,32 @@ public class UserCenterFragment extends BaseFragment {
String obj = gson.toJson(bean);
RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), obj);
RetrofitManager.getInstance()
.create(BaseApiService.class)
.doChangeUserInfo(body, UserLgUtils.getToken())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseSuccessBean>() {
@Override
public void onSubscribe(Disposable d) {
.create(BaseApiService.class)
.doChangeUserInfo(body, UserLgUtils.getToken())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseSuccessBean>() {
@Override
public void onSubscribe(Disposable d) {
}
}
@Override
public void onNext(@NonNull BaseSuccessBean successBean) {
doLoginApp(UserLgUtils.getUserName(), UserLgUtils.getPassword(), dialog);
}
@Override
public void onNext(@NonNull BaseSuccessBean successBean) {
doLoginApp(UserLgUtils.getUserName(), UserLgUtils.getPassword(), dialog);
}
@Override
public void onError(@NonNull Throwable e) {
dialog.dismiss();
ExceptionHandler.handleException(e);
}
@Override
public void onError(@NonNull Throwable e) {
dialog.dismiss();
ExceptionHandler.handleException(e);
}
@Override
public void onComplete() {
@Override
public void onComplete() {
}
});
}
});
}
/**
@ -593,66 +596,67 @@ public class UserCenterFragment extends BaseFragment {
String obj = gson.toJson(info);
RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), obj);
RetrofitManager.getInstance()
.create(BaseApiService.class)
.doLogin(body)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseSuccessBean>() {
@Override
public void onSubscribe(Disposable d) {
.create(BaseApiService.class)
.doLogin(body)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseSuccessBean>() {
@Override
public void onSubscribe(Disposable d) {
}
}
@Override
public void onNext(BaseSuccessBean baseUserBean) {
dialog.dismiss();
if (!TextUtils.isEmpty(baseUserBean.getData())) {
byte[] decode = Base64.decode(baseUserBean.getData(), Base64.DEFAULT);
try {
String loginUserInfo = AesUtil.aesCommonDecoder(PathConfig.SECRET, new String(decode, "UTF-8"));
LogUtils.e(loginUserInfo);
if (!TextUtils.isEmpty(loginUserInfo)) {
AppTokenUser appTokenUser = gson.fromJson(loginUserInfo, AppTokenUser.class);
UserLgUtils.setLoginInfo(loginUserInfo);
UserLgUtils.setAvatar(appTokenUser.getAvatar());
UserLgUtils.setEmail(appTokenUser.getEmail());
UserLgUtils.setId(appTokenUser.getId());
UserLgUtils.setName(appTokenUser.getName());
UserLgUtils.setUserName(appTokenUser.getUsername());
UserLgUtils.setPhone(appTokenUser.getPhone());
UserLgUtils.setToken(baseUserBean.getData());
GlobalProvider.save(mActivity, "token", baseUserBean.getData());
UserLgUtils.setPassword(pwd);
Glide.with(mActivity)
.load(BaseUrlApi.BASE_IMG_URL + appTokenUser.getAvatar())
.apply(RequestOptions.bitmapTransform(new CircleCrop())
.error(R.drawable.ic_user_default)
.placeholder(R.drawable.ic_user_default))
.into(mIvUserIcon);
ToastUtils.show("头像修改成功.");
} else {
@Override
public void onNext(BaseSuccessBean baseUserBean) {
dialog.dismiss();
if (!TextUtils.isEmpty(baseUserBean.getData())) {
byte[] decode = Base64.decode(baseUserBean.getData(), Base64.DEFAULT);
try {
String loginUserInfo = AesUtil.aesCommonDecoder(PathConfig.SECRET, new String(decode,
"UTF-8"));
LogUtils.e(loginUserInfo);
if (!TextUtils.isEmpty(loginUserInfo)) {
AppTokenUser appTokenUser = gson.fromJson(loginUserInfo, AppTokenUser.class);
UserLgUtils.setLoginInfo(loginUserInfo);
UserLgUtils.setAvatar(appTokenUser.getAvatar());
UserLgUtils.setEmail(appTokenUser.getEmail());
UserLgUtils.setId(appTokenUser.getId());
UserLgUtils.setName(appTokenUser.getName());
UserLgUtils.setUserName(appTokenUser.getUsername());
UserLgUtils.setPhone(appTokenUser.getPhone());
UserLgUtils.setToken(baseUserBean.getData());
GlobalProvider.save(mActivity, "token", baseUserBean.getData());
UserLgUtils.setPassword(pwd);
Glide.with(mActivity)
.load(BaseUrlApi.BASE_IMG_URL + appTokenUser.getAvatar())
.apply(RequestOptions.bitmapTransform(new CircleCrop())
.error(R.drawable.ic_user_default)
.placeholder(R.drawable.ic_user_default))
.into(mIvUserIcon);
ToastUtils.show("头像修改成功.");
} else {
ToastUtils.show("头像修改失败,请稍后重试.");
}
} catch (Exception e) {
e.printStackTrace();
ToastUtils.show("头像修改失败,请稍后重试.");
}
} catch (Exception e) {
e.printStackTrace();
} else {
ToastUtils.show("头像修改失败,请稍后重试.");
}
} else {
ToastUtils.show("头像修改失败,请稍后重试.");
}
}
@Override
public void onError(Throwable e) {
dialog.dismiss();
ExceptionHandler.handleException(e);
}
@Override
public void onError(Throwable e) {
dialog.dismiss();
ExceptionHandler.handleException(e);
}
@Override
public void onComplete() {
@Override
public void onComplete() {
}
});
}
});
}
/**
@ -662,16 +666,16 @@ public class UserCenterFragment extends BaseFragment {
//测试聊天
AlertDialog.Builder builder = new AlertDialog.Builder(mHomeActivity);
builder.setTitle("提示")
.setMessage("确认要清除缓存文件吗?")
.setPositiveButton("确定", (dialog, which) -> {
dialog.dismiss();
boolean b = FileUtils.deleteFilesInDir(mCachePath);
if (b) {
ToastUtils.show("清除成功");
mTvCacheNum.setText("0.00MB");
}
})
.setNegativeButton("取消", (dialog, which) -> dialog.dismiss());
.setMessage("确认要清除缓存文件吗?")
.setPositiveButton("确定", (dialog, which) -> {
dialog.dismiss();
boolean b = FileUtils.deleteFilesInDir(mCachePath);
if (b) {
ToastUtils.show("清除成功");
mTvCacheNum.setText("0.00MB");
}
})
.setNegativeButton("取消", (dialog, which) -> dialog.dismiss());
builder.create().show();
}
@ -686,16 +690,17 @@ public class UserCenterFragment extends BaseFragment {
* 初始化视图
*/
private void initContentView() {
mCachePath = mHomeActivity.getExternalFilesDir(Environment.DIRECTORY_PICTURES).getAbsolutePath() + File.separator;
mCachePath =
mHomeActivity.getExternalFilesDir(Environment.DIRECTORY_PICTURES).getAbsolutePath() + File.separator;
mTvCacheNum.setText(FileUtils.getDirSize(mCachePath));
mTvVersionNum.setText("v " + AppUtils.getAppVersionName());
mTvUserName.setText(UserLgUtils.getName());
Glide.with(mActivity)
.load(BaseUrlApi.BASE_IMG_URL + UserLgUtils.getAvatar())
.apply(RequestOptions.bitmapTransform(new CircleCrop())
.error(R.drawable.ic_user_default)
.placeholder(R.drawable.ic_user_default))
.into(mIvUserIcon);
.load(BaseUrlApi.BASE_IMG_URL + UserLgUtils.getAvatar())
.apply(RequestOptions.bitmapTransform(new CircleCrop())
.error(R.drawable.ic_user_default)
.placeholder(R.drawable.ic_user_default))
.into(mIvUserIcon);
}
@ -713,46 +718,46 @@ public class UserCenterFragment extends BaseFragment {
ProgressDialog dialog = UIUtil.initDialog(mActivity, "检查中...");
dialog.show();
RetrofitManager.getInstance()
.create(BaseApiService.class)
.doCheckAppVersion(BaseUrlApi.APP_VERSION_ID)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<VersionBean>() {
@Override
public void onSubscribe(Disposable d) {
.create(BaseApiService.class)
.doCheckAppVersion(BaseUrlApi.APP_VERSION_ID)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<VersionBean>() {
@Override
public void onSubscribe(Disposable d) {
}
}
@Override
public void onNext(VersionBean successBean) {
dialog.dismiss();
if (successBean != null && successBean.getData() > 0) {
if (CheckUpdateUtils.checkcode(mActivity, successBean.getData() + "")) {
startDownloadApk();
} else {
ToastUtils.show("已经是最新版本");
@Override
public void onNext(VersionBean successBean) {
dialog.dismiss();
if (successBean != null && successBean.getData() > 0) {
if (CheckUpdateUtils.checkcode(mActivity, successBean.getData() + "")) {
startDownloadApk();
} else {
ToastUtils.show("已经是最新版本");
}
}
}
}
@Override
public void onError(Throwable e) {
dialog.dismiss();
ExceptionHandler.handleException(e);
}
@Override
public void onError(Throwable e) {
dialog.dismiss();
ExceptionHandler.handleException(e);
}
@Override
public void onComplete() {
@Override
public void onComplete() {
}
});
}
});
}
/**
* 开始下载Apk
*/
private void startDownloadApk() {
mHomeActivity.showUpdate();
// mHomeActivity.showUpdate();
ToastUtils.show("检测到新版本,开始下载.");
Intent intent = new Intent(mActivity, DownloadService.class);
intent.putExtra(Constants.APK_DOWNLOAD_URL, BaseUrlApi.APP_DOWNLOAD_URL);

View File

@ -139,11 +139,10 @@ public class PopulaceGridStatisticsFragment extends BaseFragment {
*/
private void setYoungData(String per) {
Double aDouble = Double.valueOf(per);
Double youngPer = aDouble / 100;
Double surplus = 100 - youngPer;
LogUtils.e("占比:" + youngPer + "\n剩余:" + surplus);
Double surplus = 100 - aDouble;
LogUtils.e("占比:" + aDouble + "\n剩余:" + surplus);
ArrayList<PieEntry> values = new ArrayList<>();
values.add(new PieEntry(youngPer.floatValue(), ""));
values.add(new PieEntry(aDouble.floatValue(), ""));
values.add(new PieEntry(surplus.floatValue(), ""));
PieDataSet dataSet = new PieDataSet(values, "");
@ -155,7 +154,7 @@ public class PopulaceGridStatisticsFragment extends BaseFragment {
data.setDrawValues(false);
data.setValueTextSize(11f);
data.setValueTextColor(Color.WHITE);
mPcYoung.setCenterText(youngCenterSpannableText(youngPer + ""));
mPcYoung.setCenterText(youngCenterSpannableText(aDouble + ""));
mPcYoung.setData(data);
mPcYoung.invalidate();
//将图表移动到底部

View File

@ -2,7 +2,6 @@ package com.tengshisoft.gridmodule.incident.activitys.populace;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
@ -25,7 +24,6 @@ import com.alibaba.android.arouter.launcher.ARouter;
import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
import com.bigkoo.pickerview.view.OptionsPickerView;
import com.google.gson.Gson;
import com.tenlionsoft.baselib.utils.ToastUtils;
import com.tengshisoft.commonmodule.adapters.CensusPersonAdapter;
import com.tengshisoft.commonmodule.beans.AreaGridListBean;
import com.tengshisoft.commonmodule.beans.CensusPersonBean;
@ -44,7 +42,7 @@ import com.tenlionsoft.baselib.core.widget.views.CenterBaseInputView;
import com.tenlionsoft.baselib.core.widget.views.CenterGridPhoneListView;
import com.tenlionsoft.baselib.core.widget.views.GridTextAdapter;
import com.tenlionsoft.baselib.utils.ExceptionHandler;
import com.tenlionsoft.baselib.utils.LogUtils;
import com.tenlionsoft.baselib.utils.ToastUtils;
import com.tenlionsoft.baselib.utils.UIUtil;
import com.tenlionsoft.baselib.utils.UserLgUtils;
@ -257,19 +255,23 @@ public class CensusBaseSearchActivity extends BaseActivity {
* 显示网格选择
*/
private void onShowGrid() {
if (mGridPicker == null) {
mGridPicker = new OptionsPickerBuilder(mActivity, (o1, o2, o3, v) -> {
mSelGrid = mGridList.get(o1);
mTvGrid.setText(mSelGrid.getGridName());
})
.setTitleText("请选择")
.setCancelColor(Color.parseColor("#1189FF"))
.setSubmitColor(Color.parseColor("#1189FF"))
.setTitleColor(Color.parseColor("#1189FF"))
.build();
mGridPicker.setPicker(mGridList);
if (mGridList != null && mGridList.size() > 0) {
if (mGridPicker == null) {
mGridPicker = new OptionsPickerBuilder(mActivity, (o1, o2, o3, v) -> {
mSelGrid = mGridList.get(o1);
mTvGrid.setText(mSelGrid.getGridName());
})
.setTitleText("请选择")
.setCancelColor(Color.parseColor("#1189FF"))
.setSubmitColor(Color.parseColor("#1189FF"))
.setTitleColor(Color.parseColor("#1189FF"))
.build();
mGridPicker.setPicker(mGridList);
}
mGridPicker.show();
} else {
ToastUtils.show("您暂未绑定网格,请联系管理员进行绑定.");
}
mGridPicker.show();
}
@Override

View File

@ -457,7 +457,6 @@ public class MainTabActivity extends BaseActivity implements LoginView, LocalBro
*/
private void startDownloadApk() {
ToastUtils.show("检测到新版本,开始下载");
showUpdateProgress();
Intent intent = new Intent(mActivity, DownloadService.class);
intent.putExtra(Constants.APK_DOWNLOAD_URL, BaseUrlApi.APP_DOWNLOAD_URL);
startService(intent);
@ -520,6 +519,7 @@ public class MainTabActivity extends BaseActivity implements LoginView, LocalBro
filter.addAction(PathConfig.ACTION_UPDATE_SUCCESS);//下载成功
filter.addAction(PathConfig.ACTION_UPDATE_ERROR);//下载失败
filter.addAction(PathConfig.ACTION_UPDATE_PROGRESS);//进度更新
filter.addAction(PathConfig.ACTION_UPDATE_STAET);//开始下载App
registerReceiver(mReceiver, filter);
}
@ -1054,6 +1054,8 @@ public class MainTabActivity extends BaseActivity implements LoginView, LocalBro
//判断是否可以安装
File apkFile = (File) intent.getSerializableExtra("apkFile");
installApk(apkFile);
}else if(PathConfig.ACTION_UPDATE_STAET.equals(action)){
showUpdateProgress();
}
}
}

View File

@ -217,13 +217,13 @@
<!--通知公告-->
<LinearLayout
android:id="@+id/ll_notice"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@drawable/shp_rectangle_white_5"
android:gravity="center_vertical"
android:orientation="horizontal">
android:orientation="horizontal"
android:visibility="gone">
<ImageView
android:layout_width="36dp"
@ -261,8 +261,8 @@
android:id="@+id/tv_notice_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:layout_marginLeft="3dp"
android:ellipsize="end"
android:maxLines="1"
android:textSize="@dimen/text_14" />
</LinearLayout>