From 5241320e6efa47bb4acc81daa63a362aa1825071 Mon Sep 17 00:00:00 2001 From: itgaojian Date: Fri, 30 Jun 2023 18:01:16 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/kotlinc.xml | 2 +- baselib/build.gradle | 2 +- .../baselib/app/BaseAppContext.java | 12 +- .../baselib/constant/PathConfig.java | 4 + .../baselib/core/beans/BallTypeBean.java | 22 + .../update/service/DownloadService.java | 67 +-- .../baselib/core/retrofit_net/BaseUrlApi.java | 11 +- .../baselib/core/widget/PhotoActivity.java | 3 +- .../core/widget/TakeVideoActivity.java | 3 +- .../core/widget/base/BaseActivity.java | 3 +- .../widget/base/ConditionAllAreaAdapter.java | 56 ++ .../core/widget/views/AddCarPersonDialog.java | 3 +- .../core/widget/views/AddPersonDialog.java | 3 +- .../core/widget/views/AppraiseDialog.java | 3 +- .../core/widget/views/AreaChooseDialog.java | 3 +- .../baselib/core/widget/views/BallView.java | 232 ++++++++ .../core/widget/views/BaseAreaListDialog.java | 3 +- .../widget/views/ButtomDialogCommentView.java | 3 +- .../widget/views/CenterBaseInputView.java | 3 +- .../views/CenterChooseAreaDialogView.java | 3 +- .../widget/views/CenterInputChooseView.java | 3 +- .../core/widget/views/CenterInputView.java | 3 +- .../widget/views/CenterInputViewBase.java | 3 +- .../views/CenterProgressUpdateView.java | 146 +++++ .../widget/views/CenterTextAndInputView.java | 3 +- .../widget/views/CenterTimeAndIntputView.java | 3 +- .../core/widget/views/ChangePwdDialog.java | 3 +- .../core/widget/views/CircleChartView.java | 196 +++++++ .../core/widget/views/CircleProgress.java | 506 ++++++++++++++++++ .../widget/views/ConditionAllAreaPopup.java | 290 ++++++++++ .../core/widget/views/CorrectionDialog.java | 3 +- .../core/widget/views/DiffcultDialog.java | 3 +- .../core/widget/views/LimitEmojiEditText.java | 3 +- .../baselib/core/widget/views/Pie3DView.java | 106 ++++ .../widget/views/SearchPersonDialogView.java | 3 +- .../tenlionsoft/baselib/utils/ColorInfo.java | 50 ++ .../baselib/utils/ExceptionHandler.java | 2 +- .../baselib/utils/RandomColor.java | 421 +++++++++++++++ .../com/tenlionsoft/baselib/utils/Range.java | 20 + .../tenlionsoft/baselib/utils/TimeUtils.java | 5 + .../tenlionsoft/baselib/utils/ToastUtils.java | 18 + .../res/drawable-xhdpi/ic_rb_normal_icon.png | Bin 0 -> 673 bytes .../res/drawable-xhdpi/ic_rb_sel_point.png | Bin 0 -> 853 bytes .../ic_statistics_count_percent_icon.png | Bin 0 -> 4174 bytes .../main/res/drawable/sel_radio_item_hook.xml | 5 + .../shp_rectangle_shade_white_blue.xml | 9 + .../shp_rectangle_top_left_bottom.xml | 8 + .../drawable/shp_rectangle_yellow_shallow.xml | 6 + .../layout/dialog_center_update_progress.xml | 43 ++ .../src/main/res/layout/item_all_area_sel.xml | 38 ++ .../main/res/layout/popup_all_area_layout.xml | 90 ++++ baselib/src/main/res/values/attrs.xml | 33 ++ baselib/src/main/res/values/colors.xml | 1 + baselib/src/main/res/values/dimens.xml | 1 + build.gradle | 4 +- .../activity/AddressListActivity.java | 3 +- .../activity/AddressListSearchActivity.java | 3 +- .../activity/AddressUserDetailActivity.java | 3 +- .../activity/CallSingleActivity.java | 3 +- .../chatmodule/activity/ChatActivity.java | 3 +- .../activity/InvitedPointCallActivity.java | 3 +- .../activity/ParticipantsActivityV2.java | 3 +- .../activity/SponsorMeetingActivity.java | 3 +- .../hwclud/manager/LoginMangerV2.java | 3 +- .../hwclud/serivce/AuxSendService.java | 3 +- .../hwclud/serivce/FloatingViewService.java | 3 +- .../hwclud/serivce/MinimizeService.java | 3 +- .../hwclud/serivce/ServiceNotifyV2.java | 3 +- .../hwclud/ui/AuxMeetingFragment.java | 3 +- .../hwclud/ui/BaseMvpActivityV2.java | 3 +- .../hwclud/ui/LazyloadFragment.java | 3 +- .../chatmodule/hwclud/ui/SvcVideoFragment.kt | 2 +- .../chatmodule/hwclud/utils/HuaweiUtils.java | 3 +- .../chatmodule/hwclud/utils/PhoneUtil.java | 3 +- .../chatmodule/hwclud/utils/UIUtil.java | 3 +- .../keeplive/services/VoipReceiver.java | 3 +- .../activitys/incident/DeptSelActivity.java | 3 +- .../IncidentAcceptDetailActivity.java | 3 +- .../incident/IncidentAcceptListActivity.java | 3 +- .../incident/IncidentAlterDetailActivity.java | 3 +- .../incident/IncidentAlterListActivity.java | 3 +- .../incident/IncidentAnewListActivity.java | 3 +- .../IncidentDispatchDetailActivity.java | 3 +- .../IncidentDispatchListActivity.java | 3 +- .../cases/IncidentArchiveListActivity.java | 3 +- .../cases/IncidentAreaListActivity.java | 3 +- .../IncidentCenterCheckDetailActivity.java | 3 +- .../IncidentCenterCheckListActivity.java | 3 +- .../cases/IncidentCheckDetailActivity.java | 3 +- .../cases/IncidentCheckListActivity.java | 3 +- .../cases/IncidentComponentSelActivity.java | 3 +- .../IncidentDeferExamineDetailActivity.java | 3 +- .../IncidentDeferExamineListActivity.java | 3 +- .../cases/IncidentDetailActivity.java | 3 +- .../cases/IncidentDoneListActivity.java | 3 +- .../activitys/cases/IncidentEditActivity.java | 3 +- .../cases/IncidentHandleActivity.java | 3 +- .../cases/IncidentHandleListActivity.java | 3 +- .../activitys/cases/IncidentListActivity.java | 3 +- .../IncidentOverseeDetailOrReplyActivity.java | 3 +- .../cases/IncidentReportActivity.java | 3 +- .../cases/IncidentReturnRecordActivity.java | 2 +- .../IncidentReturnRecordAddActivity.java | 3 +- .../cases/IncidentSpecialActivity.java | 3 +- .../cases/IncidentSpecialDeptActivity.java | 3 +- .../TaskConverIncidentDetailActivity.java | 1 + .../TaskConverIncidentReportActivity.java | 3 +- .../ChooseCommunityUserActivity.java | 3 +- .../department/ChooseDeptActivity.java | 3 +- .../ChooseDeptKnowLedgeActivity.java | 3 +- .../department/ChooseDeptUserActivity.java | 3 +- .../department/ChooseGridActivity.java | 3 +- .../department/ChooseGridUserActivity.java | 3 +- .../department/ChooseOrgAreaActivity.java | 3 +- .../department/ChoosePersonActivity.java | 3 +- .../journal/JournalListActivity.java | 3 +- .../logs/StatisticsCommandActivity.java | 1 + .../logs/StatisticsGridActivity.java | 3 +- .../populace/CensusBaseDetailActivity.java | 3 +- .../populace/PopulaceAreaListActivity.java | 6 +- .../repository/KnowLedgeAskAddActivity.java | 3 +- .../KnowLedgeAskDetailActivity.java | 3 +- .../repository/KnowLedgeDetailActivity.java | 3 +- .../repository/KnowLedgeListActivity.java | 3 +- .../KnowLedgeManageAddActivity.java | 3 +- .../KnowLedgeManageDetailActivity.java | 3 +- .../KnowLedgeManageListActivity.java | 3 +- .../usercenter/ForgetPwdActivity.java | 3 +- .../usercenter/UserCenterActivity.java | 3 +- .../usercenter/UserCenterFragment.java | 3 +- .../adapters/GridPersonCountAdapter.java | 56 ++ .../adapters/IncidentStatisticsAdapter.java | 83 +++ .../commonmodule/adapters/LabelAdapter.java | 3 +- .../adapters/PopulaceCountAdapter.java | 40 ++ .../commonmodule/beans/AreaGridCountBean.java | 35 ++ .../beans/AreaGridLowCountBean.java | 55 ++ .../beans/AreaIncidentCategoryBean.java | 68 +++ .../beans/AreaIncidentHotBean.java | 68 +++ .../beans/AreaIncidentPercentBean.java | 81 +++ .../beans/AreaIncidentScaleBean.java | 19 +- .../commonmodule/beans/AreaPopulaceBean.java | 268 ++++++++++ .../commonmodule/beans/IncidentTop7Bean.java | 95 ++++ .../commonmodule/beans/LabelBean.java | 15 +- .../GridLeaderStatisticsFragment.java | 370 ++++++++++++- .../IncidentLeaderStatisticsFragment.java | 346 ++++++++---- .../fragments/IncidentNoFileListFragment.java | 3 +- .../IncidentYetFileListFragment.java | 3 +- .../fragments/KnowLedgeDeptListFragment.java | 3 +- .../KnowLedgeListByDeptFragment.java | 3 +- .../fragments/KnowLedgeListFragment.java | 3 +- .../PopulaceLeaderStatisticsFragment.java | 357 +++++++++++- .../holders/GridCountItemHolder.java | 20 + .../holders/IncidentStatisticsHolder.java | 25 + .../holders/PopulaceItemHolder.java | 20 + .../commonmodule/nets/CenterApis.java | 63 +++ .../utils/PiePercentFormater.java | 39 ++ .../views/MyIncidentMarkerView.java | 50 ++ .../commonmodule/views/MyMarkerView.java | 59 ++ .../ic_grid_statistics_count.png | Bin 0 -> 1912 bytes .../ic_point_blue_text_title.png | Bin 0 -> 151 bytes .../ic_point_yellow_text_title.png | Bin 0 -> 146 bytes .../res/drawable-xhdpi/ic_statistics_one.png | Bin 0 -> 17577 bytes .../ic_statistics_pillar_icon.png | Bin 0 -> 1097 bytes .../ic_statistics_populace_title_icon.png | Bin 0 -> 1869 bytes .../drawable-xhdpi/ic_statistics_third.png | Bin 0 -> 17938 bytes .../res/drawable-xhdpi/ic_statistics_two.png | Bin 0 -> 17280 bytes .../src/main/res/drawable-xhdpi/marker2.png | Bin 0 -> 3389 bytes .../res/drawable/shp_rec_border_green.xml | 9 + .../main/res/layout/custom_marker_view.xml | 24 + .../fragment_grid_leader_statistics.xml | 373 ++++++++++++- .../fragment_incident_leader_statistics.xml | 74 +-- .../fragment_populace_leader_statistics.xml | 336 +++++++++++- .../res/layout/item_grid_count_percent.xml | 33 ++ .../layout/item_grid_incident_statistics.xml | 52 ++ .../main/res/layout/item_populace_percent.xml | 27 + .../res/layout/multi_incident_mark_view.xml | 55 ++ .../src/main/res/layout/multi_mark_view.xml | 55 ++ .../tengshisoft/mainmodule/MainActivity.java | 3 +- .../base/CustomPushMsgActivity.java | 2 +- .../mainmodule/base/LoginActivity.java | 202 +++---- .../mainmodule/base/MainTabActivity.java | 103 +++- .../mainmodule/base/SplashActivity.java | 2 +- .../modulemap/activitys/SelPointActivity.java | 3 +- 183 files changed, 5882 insertions(+), 412 deletions(-) create mode 100644 baselib/src/main/java/com/tenlionsoft/baselib/core/beans/BallTypeBean.java create mode 100644 baselib/src/main/java/com/tenlionsoft/baselib/core/widget/base/ConditionAllAreaAdapter.java create mode 100644 baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/BallView.java create mode 100755 baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterProgressUpdateView.java create mode 100644 baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CircleChartView.java create mode 100755 baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CircleProgress.java create mode 100644 baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/ConditionAllAreaPopup.java create mode 100644 baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/Pie3DView.java create mode 100644 baselib/src/main/java/com/tenlionsoft/baselib/utils/ColorInfo.java create mode 100644 baselib/src/main/java/com/tenlionsoft/baselib/utils/RandomColor.java create mode 100644 baselib/src/main/java/com/tenlionsoft/baselib/utils/Range.java create mode 100644 baselib/src/main/java/com/tenlionsoft/baselib/utils/ToastUtils.java create mode 100644 baselib/src/main/res/drawable-xhdpi/ic_rb_normal_icon.png create mode 100644 baselib/src/main/res/drawable-xhdpi/ic_rb_sel_point.png create mode 100644 baselib/src/main/res/drawable-xhdpi/ic_statistics_count_percent_icon.png create mode 100644 baselib/src/main/res/drawable/sel_radio_item_hook.xml create mode 100755 baselib/src/main/res/drawable/shp_rectangle_shade_white_blue.xml create mode 100755 baselib/src/main/res/drawable/shp_rectangle_top_left_bottom.xml create mode 100755 baselib/src/main/res/drawable/shp_rectangle_yellow_shallow.xml create mode 100755 baselib/src/main/res/layout/dialog_center_update_progress.xml create mode 100644 baselib/src/main/res/layout/item_all_area_sel.xml create mode 100644 baselib/src/main/res/layout/popup_all_area_layout.xml create mode 100644 commonmodule/src/main/java/com/tengshisoft/commonmodule/adapters/GridPersonCountAdapter.java create mode 100644 commonmodule/src/main/java/com/tengshisoft/commonmodule/adapters/IncidentStatisticsAdapter.java create mode 100644 commonmodule/src/main/java/com/tengshisoft/commonmodule/adapters/PopulaceCountAdapter.java create mode 100644 commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaGridCountBean.java create mode 100644 commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaGridLowCountBean.java create mode 100644 commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaIncidentCategoryBean.java create mode 100644 commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaIncidentHotBean.java create mode 100644 commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaIncidentPercentBean.java create mode 100644 commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaPopulaceBean.java create mode 100644 commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/IncidentTop7Bean.java create mode 100644 commonmodule/src/main/java/com/tengshisoft/commonmodule/holders/GridCountItemHolder.java create mode 100644 commonmodule/src/main/java/com/tengshisoft/commonmodule/holders/IncidentStatisticsHolder.java create mode 100644 commonmodule/src/main/java/com/tengshisoft/commonmodule/holders/PopulaceItemHolder.java create mode 100644 commonmodule/src/main/java/com/tengshisoft/commonmodule/utils/PiePercentFormater.java create mode 100644 commonmodule/src/main/java/com/tengshisoft/commonmodule/views/MyIncidentMarkerView.java create mode 100644 commonmodule/src/main/java/com/tengshisoft/commonmodule/views/MyMarkerView.java create mode 100644 commonmodule/src/main/res/drawable-xhdpi/ic_grid_statistics_count.png create mode 100644 commonmodule/src/main/res/drawable-xhdpi/ic_point_blue_text_title.png create mode 100644 commonmodule/src/main/res/drawable-xhdpi/ic_point_yellow_text_title.png create mode 100755 commonmodule/src/main/res/drawable-xhdpi/ic_statistics_one.png create mode 100755 commonmodule/src/main/res/drawable-xhdpi/ic_statistics_pillar_icon.png create mode 100755 commonmodule/src/main/res/drawable-xhdpi/ic_statistics_populace_title_icon.png create mode 100755 commonmodule/src/main/res/drawable-xhdpi/ic_statistics_third.png create mode 100755 commonmodule/src/main/res/drawable-xhdpi/ic_statistics_two.png create mode 100755 commonmodule/src/main/res/drawable-xhdpi/marker2.png create mode 100644 commonmodule/src/main/res/drawable/shp_rec_border_green.xml create mode 100755 commonmodule/src/main/res/layout/custom_marker_view.xml create mode 100644 commonmodule/src/main/res/layout/item_grid_count_percent.xml create mode 100644 commonmodule/src/main/res/layout/item_grid_incident_statistics.xml create mode 100644 commonmodule/src/main/res/layout/item_populace_percent.xml create mode 100644 commonmodule/src/main/res/layout/multi_incident_mark_view.xml create mode 100644 commonmodule/src/main/res/layout/multi_mark_view.xml diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml index 1f71170..4515aa3 100644 --- a/.idea/kotlinc.xml +++ b/.idea/kotlinc.xml @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/baselib/build.gradle b/baselib/build.gradle index 9ff93df..a462409 100755 --- a/baselib/build.gradle +++ b/baselib/build.gradle @@ -92,7 +92,7 @@ dependencies { api 'me.rosuh:AndroidFilePicker:0.8.3' //toast - api 'com.github.getActivity:ToastUtils:9.5' + api 'com.github.getActivity:Toaster:12.3' //图片压缩 api "top.zibin:Luban:$rootProject.ext.lubanVersio" diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/app/BaseAppContext.java b/baselib/src/main/java/com/tenlionsoft/baselib/app/BaseAppContext.java index 3c43bbb..574c89a 100644 --- a/baselib/src/main/java/com/tenlionsoft/baselib/app/BaseAppContext.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/app/BaseAppContext.java @@ -6,7 +6,10 @@ import android.net.NetworkInfo; import android.os.PowerManager; import android.view.Gravity; -import com.hjq.toast.ToastUtils; +import androidx.multidex.MultiDex; +import androidx.multidex.MultiDexApplication; + +import com.hjq.toast.Toaster; import com.scwang.smart.refresh.footer.ClassicsFooter; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tenlionsoft.baselib.constant.BroadcastConstant; @@ -15,9 +18,6 @@ import com.tenlionsoft.baselib.core.listener.ScreenListener; import com.tenlionsoft.baselib.core.widget.refresh.BezierCircleHeader; import com.tenlionsoft.baselib.utils.LogUtils; -import androidx.multidex.MultiDex; -import androidx.multidex.MultiDexApplication; - /** * 作者: adam * 日期: 2021/10/29 - 9:48 上午 @@ -58,8 +58,8 @@ public class BaseAppContext extends MultiDexApplication { public void onCreate() { super.onCreate(); app = this; - ToastUtils.init(this); - ToastUtils.setGravity(Gravity.BOTTOM, 0, 100); + Toaster.init(this); + Toaster.setGravity(Gravity.TOP, 0, 120); PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); isScreenOn = powerManager.isInteractive(); screenTurningOff(); diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/constant/PathConfig.java b/baselib/src/main/java/com/tenlionsoft/baselib/constant/PathConfig.java index 47ef85e..2b4f158 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/constant/PathConfig.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/constant/PathConfig.java @@ -573,4 +573,8 @@ public class PathConfig { public static final String PATH_MODULE_COMMON_FRAGMENT_INCIDENT_STATISTICS = "/modulecommon/fragment/incidentLeaderStatistics";//事件统计 public static final String PATH_MODULE_COMMON_FRAGMENT_POPULACE_STATISTICS = "/modulecommon/fragment/populaceLeaderStatistics";//人口统计 public static final String PATH_MODULE_COMMON_FRAGMENT_GRID_STATISTICS = "/modulecommon/fragment/gridLeaderStatistics";//网格统计 + + public static final String ACTION_UPDATE_ERROR = "com.tenlionsoft.commandclient.update_error"; + public static final String ACTION_UPDATE_PROGRESS = "com.tenlionsoft.commandclient.update_progress"; + public static final String ACTION_UPDATE_SUCCESS = "com.tenlionsoft.commandclient.update_success"; } diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/beans/BallTypeBean.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/beans/BallTypeBean.java new file mode 100644 index 0000000..c94439b --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/beans/BallTypeBean.java @@ -0,0 +1,22 @@ +package com.tenlionsoft.baselib.core.beans; + +public class BallTypeBean { + private String typeName; + private String typePercent; + + public String getTypeName() { + return typeName; + } + + public void setTypeName(String typeName) { + this.typeName = typeName; + } + + public String getTypePercent() { + return typePercent; + } + + public void setTypePercent(String typePercent) { + this.typePercent = typePercent; + } +} diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/network/update/service/DownloadService.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/network/update/service/DownloadService.java index 43d1c1a..c7acfc7 100644 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/network/update/service/DownloadService.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/network/update/service/DownloadService.java @@ -4,19 +4,19 @@ import android.app.Service; import android.content.Intent; import android.os.IBinder; -import com.hjq.toast.ToastUtils; +import androidx.annotation.Nullable; + +import com.tenlionsoft.baselib.utils.ToastUtils; +import com.tenlionsoft.baselib.constant.PathConfig; import com.tenlionsoft.baselib.core.network.HttpUtils; import com.tenlionsoft.baselib.core.network.response.DownloadResponseHandler; -import com.tenlionsoft.baselib.core.network.update.utils.ApkUtils; import com.tenlionsoft.baselib.core.network.update.utils.Constants; -import com.tenlionsoft.baselib.core.network.update.utils.NotificationBarUtil; import com.tenlionsoft.baselib.core.network.update.utils.NotificationHelper; import com.tenlionsoft.baselib.core.network.update.utils.StorageUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import java.io.File; -import androidx.annotation.Nullable; - /** * 下载服务 */ @@ -48,33 +48,40 @@ public class DownloadService extends Service { private void downLoadFile() { - HttpUtils.getInstance().download(downInfo.getUrl(), downInfo.getSavePath(), downInfo.getApkName(), new DownloadResponseHandler() { - @Override - public void onFinish(File download_file) { - //收起通知栏 - NotificationBarUtil.setNotificationBarVisibility(DownloadService.this, false); - //安装 - ApkUtils.installAPk(DownloadService.this, download_file); - notificationHelper.cancel(); - stopSelf(); - } + 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); + stopSelf(); + } - @Override - public void onProgress(long currentBytes, long totalBytes) { - int progress = (int) ((currentBytes * 1.0 / totalBytes) * 100); - if (progress != oldProgress) { - notificationHelper.updateProgress(progress); - } - oldProgress = progress; - } + @Override + public void onProgress(long currentBytes, long totalBytes) { + int progress = (int) ((currentBytes * 1.0 / totalBytes) * 100); + if (progress != oldProgress) { + Intent intent = new Intent(); + intent.setAction(PathConfig.ACTION_UPDATE_PROGRESS); + intent.putExtra("progress", progress); + sendBroadcast(intent); + } + oldProgress = progress; + } - @Override - public void onFailure(String error_msg) { - ToastUtils.show("App下载失败,请稍后重试"); - notificationHelper.cancel(); - stopSelf(); - } - }); + @Override + public void onFailure(String error_msg) { + ToastUtils.show("App下载失败,请稍后重试"); + Intent intent = new Intent(); + intent.setAction(PathConfig.ACTION_UPDATE_ERROR); + sendBroadcast(intent); + stopSelf(); + } + }); } diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/retrofit_net/BaseUrlApi.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/retrofit_net/BaseUrlApi.java index eba3c31..0ff0cb8 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/retrofit_net/BaseUrlApi.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/retrofit_net/BaseUrlApi.java @@ -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/";/*事件部件*/ @@ -20,12 +20,13 @@ public class BaseUrlApi { public static final String SYS_VISITS = "visits/";/*信访系统*/ public static final String BASE_MAIN_IP = IP + SYS_USERCENTER; -// public static final String BASE_CASE_IP = IP + SYS_CASE; + // public static final String BASE_CASE_IP = IP + SYS_CASE; public static final String BASE_CASE_IP = "http://192.168.0.120:9000/" + SYS_CASE; - public static final String BASE_CASE_LOCAL_IP="http://49.233.36.36:58099/case/"; + public static final String BASE_CASE_LOCAL_IP = "http://49.233.36.36:58099/case/"; public static final String BASE_LIBRARY_IP = IP + SYS_LIBRARY; public static final String BASE_TASK_IP = IP + SYS_TASK; - public static final String BASE_PERSON_IP = IP + SYS_POPULATION; + // public static final String BASE_PERSON_IP = IP + SYS_POPULATION; + public static final String BASE_PERSON_IP = "http://192.168.0.115:8080/" + SYS_POPULATION; public static final String BASE_HOUSE_IP = IP + SYS_HOUSE; public static final String BASE_SECURITY_IP = IP + SYS_SECURITY; public static final String BASE_VISITS_IP = IP + SYS_VISITS; diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/PhotoActivity.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/PhotoActivity.java index 20e7902..8b68bc7 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/PhotoActivity.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/PhotoActivity.java @@ -11,12 +11,13 @@ import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Route; import com.bumptech.glide.Glide; import com.bumptech.glide.request.target.Target; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.R; import com.tenlionsoft.baselib.R2; import com.tenlionsoft.baselib.constant.PathConfig; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.core.widget.photoview.adapter.ImageAdapter; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import java.io.File; diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/TakeVideoActivity.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/TakeVideoActivity.java index 7a9b74d..ecfa6a0 100644 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/TakeVideoActivity.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/TakeVideoActivity.java @@ -8,7 +8,7 @@ import android.util.Log; import android.view.View; import com.alibaba.android.arouter.facade.annotation.Route; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.luck.picture.lib.tools.BitmapUtils; import com.tenlionsoft.baselib.R; import com.tenlionsoft.baselib.R2; @@ -19,6 +19,7 @@ import com.tenlionsoft.baselib.core.camera.listener.JCameraListener; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.utils.ImageUtils; import com.tenlionsoft.baselib.utils.LogUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import java.io.File; diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/base/BaseActivity.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/base/BaseActivity.java index 171c109..135a7db 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/base/BaseActivity.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/base/BaseActivity.java @@ -43,11 +43,12 @@ import android.widget.TextView; import com.alibaba.android.arouter.launcher.ARouter; import com.gyf.immersionbar.ImmersionBar; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.R; import com.tenlionsoft.baselib.constant.PathConfig; import com.tenlionsoft.baselib.core.widget.views.AfxTextView; import com.tenlionsoft.baselib.utils.LogUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UserLgUtils; import java.util.ArrayList; diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/base/ConditionAllAreaAdapter.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/base/ConditionAllAreaAdapter.java new file mode 100644 index 0000000..e768228 --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/base/ConditionAllAreaAdapter.java @@ -0,0 +1,56 @@ +package com.tenlionsoft.baselib.core.widget.base; + +import android.content.Context; +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.tenlionsoft.baselib.R; +import com.tenlionsoft.baselib.core.beans.AreaSimpleBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * 作者: adam + * 日期: 2021/10/20 - 11:18 上午 + * 邮箱: itgaojian@163.com + * 描述:区域筛选 + */ +public class ConditionAllAreaAdapter extends BaseRecyclerAdapter { + public List mSelBeans = new ArrayList<>(); + + public ConditionAllAreaAdapter(Context ctx, List list) { + super(ctx, list); + } + + @Override + public ConditionHolder createHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(mContext).inflate(R.layout.item_all_area_sel, parent, false); + return new ConditionHolder(view); + } + + @Override + public void bindHolder(ConditionHolder holder, int i) { + AreaSimpleBean bean = mData.get(i); + holder.mTvName.setText(bean.getName()); + holder.mCbCheck.setOnCheckedChangeListener(null); + holder.mTvName.setTextColor(bean.isChecked() ? Color.parseColor("#1296db") : Color.BLACK); + holder.mCbCheck.setChecked(bean.isChecked()); + holder.mCbCheck.setOnCheckedChangeListener((buttonView, isChecked) -> mLis.onItemCheckChange(bean, isChecked, i)); + if (mLis != null) { + holder.itemView.setOnClickListener(v -> mLis.onItemCheckChange(bean, !bean.isChecked(), i)); + } + } + + private OnItemCheckChange mLis; + + public void addOnitemCheckChange(OnItemCheckChange lis) { + this.mLis = lis; + } + + public interface OnItemCheckChange { + void onItemCheckChange(AreaSimpleBean bean, boolean isCheck, int pos); + } +} diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/AddCarPersonDialog.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/AddCarPersonDialog.java index 34081a5..7d87db4 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/AddCarPersonDialog.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/AddCarPersonDialog.java @@ -19,10 +19,11 @@ import android.widget.TextView; import com.bigkoo.pickerview.builder.TimePickerBuilder; import com.bigkoo.pickerview.view.TimePickerView; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.R; import com.tenlionsoft.baselib.utils.RegexUtils; import com.tenlionsoft.baselib.utils.TimeUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import androidx.appcompat.widget.SwitchCompat; diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/AddPersonDialog.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/AddPersonDialog.java index a0c341f..08c68e3 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/AddPersonDialog.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/AddPersonDialog.java @@ -21,9 +21,10 @@ import android.widget.CompoundButton; import android.widget.EditText; import android.widget.ImageView; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.R; import com.tenlionsoft.baselib.utils.RegexUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import androidx.appcompat.widget.SwitchCompat; diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/AppraiseDialog.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/AppraiseDialog.java index 7b69aca..fc6c1c1 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/AppraiseDialog.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/AppraiseDialog.java @@ -16,9 +16,10 @@ import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.RatingBar; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.R; import com.tenlionsoft.baselib.utils.RegexUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import androidx.appcompat.widget.AppCompatRatingBar; import androidx.appcompat.widget.SwitchCompat; diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/AreaChooseDialog.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/AreaChooseDialog.java index a49b91d..f4f4d22 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/AreaChooseDialog.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/AreaChooseDialog.java @@ -17,12 +17,13 @@ import android.widget.TextView; import com.bigkoo.pickerview.builder.OptionsPickerBuilder; import com.bigkoo.pickerview.view.OptionsPickerView; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.R; import com.tenlionsoft.baselib.constant.PathConfig; import com.tenlionsoft.baselib.core.beans.AreaBean; import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.retrofit_net.api.BaseApiService; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/BallView.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/BallView.java new file mode 100644 index 0000000..24901d5 --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/BallView.java @@ -0,0 +1,232 @@ +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.Rect; +import android.util.AttributeSet; +import android.view.View; + +import androidx.annotation.Nullable; + +import com.tenlionsoft.baselib.core.beans.BallTypeBean; +import com.tenlionsoft.baselib.utils.ConvertUtils; +import com.tenlionsoft.baselib.utils.LogUtils; +import com.tenlionsoft.baselib.utils.RandomColor; + +import java.util.List; +import java.util.Random; + +public class BallView extends View { + + private Random mRandom; + + + // private int mCount = 1; // 小球个数 + private int maxRadius; // 小球最大半径 + private int minRadius; // 小球最小半径 + private int minSpeed = 1; // 小球最小移动速度 + private int maxSpeed = 1; // 小球最大移动速度 + + private int mWidth = 200; + private int mHeight = 200; + private List mDatas; + + public Ball[] mBalls; // 用来保存所有小球的数组 + + public BallView(Context context) { + super(context); + init(); + } + + public BallView(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + init(); + } + + public BallView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(); + } + + public BallView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + init(); + } + + public void init() { + // 初始化所有球(设置颜色和画笔, 初始化移动的角度) + mRandom = new Random(); + // 圆心和半径测量的时候才设置 + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + mWidth = resolveSize(mWidth, widthMeasureSpec); + mHeight = resolveSize(mHeight, heightMeasureSpec); + setMeasuredDimension(mWidth, mHeight); + } + + + @Override + protected void onDraw(Canvas canvas) { + long startTime = System.currentTimeMillis(); + if (mDatas != null && mDatas.size() > 0) { + // 先画出所有圆 + for (int i = 0; i < mDatas.size(); i++) { + Ball ball = mBalls[i]; + canvas.drawCircle(ball.cx, ball.cy, ball.radius, ball.paint); + //计算文章高度 + canvas.drawText(ball.bigTxt, ball.cx, ball.cy, ball.bigPaint); + + Rect smallRect = new Rect(); + ball.smallPaint.getTextBounds(ball.smallTxt, 0, ball.smallTxt.length(), smallRect); + int smallHeight = smallRect.height(); + canvas.drawText(ball.smallTxt, ball.cx, ball.cy + smallHeight + 5, ball.smallPaint); + } + + // 球碰撞边界 + for (int i = 0; i < mDatas.size(); i++) { + Ball ball = mBalls[i]; + collisionDetectingAndChangeSpeed(ball); // 碰撞边界的计算 + ball.move(); // 移动 + } + + long stopTime = System.currentTimeMillis(); + long runTime = stopTime - startTime; + //移动动画 16毫秒执行一次 + postInvalidateDelayed(Math.abs(runTime - 16)); + } else { + Paint emptyPaint = new Paint(); + emptyPaint.setTextAlign(Paint.Align.CENTER); + emptyPaint.setColor(Color.parseColor("#FFA900")); + emptyPaint.setStyle(Paint.Style.FILL); + emptyPaint.setTextSize(ConvertUtils.sp2px(14f)); + canvas.drawText("暂无数据", canvas.getHeight() / 2, canvas.getWidth() / 2, emptyPaint); + } + } + + + // 判断球是否碰撞碰撞边界 + public void collisionDetectingAndChangeSpeed(Ball ball) { + int left = getLeft(); + int top = getTop(); + int right = getRight(); + int bottom = getBottom(); + + float speedX = ball.vx; + float speedY = ball.vy; + + // 碰撞左右,X的速度取反。 speed的判断是防止重复检测碰撞,然后黏在墙上了=。= + if (ball.left() <= left && speedX < 0) { + ball.vx = -ball.vx; + } else if (ball.top() <= top && speedY < 0) { + ball.vy = -ball.vy; + } else if (ball.right() >= right && speedX > 0) { + ball.vx = -ball.vx; + } else if (ball.bottom() >= bottom && speedY > 0) { + ball.vy = -ball.vy; + } + } + + /** + * 设置数据 + */ + public void setData(List beans) { + mDatas = beans; + + if (mDatas == null || mDatas.size() == 0) { + invalidate(); + } else { + RandomColor randomColor = new RandomColor(); // 随机生成好看的颜色 + maxRadius = mWidth / mDatas.size(); + minRadius = maxRadius / 2; + LogUtils.e("宽度:" + mWidth + "\n最大半径:" + maxRadius + "\n最小半径:" + minRadius); + mBalls = new Ball[mDatas.size()]; + for (int i = 0; i < mDatas.size(); i++) { + mBalls[i] = new Ball(); + // 设置画笔 + Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + paint.setColor(randomColor.randomColor()); + paint.setStyle(Paint.Style.FILL); + paint.setAlpha(180); + paint.setStrokeWidth(0); + //文字画笔 + Paint strPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + strPaint.setColor(Color.WHITE); + strPaint.setStyle(Paint.Style.FILL); + strPaint.setTextSize(ConvertUtils.sp2px(10)); + strPaint.setTextAlign(Paint.Align.CENTER); + + Paint bigPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + bigPaint.setColor(Color.WHITE); + bigPaint.setStyle(Paint.Style.FILL); + bigPaint.setTextSize(ConvertUtils.sp2px(12)); + bigPaint.setTextAlign(Paint.Align.CENTER); + // 设置速度 + float speedX = (mRandom.nextInt(maxSpeed - minSpeed + 1) + 5) / 10f; + float speedY = (mRandom.nextInt(maxSpeed - minSpeed + 1) + 5) / 10f; + mBalls[i].paint = paint; + mBalls[i].smallPaint = strPaint; + mBalls[i].bigPaint = bigPaint; + mBalls[i].vx = mRandom.nextBoolean() ? speedX : -speedX; + mBalls[i].vy = mRandom.nextBoolean() ? speedY : -speedY; + mBalls[i].smallTxt = mDatas.get(i).getTypePercent(); + mBalls[i].bigTxt = mDatas.get(i).getTypeName(); + } + + // 初始化圆的半径和圆心 + for (int i = 0; i < mBalls.length; i++) { + //半径根据文字的长度进行缩放 + Rect txtRect = new Rect(); + mBalls[i].bigPaint.getTextBounds(mBalls[i].bigTxt, 0, mBalls[i].bigTxt.length(), txtRect); + +// mBalls[i].radius = mRandom.nextInt(maxRadius + 1 - minRadius) + minRadius; + mBalls[i].radius = txtRect.width() / 2 + mRandom.nextInt(15) + 20; + mBalls[i].cx = mRandom.nextInt(mWidth - mBalls[i].radius) + mBalls[i].radius; + mBalls[i].cy = mRandom.nextInt(mHeight - mBalls[i].radius) + mBalls[i].radius; + } + + invalidate(); + } + } + + + class Ball { + int radius; // 半径 + float cx; // 圆心 + float cy; // 圆心 + float vx; // X轴速度 + float vy; // Y轴速度 + Paint paint; + Paint smallPaint; + Paint bigPaint; + String bigTxt; + String smallTxt; + + // 移动 + void move() { + //向角度的方向移动,偏移圆心 + cx += vx; + cy += vy; + } + + int left() { + return (int) (cx - radius); + } + + int right() { + return (int) (cx + radius); + } + + int bottom() { + return (int) (cy + radius); + } + + int top() { + return (int) (cy - radius); + } + } +} diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/BaseAreaListDialog.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/BaseAreaListDialog.java index 86556fb..ba9a8f7 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/BaseAreaListDialog.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/BaseAreaListDialog.java @@ -18,9 +18,10 @@ import android.view.WindowManager; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.R; import com.tenlionsoft.baselib.core.beans.UserLoginBean; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UserInfoSPUtils; import java.lang.reflect.Type; diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/ButtomDialogCommentView.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/ButtomDialogCommentView.java index 940f4d0..d29ffd1 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/ButtomDialogCommentView.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/ButtomDialogCommentView.java @@ -17,10 +17,11 @@ import android.widget.RelativeLayout; import android.widget.TextView; import com.bumptech.glide.Glide; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.R; import com.tenlionsoft.baselib.core.beans.AddPhotoBean; import com.tenlionsoft.baselib.core.retrofit_net.BaseUrlApi; +import com.tenlionsoft.baselib.utils.ToastUtils; /** diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterBaseInputView.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterBaseInputView.java index fc3ff47..aed83f2 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterBaseInputView.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterBaseInputView.java @@ -16,8 +16,9 @@ import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import com.bigkoo.pickerview.view.TimePickerView; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.R; +import com.tenlionsoft.baselib.utils.ToastUtils; import java.text.SimpleDateFormat; diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterChooseAreaDialogView.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterChooseAreaDialogView.java index d20a837..de71621 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterChooseAreaDialogView.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterChooseAreaDialogView.java @@ -17,13 +17,14 @@ import android.widget.TextView; import com.bigkoo.pickerview.builder.OptionsPickerBuilder; import com.bigkoo.pickerview.view.OptionsPickerView; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.R; import com.tenlionsoft.baselib.constant.PathConfig; import com.tenlionsoft.baselib.core.beans.AreaBean; import com.tenlionsoft.baselib.core.beans.DicBean; import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.retrofit_net.api.BaseApiService; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterInputChooseView.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterInputChooseView.java index 9376426..6957f6b 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterInputChooseView.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterInputChooseView.java @@ -17,8 +17,9 @@ import android.widget.EditText; import android.widget.RadioGroup; import com.bigkoo.pickerview.view.TimePickerView; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.R; +import com.tenlionsoft.baselib.utils.ToastUtils; import java.text.SimpleDateFormat; diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterInputView.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterInputView.java index 7abab9e..41ac343 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterInputView.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterInputView.java @@ -15,8 +15,9 @@ import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import com.bigkoo.pickerview.view.TimePickerView; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.R; +import com.tenlionsoft.baselib.utils.ToastUtils; import java.text.SimpleDateFormat; diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterInputViewBase.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterInputViewBase.java index 200092e..adbfee7 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterInputViewBase.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterInputViewBase.java @@ -14,8 +14,9 @@ import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.R; +import com.tenlionsoft.baselib.utils.ToastUtils; /** diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterProgressUpdateView.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterProgressUpdateView.java new file mode 100755 index 0000000..1d7efd0 --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterProgressUpdateView.java @@ -0,0 +1,146 @@ +package com.tenlionsoft.baselib.core.widget.views; + +import android.app.Dialog; +import android.content.Context; +import android.graphics.Rect; +import android.graphics.drawable.ColorDrawable; +import android.os.Bundle; +import android.util.DisplayMetrics; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.TouchDelegate; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.view.inputmethod.InputMethodManager; +import android.widget.EditText; +import android.widget.ImageView; + +import com.tenlionsoft.baselib.R; + + +/** + * 作者 : Adam on 2018/7/23. + * 邮箱 : itgaojian@163.com + * 描述 : 升级进度条 + */ +public class CenterProgressUpdateView extends Dialog { + + private View view; + private Context context; + private OnChoseListener mListener; + public ImageView mIvImg; + private String content; + private CircleProgress mCpProgress; + + private CenterProgressUpdateView(Context context, String content) { + super(context, R.style.dialog_center); + this.context = context; + this.content = content; + } + + /** + * 将view的点击区域放大 + * + * @param view 需要放大的view + * @param expandTouchWidth 放大的宽度 + */ + public void setTouchDelegate(final View view, final int expandTouchWidth) { + final View parentView = (View) view.getParent(); + parentView.post(() -> { + final Rect rect = new Rect(); + view.getHitRect(rect); + rect.top -= expandTouchWidth; + rect.bottom += expandTouchWidth; + rect.left -= expandTouchWidth; + rect.right += expandTouchWidth; + TouchDelegate touchDelegate = new TouchDelegate(rect, view); + parentView.setTouchDelegate(touchDelegate); + }); + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + view = LayoutInflater.from(context).inflate(R.layout.dialog_center_update_progress, null); + mCpProgress = view.findViewById(R.id.cp_progress); + setContentView(view); + setCancelable(false); + setCanceledOnTouchOutside(false); + DisplayMetrics dm = new DisplayMetrics(); + WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); + windowManager.getDefaultDisplay().getMetrics(dm); + Window window = this.getWindow(); + window.setGravity(Gravity.CENTER); + window.setWindowAnimations(R.style.Dialog_ChoseFile); + WindowManager.LayoutParams params = window.getAttributes(); + params.width = (int) (dm.widthPixels * 0.7); + params.height = WindowManager.LayoutParams.WRAP_CONTENT; + window.setAttributes(params); + window.setBackgroundDrawable(new ColorDrawable()); + } + + /** + * 设置当前进度 + */ + public void setCurrentProgress(int progress) { + if (mCpProgress != null) { + mCpProgress.setCurrentProgress(progress); + } + } + + private void showSoftKeyBoardDialog(EditText editText) { + if (editText != null) { + editText.setFocusable(true); + editText.setFocusableInTouchMode(true); + //请求获得焦点 + editText.requestFocus(); + //调用系统输入法 + InputMethodManager inputManager = + (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); + inputManager.showSoftInput(editText, 0); + } + } + + public void addOnChoseListener(OnChoseListener listener) { + this.mListener = listener; + } + + /** + * 选择 + * + * @param i + */ + private void choseType(int i) { + if (mListener != null) { + switch (i) { + case 1: + mListener.doUpdate(); + break; + } + } + this.dismiss(); + } + + public interface OnChoseListener { + void doUpdate(); + } + + public static class DialogBuilder { + private Context mContext; + private String content; + + public DialogBuilder(Context context) { + this.mContext = context; + } + + public CenterProgressUpdateView build() { + return new CenterProgressUpdateView(this.mContext, this.content); + } + + public DialogBuilder setContent(String content) { + this.content = content; + return this; + } + } +} \ No newline at end of file diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterTextAndInputView.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterTextAndInputView.java index 00dc44f..81d4d19 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterTextAndInputView.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterTextAndInputView.java @@ -15,8 +15,9 @@ import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.TextView; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.R; +import com.tenlionsoft.baselib.utils.ToastUtils; /** diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterTimeAndIntputView.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterTimeAndIntputView.java index 411390d..019a8ae 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterTimeAndIntputView.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CenterTimeAndIntputView.java @@ -22,12 +22,13 @@ import com.bigkoo.pickerview.builder.OptionsPickerBuilder; import com.bigkoo.pickerview.builder.TimePickerBuilder; import com.bigkoo.pickerview.view.OptionsPickerView; import com.bigkoo.pickerview.view.TimePickerView; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.R; import com.tenlionsoft.baselib.constant.PathConfig; import com.tenlionsoft.baselib.core.beans.AreaBean; import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.retrofit_net.api.BaseApiService; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/ChangePwdDialog.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/ChangePwdDialog.java index 444b62d..2a937d4 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/ChangePwdDialog.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/ChangePwdDialog.java @@ -25,12 +25,13 @@ import android.widget.TextView; import com.bigkoo.pickerview.builder.OptionsPickerBuilder; import com.bigkoo.pickerview.view.OptionsPickerView; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.R; import com.tenlionsoft.baselib.constant.PathConfig; import com.tenlionsoft.baselib.core.beans.AreaBean; import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.retrofit_net.api.BaseApiService; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CircleChartView.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CircleChartView.java new file mode 100644 index 0000000..0691546 --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CircleChartView.java @@ -0,0 +1,196 @@ +package com.tenlionsoft.baselib.core.widget.views; + + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Rect; +import android.graphics.RectF; +import android.util.AttributeSet; +import android.view.View; + +import androidx.annotation.Nullable; + +import com.tenlionsoft.baselib.R; +import com.tenlionsoft.baselib.utils.ConvertUtils; +import com.tenlionsoft.baselib.utils.LogUtils; + +/** + * 圆环图表 + */ +public class CircleChartView extends View { + private Paint mColorPaint; + private Paint mGrayPaint; + private Paint mWhitePaint; + + private int mRadius; + private int mHoleRadius; + private int mWidth; + private int mHeight; + private int mCenterX; + private int mCenterY; + private Paint mCirclePaint; + private Paint mTextPaint; + private Bitmap mBitmap; + private Paint mPaint; + private int mSmallCirRadius = 25; //圆环上小圆的半径 + private int mPadding = 25;//圆环距离视图的距离 + private int mDisCircle = 35;//中心圆与圆环的间距 + private double mStartAngle = 0;//开始角度 + private double mSweepAngle = 0;//角度 + private double mSurplusAngle = 360;// + private String mCenterStr = "0%"; + + public CircleChartView(Context context) { + super(context); + init(); + } + + public CircleChartView(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + init(); + } + + public CircleChartView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(); + } + + public CircleChartView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + init(); + } + + /** + * 初始化 + */ + private void init() { + //初始化画笔 + mColorPaint = new Paint(); + mColorPaint.setColor(Color.parseColor("#FFA800")); + mColorPaint.setStyle(Paint.Style.FILL); + mColorPaint.setAntiAlias(true); + + mGrayPaint = new Paint(); + mGrayPaint.setColor(Color.parseColor("#E7E7E7")); + mGrayPaint.setStyle(Paint.Style.FILL); + mGrayPaint.setAntiAlias(true); + + mWhitePaint = new Paint(); + mWhitePaint.setColor(Color.WHITE); + mWhitePaint.setStyle(Paint.Style.FILL); + mWhitePaint.setAntiAlias(true); + + mTextPaint = new Paint(); + mTextPaint.setColor(Color.parseColor("#FFA800")); + mTextPaint.setStyle(Paint.Style.FILL); + mTextPaint.setTextSize(ConvertUtils.sp2px(12)); + mTextPaint.setAntiAlias(true); + mTextPaint.setFakeBoldText(true);//加粗 + + + mCirclePaint = new Paint(); + mCirclePaint.setColor(Color.parseColor("#E7E7E7")); + mCirclePaint.setStyle(Paint.Style.FILL); + mCirclePaint.setAntiAlias(true); + mCirclePaint.setShadowLayer(3, 4, 4, Color.parseColor("#E5E5E5")); + + mBitmap = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.ic_statistics_count_percent_icon); + mPaint = new Paint(); + mPaint.setColor(Color.BLACK); + mPaint.setStyle(Paint.Style.FILL); + mPaint.setStrokeWidth(10f); + + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + mWidth = resolveSize(mWidth, widthMeasureSpec); + mHeight = resolveSize(mHeight, heightMeasureSpec); + setMeasuredDimension( + Math.max(getSuggestedMinimumWidth(), + resolveSize(mWidth, + widthMeasureSpec)), + Math.max(getSuggestedMinimumHeight(), + resolveSize(mHeight, + heightMeasureSpec))); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + LogUtils.e("绘制"); + mWidth = getWidth(); + mHeight = getHeight(); + //中心点 + mCenterX = mWidth / 2; + mCenterY = mHeight / 2; + mRadius = mWidth / 2 - mPadding;//最外圈圆 + + int left = mCenterX - mRadius; + int top = mCenterY - mRadius; + int right = mCenterX + mRadius; + int bottom = mCenterY + mRadius; + //绘制数据 + RectF oval = new RectF(left, top, right, bottom); + canvas.drawArc(oval, (float) mStartAngle, (float) mSweepAngle, true, mColorPaint); + //绘制剩余 + RectF rectF1 = new RectF(left, top, right, bottom); + canvas.drawArc(rectF1, (float) mSweepAngle, (float) mSurplusAngle, true, mGrayPaint); + + mHoleRadius = mRadius - mDisCircle;//中心圆的半径 + + double radius = mRadius - mDisCircle / 2; // 圆环的半径 + double angle = mSweepAngle; // 角度(单位为度) + + float centerX = mCenterX; // 圆心的x坐标 + float centerY = mCenterY; // 圆心的y坐标 + + float angleInRadians = (float) Math.toRadians(angle); // 将角度转换为弧度 + double startRadian = Math.toRadians(mStartAngle); + float x1 = Math.abs((float) (centerX + radius * Math.cos(angleInRadians))); // 第一个点的x坐标 + float y1 = Math.abs((float) (centerY + radius * Math.sin(angleInRadians))); // 第一个点的y坐标 + int startX = (int) (centerX + radius * Math.cos(startRadian)); + int startY = (int) (centerY - radius * Math.sin(startRadian)); + //绘制中心圆 + canvas.drawCircle(mCenterX, mCenterY, mHoleRadius, mWhitePaint);//绘制中心圆 + //绘制圆环上的小圆 + canvas.drawCircle(startX, startY, mSmallCirRadius, mCirclePaint); + canvas.drawCircle(x1, y1, mSmallCirRadius, mCirclePaint); + //绘制中心的图片 + int bitMapCenterX = mCenterX; + int bitmapCenterY = mCenterY - 20; + Rect dstRect = new Rect(); + int l = bitMapCenterX - 40; + int t = bitmapCenterY - 40; + int r = bitMapCenterX + 40; + int b = bitmapCenterY + 40; + dstRect.set(l, t, r, b); + canvas.drawBitmap(mBitmap, null, dstRect, mTextPaint); + //计算文字的宽度 + Rect textRect = new Rect(); + mTextPaint.getTextBounds(mCenterStr, 0, mCenterStr.length(), textRect); + int textHalf = textRect.width() / 2; + int h = textRect.height() + 25; + canvas.drawText(mCenterStr, mCenterX - textHalf, mCenterY + h, mTextPaint); + } + + /** + * 设置数据 + */ + public void setData(double percent) { + //计算绘制角度 + mSweepAngle = percent * 360 / 100D; + //剩余 + mSurplusAngle = 360 - mSweepAngle; + mCenterStr = percent + "%"; + LogUtils.e("所要绘制的角度:" + mSweepAngle + "\n剩余角度:" + mSurplusAngle); + + //重新绘制 + invalidate(); + } +} diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CircleProgress.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CircleProgress.java new file mode 100755 index 0000000..9f0d84b --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CircleProgress.java @@ -0,0 +1,506 @@ +package com.tenlionsoft.baselib.core.widget.views; /** + * CircleProgress 2017-10-28 + * Copyright (c) 2017 KL Co.Ltd. All right reserved. + */ + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.ValueAnimator; +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.LinearGradient; +import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.PointF; +import android.graphics.RectF; +import android.graphics.Shader; +import android.os.Build; +import android.util.AttributeSet; +import android.view.View; +import android.view.animation.LinearInterpolator; + +import androidx.annotation.Nullable; +import androidx.annotation.RequiresApi; + +import com.tenlionsoft.baselib.R; +import com.tenlionsoft.baselib.utils.ConvertUtils; + +import java.text.DecimalFormat; + + +/** + * 圆形进度条 + * + * @author Adam + * since 2023 6 23 + */ +public class CircleProgress extends View { + private Context mContext; + + /** + * 默认进度圆环渐变色值集合 + */ + private int[] mDefColors = {Color.rgb(0, 187, 238), Color.rgb(0, 34, 255)}; + /** + * 100%进度圆环渐变色值集合 + */ + private int[] mEndColors = {Color.rgb(255, 196, 0), Color.rgb(255, 110, 77)}; + private int mStartColor = Color.rgb(101, 226, 175); + private int mEndColor = Color.rgb(88, 181, 250); + + // 圆心x坐标 + private float centerX, centerY; + // 圆的半径 + private float radius; + // 进度 + private float mProgress; + // 当前进度 + private float currentProgress; + // 圆形进度条底色画笔 + private Paint circleBgPaint; + // 圆形进度条进度画笔 + private Paint progressPaint; + // 进度条背景颜色 + private int circleBgColor = Color.rgb(225, 229, 232); + // 进度条颜色 + private int progressColor = Color.RED; + // 默认圆环的宽度 + private int defaultStrokeWidth = 10; + // 圆形背景画笔宽度 + private int circleBgStrokeWidth = defaultStrokeWidth; + // 圆形进度画笔宽度 + private int progressStrokeWidth = defaultStrokeWidth; + private int lineWidth; + private boolean isDrawCenterProgressText; + private int centerProgressTextSize = 23; + private int centerProgressTextColor = Color.BLACK; + private int targetTextSize = 10; + private int targetTextColor = Color.GRAY; + private int targetNumSize = 20; + private int targetNumColor = Color.BLACK; + private int lineColor = Color.GRAY; + + // 各种画笔 + private Paint centerProgressTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + private Paint trainPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + private Paint linePaint = new Paint(Paint.ANTI_ALIAS_FLAG); + private Paint targetTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG); +// private Paint targetNumPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + + // 扇形所在矩形 + private RectF rectF = new RectF(); + // 进度动画 + private ValueAnimator progressAnimator; + // 动画执行时间 + private int duration = 1000; + // 动画延时启动时间 + private int startDelay = 500; + + private ProgressListener progressListener; + private String targetText; + private String targetNum = "0"; + private int dp1, dp2, dp4, dp5, dp6, dp7, dp8, dp30; + + public CircleProgress(Context context) { + this(context, null); + } + + public CircleProgress(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + mContext = context; + dp1 = ConvertUtils.dp2px(1); + dp2 = ConvertUtils.dp2px(2); + dp4 = ConvertUtils.dp2px(4); + dp5 = ConvertUtils.dp2px(5); + dp6 = ConvertUtils.dp2px(6); + dp7 = ConvertUtils.dp2px(7); + dp8 = ConvertUtils.dp2px(8); + dp30 = ConvertUtils.dp2px(30); + getAttr(attrs); + initPaint(); + } + + private void getAttr(AttributeSet attrs) { + TypedArray typedArray = mContext.obtainStyledAttributes(attrs, R.styleable.CircleProgressBarView); + + circleBgStrokeWidth = + typedArray.getDimensionPixelOffset(R.styleable.CircleProgressBarView_circleBgStrokeWidth, + defaultStrokeWidth); + progressStrokeWidth = + typedArray.getDimensionPixelOffset(R.styleable.CircleProgressBarView_progressStrokeWidth, + defaultStrokeWidth); + + circleBgColor = typedArray.getColor(R.styleable.CircleProgressBarView_circleBgColor, circleBgColor); + progressColor = typedArray.getColor(R.styleable.CircleProgressBarView_progressColor, progressColor); + + duration = typedArray.getColor(R.styleable.CircleProgressBarView_circleAnimationDuration, duration); + + isDrawCenterProgressText = typedArray.getBoolean(R.styleable.CircleProgressBarView_isDrawCenterProgressText, + false); + + centerProgressTextColor = typedArray.getColor(R.styleable.CircleProgressBarView_centerProgressTextColor, + mEndColor); + centerProgressTextSize = + typedArray.getDimensionPixelOffset(R.styleable.CircleProgressBarView_centerProgressTextSize, + ConvertUtils.sp2px(centerProgressTextSize)); + lineWidth = typedArray.getDimensionPixelOffset(R.styleable.CircleProgressBarView_lineWidth, + ConvertUtils.dp2px(1)); + lineColor = typedArray.getColor(R.styleable.CircleProgressBarView_lineColor, circleBgColor); + targetNumColor = typedArray.getColor(R.styleable.CircleProgressBarView_targetNumColor, targetNumColor); + targetNumSize = typedArray.getDimensionPixelSize(R.styleable.CircleProgressBarView_targetNumSize, + ConvertUtils.sp2px(20)); + targetTextSize = typedArray.getDimensionPixelSize(R.styleable.CircleProgressBarView_targetTextSize, + ConvertUtils.sp2px(12)); + targetTextColor = typedArray.getColor(R.styleable.CircleProgressBarView_targetTextColor, targetTextColor); + targetText = typedArray.getString(R.styleable.CircleProgressBarView_target_text); + typedArray.recycle(); + } + + public void setCenterProgressTextColor(int color) { + this.centerProgressTextColor = color; + centerProgressTextPaint.setColor(color); + } + + private void initPaint() { + circleBgPaint = getPaint(circleBgStrokeWidth, circleBgColor); + + progressPaint = getPaint(progressStrokeWidth, progressColor); + trainPaint = getPaint(ConvertUtils.dp2px(1), progressColor); + trainPaint.setStyle(Paint.Style.FILL); + + linePaint = getPaint(lineWidth, lineColor); + + // 目标文本画笔配置 + targetTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + targetTextPaint.setTextSize(targetTextSize); + targetTextPaint.setColor(targetTextColor); + targetTextPaint.setTextAlign(Paint.Align.CENTER); + + // 目标数字画笔配置 +// targetNumPaint = new Paint(Paint.ANTI_ALIAS_FLAG); +// targetNumPaint.setTextSize(targetNumSize); +// targetNumPaint.setColor(targetNumColor); +// targetNumPaint.setTextAlign(Paint.Align.CENTER); + + // 中间文本画笔配置 + centerProgressTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + centerProgressTextPaint.setTextSize(centerProgressTextSize); + centerProgressTextPaint.setColor(centerProgressTextColor); + centerProgressTextPaint.setTextAlign(Paint.Align.CENTER); + } + + private Paint getPaint(int strokeWidth, int color) { + Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + paint.setStrokeWidth(strokeWidth); + paint.setColor(color); + paint.setAntiAlias(true); + paint.setStrokeCap(Paint.Cap.ROUND); + paint.setStyle(Paint.Style.STROKE); + return paint; + } + + private LinearGradient mShader; + + private void configShader() { +// Log.d("201801251336", "progress = " + mProgress); +// int colors[] = { +// Color.rgb(97, 212, 198), Color.rgb(100, 225, 176), +// Color.rgb(93, 198, 221), Color.rgb(90, 187, 239) +// }; +// float positions[] = { +// 0.2f, 0.3f, 0.3f, 0.2f +// }; + // 清空画笔 + progressPaint.setShader(null); + if (mProgress >= 100) { + mShader = new LinearGradient(centerX, 0, centerX, getHeight(), + mEndColors, null, Shader.TileMode.CLAMP); + } else { + mShader = new LinearGradient(centerX, 0, centerX, getHeight(), + mDefColors, null, Shader.TileMode.CLAMP); + } + + // 圆内纵向直径为着色路径,圆环的左半边和右半边的色值有点对称的感觉 +// mShader = new LinearGradient(centerX, centerY - radius, centerX, centerY + radius, +// mColors, +// null, Shader.TileMode.CLAMP); + // 圆内横向直径为着色路径,可以达到首尾渐变效果,但进度不超过50%,看不出渐变后的效果 +// mShader = new LinearGradient(centerX + radius, centerY, centerX - radius, centerY, +// mColors, +// null, Shader.TileMode.CLAMP); + +// mShader = new SweepGradient(centerX,centerY,mColors,new float[]{0.5f,0.5f}); +// mShader = new SweepGradient(centerX,centerY,colors,null); +// mShader = new SweepGradient(centerX,centerY,mEndColor,mStartColor); +// mShader = new RadialGradient(centerX,centerY,radius,mColors,null, Shader.TileMode.CLAMP); + + progressPaint.setShader(mShader); + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + if (progressAnimator != null) { + progressAnimator.cancel(); + } + } + + private boolean proAnimIsEnd = false; + + private void initAnimation() { + proAnimIsEnd = false; + progressAnimator = ValueAnimator.ofFloat(0, mProgress); + progressAnimator.setDuration(duration); + progressAnimator.setStartDelay(startDelay); + progressAnimator.setInterpolator(new LinearInterpolator()); + progressAnimator.addUpdateListener(valueAnimator -> { + float value = (float) valueAnimator.getAnimatedValue(); + mProgress = value; + currentProgress = value * 360 / 100; + if (progressListener != null) { + progressListener.currentProgressListener(value); + } + invalidate(); + }); + progressAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + proAnimIsEnd = true; + invalidate(); + } + }); + } + + public void setTargetNum(String num) { + targetNum = num; + } + + @Override + protected void onSizeChanged(int w, int h, int oldW, int oldH) { + super.onSizeChanged(w, h, oldW, oldH); + centerX = w / 2; + centerY = h / 2; + + // 半径再缩小点,给小三角形空出距离 + radius = Math.min(w, h) / 2 - Math.max(circleBgStrokeWidth, progressStrokeWidth) - dp4; + + rectF.set(centerX - radius, + centerY - radius, + centerX + radius, + centerY + radius); + trainPaint.setColor(circleBgColor); + + configShader(); + } + + public void setColors(int[] colors) { + mDefColors = colors; + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); +// LogUtil.logD("201801251106", "centerX = " + centerX + "->centerY = " +// + centerY + "->mProgress = " + mProgress); + canvas.drawCircle(centerX, centerY, radius, circleBgPaint); + canvas.drawArc(rectF, -90, currentProgress, false, progressPaint); + if (isDrawCenterProgressText) { + drawCenterProgressText(canvas, formatNum(mProgress) + "%"); + } + if (proAnimIsEnd) { + drawTriangle(canvas); + } + } + + private void drawCenterProgressText(Canvas canvas, String currentProgress) { + Paint.FontMetricsInt fontMetrics1 = centerProgressTextPaint.getFontMetricsInt(); + int baseline = (int) ((rectF.bottom + rectF.top - fontMetrics1.bottom - fontMetrics1.top) / 2); + //文字绘制到整个布局的中心位置 +// canvas.drawLine(centerX - dp30, centerY, centerX + dp30, centerY, linePaint); +// canvas.drawText(currentProgress, rectF.centerX(), centerY - dp5, centerProgressTextPaint); + canvas.drawText(currentProgress, rectF.centerX(), rectF.centerY()+dp5, centerProgressTextPaint); + +// Paint.FontMetricsInt fontMetrics2 = targetNumPaint.getFontMetricsInt(); +// int baseline2 = baseline + (fontMetrics2.bottom - fontMetrics2.top); +// canvas.drawText("升级中...", rectF.centerX(), baseline + dp7, targetTextPaint); + +// canvas.drawText(targetNum, rectF.centerX(), baseline2 + dp5, targetNumPaint); + } + + /** + * 绘制三角形 + * + * @param canvas + */ + private void drawTriangle(Canvas canvas) { + Path path = new Path(); + PointF pf1, pf2, pf3; +// LogUtil.logD("20190124", "绘制小三角 mProgress = " + mProgress); + if (mProgress < 49) { + trainPaint.setColor(circleBgColor); + pf1 = new PointF(centerX - dp8, centerY * 2 - progressStrokeWidth - dp2); + pf2 = new PointF(centerX - dp1, getHeight() - dp2); + pf3 = new PointF(centerX + dp6, centerY * 2 - progressStrokeWidth - dp2); + } else if (mProgress >= 49 && mProgress < 51) { + float[] positions; + int pro = (int) (mProgress * 100); + if (mProgress >= 49 && pro < 49.2 * 100) { + positions = new float[]{0.39f, 0.39f}; +// LogUtil.logD("20190124", "阶段1 -> pro = " + pro); + } else if (pro >= 49.2 * 100 && pro < 49.4 * 100) { + positions = new float[]{0.46f, 0.46f}; +// LogUtil.logD("20190124", "阶段2"); + } else if (pro >= 49.4 * 100 && pro < 49.6 * 100) { + positions = new float[]{0.5f, 0.5f}; +// LogUtil.logD("20190124", "阶段3 -> pro = " + pro); + } else if (pro >= 49.6 * 100 && pro < 49.8 * 100) { + positions = new float[]{0.62f, 0.38f}; +// LogUtil.logD("20190124", "阶段4 -> pro = " + pro); + } else if (pro >= 49.8 * 100 && pro < 50 * 100) { + positions = new float[]{0.64f, 0.36f}; +// LogUtil.logD("20190124", "阶段5 -> pro = " + pro); + } else if (pro >= 50 * 100 && pro < 50.2 * 100) { + positions = new float[]{0.7f, 0.3f}; +// LogUtil.logD("20190124", "阶段6 -> pro = " + pro); + } else if (pro >= 50.2 * 100 && pro < 50.4 * 100) { + positions = new float[]{0.75f, 0.25f}; +// LogUtil.logD("20190124", "阶段7 -> pro = " + pro); + } else if (pro >= 50.4 * 100 && pro < 50.6 * 100) { + positions = new float[]{0.8f, 0.2f}; +// LogUtil.logD("20190124", "阶段8 -> pro = " + pro); + } else if (pro >= 50.6 * 100 && pro <= 50.8 * 100) { + positions = new float[]{0.9f, 0.1f}; +// LogUtil.logD("20190124", "阶段9 -> pro = " + pro); + } else { + positions = new float[]{1.0f, 0.f}; +// LogUtil.logD("20190124", "阶段 else"); + } + LinearGradient triangleGdt = new LinearGradient( + centerX + dp6, + 0, + centerX - dp8, + 0, + new int[]{Color.rgb(88, 181, 250), Color.rgb(225, 229, 232)}, + positions, Shader.TileMode.CLAMP); + trainPaint.setShader(triangleGdt); + pf1 = new PointF(centerX - dp8, centerY * 2 - progressStrokeWidth - dp2); + pf2 = new PointF(centerX - dp1, getHeight() - dp2); + pf3 = new PointF(centerX + dp6, centerY * 2 - progressStrokeWidth - dp2); + } else { + trainPaint.setShader(null); // 不要忘记清空着色器,不能设置的color没有效果,会优先显示shader + if (mProgress >= 100) { + trainPaint.setColor(mEndColors[mEndColors.length - 1]); + } else { + trainPaint.setColor(mDefColors[mDefColors.length - 1]); + } + pf1 = new PointF(centerX - dp8, centerY * 2 - progressStrokeWidth - dp2); + pf2 = new PointF(centerX - dp1, getHeight()); + pf3 = new PointF(centerX + dp6, centerY * 2 - progressStrokeWidth - dp2); + } + path.moveTo(pf1.x, pf1.y); + path.lineTo(pf2.x, pf2.y); + path.lineTo(pf3.x, pf3.y); + canvas.drawPath(path, trainPaint); + path.reset(); + } + + + public void startProgressAnimation() { + progressAnimator.start(); + } + + @RequiresApi(api = Build.VERSION_CODES.KITKAT) + public void pauseProgressAnimation() { + progressAnimator.pause(); + } + + @RequiresApi(api = Build.VERSION_CODES.KITKAT) + public void resumeProgressAnimation() { + progressAnimator.resume(); + } + + public void stopProgressAnimation() { + progressAnimator.end(); + } + + + /** + * 传入一个进度值,从0到progress动画变化 + * + * @param progress + * @return + */ + public CircleProgress setProgressWithAnimation(float progress) { +// if (progress <= 0f || String.valueOf(progress).equals(String.valueOf(Float.NaN))) { + if (progress <= 0f || Float.isNaN(progress)) { + setCurrentProgress(0f, true); + return this; + } + mProgress = progress; +// if (progress >= 100) { +// configShader(); +// }else{ + configShader(); +// } + initAnimation(); + startProgressAnimation(); + return this; + } + + /** + * 实时进度,适用于下载进度回调时候之类的场景 + * + * @param progress + * @return + */ + public CircleProgress setCurrentProgress(float progress) { + mProgress = progress; + currentProgress = progress * 360 / 100; + if (progress >= 100) { + configShader(); + } + invalidate(); + return this; + } + + /** + * 实时进度,适用于下载进度回调时候之类的场景 + * + * @param progress + * @param isArrow 是否有小箭头 + * @return + */ + public CircleProgress setCurrentProgress(float progress, boolean isArrow) { + proAnimIsEnd = isArrow; + setCurrentProgress(progress); + return this; + } + + /** + * 格式化数字(保留两位小数) + * + * @param money + * @return + */ + public static String formatNum(float money) { + if (((int) money * 100) == (int) (money * 100)) { + //如果是一个整数 + return String.valueOf((int) money); + } + DecimalFormat format = new DecimalFormat("0.00"); + return format.format(money); + } + + public interface ProgressListener { + void currentProgressListener(float currentProgress); + } + + public CircleProgress setProgressListener(ProgressListener listener) { + progressListener = listener; + return this; + } +} + diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/ConditionAllAreaPopup.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/ConditionAllAreaPopup.java new file mode 100644 index 0000000..0c4feba --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/ConditionAllAreaPopup.java @@ -0,0 +1,290 @@ +package com.tenlionsoft.baselib.core.widget.views; + +import android.app.ProgressDialog; +import android.content.Context; +import android.graphics.Color; +import android.text.TextUtils; +import android.util.DisplayMetrics; +import android.view.Gravity; +import android.view.View; +import android.widget.TextView; + +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.tenlionsoft.baselib.R; +import com.tenlionsoft.baselib.core.beans.AreaSimpleBean; +import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; +import com.tenlionsoft.baselib.core.retrofit_net.api.BaseApiService; +import com.tenlionsoft.baselib.core.widget.base.ConditionAllAreaAdapter; +import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; +import com.tenlionsoft.baselib.utils.UIUtil; +import com.tenlionsoft.baselib.utils.UserLgUtils; + +import java.util.ArrayList; +import java.util.List; + +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.schedulers.Schedulers; +import razerdp.basepopup.BasePopupWindow; + +/** + * 作者: adam + * 日期: 2021/9/30 - 2:58 下午 + * 邮箱: itgaojian@163.com + * 描述: 地区选择 + */ +public class ConditionAllAreaPopup extends BasePopupWindow { + private final TextView mTvCurrentArea; + private final RecyclerView mRlvArea1; + private final RecyclerView mRlvArea2; + private final RecyclerView mRlvArea3; + private final Context mCtx; + private final ConditionAllAreaAdapter mAreaAdapter1; + private final ConditionAllAreaAdapter mAreaAdapter2; + private final ConditionAllAreaAdapter mAreaAdapter3; + private final TextView mTvConfirm; + private List mAreaList1; + private List mAreaList2; + private List mAreaList3; + private AreaSimpleBean mSelArea1;//旗县区 + private AreaSimpleBean mSelArea2;//乡镇街道 + private AreaSimpleBean mSelArea3;//村、社区 + private String mCurrentAreaStr; + private String mAreaCode0; + private int mUserLevel = -1; + private OnListPopupItemClickListener mOnListPopupItemClickListener; + + public ConditionAllAreaPopup(Context context, String currentArea, int userLevel) { + super(context); + mCtx = context; + View view = createPopupById(R.layout.popup_all_area_layout); + mCurrentAreaStr = currentArea; + mUserLevel = userLevel; + mTvCurrentArea = view.findViewById(R.id.tv_current_area); + mTvCurrentArea.setText(mCurrentAreaStr); + mRlvArea1 = view.findViewById(R.id.rlv_area_1); + mRlvArea2 = view.findViewById(R.id.rlv_area_2); + mRlvArea3 = view.findViewById(R.id.rlv_area_3); + mTvConfirm = view.findViewById(R.id.tv_confirm); + mTvConfirm.setOnClickListener(v -> doConfirm()); + mAreaList1 = new ArrayList<>(); + mAreaList2 = new ArrayList<>(); + mAreaList3 = new ArrayList<>(); + mAreaAdapter1 = new ConditionAllAreaAdapter(mCtx, mAreaList1); + mAreaAdapter2 = new ConditionAllAreaAdapter(mCtx, mAreaList2); + mAreaAdapter3 = new ConditionAllAreaAdapter(mCtx, mAreaList3); + + mRlvArea1.setLayoutManager(new LinearLayoutManager(mCtx)); + mRlvArea2.setLayoutManager(new LinearLayoutManager(mCtx)); + mRlvArea3.setLayoutManager(new LinearLayoutManager(mCtx)); + + mRlvArea1.setAdapter(mAreaAdapter1); + mRlvArea2.setAdapter(mAreaAdapter2); + mRlvArea3.setAdapter(mAreaAdapter3); + + mAreaAdapter1.addOnitemCheckChange((bean, isCheck, pos) -> { + if (mAreaAdapter1.mSelBeans.size() > 0) { + if (bean.getId().equals(mAreaAdapter1.mSelBeans.get(0).getId())) { + return; + } + } + mAreaAdapter1.mSelBeans.clear(); + mAreaAdapter1.mSelBeans.add(bean); + for (int i = 0; i < mAreaAdapter1.getData().size(); i++) { + mAreaAdapter1.getData().get(i).setChecked(false); + } + bean.setChecked(true); + mSelArea1 = bean; + mSelArea2 = null; + mSelArea3 = null; + mAreaAdapter1.notifyDataSetChanged(); + mAreaList2.clear(); + mAreaAdapter2.setData(mAreaList2); + mAreaList3.clear(); + mAreaAdapter3.setData(mAreaList3); + //获取下一级 + setAreaNames(""); + getAreaList(bean.getId(), 2); + }); + mAreaAdapter2.addOnitemCheckChange((bean, isCheck, pos) -> { + if (mAreaAdapter2.mSelBeans.size() > 0) { + if (bean.getId().equals(mAreaAdapter2.mSelBeans.get(0).getId())) { + return; + } + } + mAreaAdapter2.mSelBeans.clear(); + mAreaAdapter2.mSelBeans.add(bean); + for (int i = 0; i < mAreaAdapter2.getData().size(); i++) { + mAreaAdapter2.getData().get(i).setChecked(false); + } + bean.setChecked(true); + mSelArea2 = bean; + mSelArea3 = null; + mAreaAdapter2.notifyDataSetChanged(); + mAreaList3.clear(); + mAreaAdapter3.setData(mAreaList3); + //获取下一级 + setAreaNames(""); + getAreaList(bean.getId(), 3); + }); + mAreaAdapter3.addOnitemCheckChange((bean, isCheck, pos) -> { + mAreaAdapter3.mSelBeans.clear(); + mAreaAdapter3.mSelBeans.add(bean); + for (int i = 0; i < mAreaAdapter3.getData().size(); i++) { + mAreaAdapter3.getData().get(i).setChecked(false); + } + bean.setChecked(true); + mSelArea3 = bean; + setAreaNames(bean.getName()); + mAreaAdapter3.notifyDataSetChanged(); + }); + switch (mUserLevel) { + case 1://市 + mAreaCode0 = UserLgUtils.getUserAreaCode(); + getAreaList(mAreaCode0, 1); + break; + case 2://旗县区 + mRlvArea1.setVisibility(View.GONE); + mSelArea1 = new AreaSimpleBean(); + mSelArea1.setId(UserLgUtils.getUserAreaCode()); + mRlvArea2.setVisibility(View.VISIBLE); + mRlvArea3.setVisibility(View.VISIBLE); + getAreaList(mSelArea1.getId(), 2); + break; + case 3://乡镇街道 + mRlvArea1.setVisibility(View.GONE); + mRlvArea2.setVisibility(View.GONE); + mSelArea2 = new AreaSimpleBean(); + mSelArea2.setId(UserLgUtils.getUserAreaCode()); + mRlvArea3.setVisibility(View.VISIBLE); + getAreaList(mSelArea2.getId(), 3); + break; + case 4://村社区 + mSelArea3 = new AreaSimpleBean(); + mSelArea3.setId(UserLgUtils.getUserAreaCode()); + mRlvArea1.setVisibility(View.GONE); + mRlvArea2.setVisibility(View.GONE); + mRlvArea3.setVisibility(View.GONE); +// getAreaList(mSelArea2.getId(), 3); + break; + } + setContentView(view); + setBackgroundColor(Color.parseColor("#11000000")); + setPopupGravity(Gravity.CENTER | Gravity.BOTTOM); + DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); + int height = (int) (displayMetrics.heightPixels * 0.3); + setHeight(height); + setWidth(displayMetrics.widthPixels); + + } + + /** + * 设置当前选择的区域 + * + * @param name + */ + private void setAreaNames(String name) { + StringBuilder sb = new StringBuilder(); + if (mSelArea1 != null) { + sb.append("/"); + sb.append(mSelArea1.getName()); + } + if (mSelArea2 != null) { + sb.append("/"); + sb.append(mSelArea2.getName()); + } + if (mSelArea3 != null) { + sb.append("/"); + sb.append(name); + } + mTvCurrentArea.setText(UserLgUtils.getUserFullAreaName() + sb); + } + + private void getAreaList(String id, int type) { + ProgressDialog dialog = UIUtil.initDialog(mCtx, "获取中..."); + dialog.show(); + RetrofitManager.getInstance() + .create(BaseApiService.class) + .getAreaListByCode(id, UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(Disposable d) { + } + + @Override + public void onNext(List areaListBeans) { + dialog.dismiss(); + if (null != areaListBeans && areaListBeans.size() > 0) { + switch (type) { + case 1: //area1 + mAreaList1 = areaListBeans; + mAreaAdapter1.setData(mAreaList1); + break; + case 2://area2 + mAreaList2 = areaListBeans; + mAreaAdapter2.setData(mAreaList2); + break; + case 3://area3 + mAreaList3 = areaListBeans; + mAreaAdapter3.setData(mAreaList3); + break; + } + } else { + ToastUtils.show("暂无区域数据"); + } + } + + @Override + public void onError(Throwable e) { + dialog.dismiss(); + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + } + + /** + * 确定选择 + */ + private void doConfirm() { + String areaCode = ""; + if (mSelArea1 != null) { + areaCode = mSelArea1.getId(); + } + if (mSelArea2 != null) { + areaCode = mSelArea2.getId(); + } + if (mSelArea3 != null) { + areaCode = mSelArea3.getId(); + } + if (mOnListPopupItemClickListener != null) { + String areaName = mTvCurrentArea.getText().toString().trim(); + if (TextUtils.isEmpty(areaCode)) { + areaCode = mAreaCode0; + } + mOnListPopupItemClickListener.onItemClick(areaName, areaCode); + } + } + + public OnListPopupItemClickListener getOnListPopupItemClickListener() { + return mOnListPopupItemClickListener; + } + + public void setOnListPopupItemClickListener(OnListPopupItemClickListener onListPopupItemClickListener) { + mOnListPopupItemClickListener = onListPopupItemClickListener; + } + + public interface OnListPopupItemClickListener { + void onItemClick(String areaNames, String areaCode); + } +} diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CorrectionDialog.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CorrectionDialog.java index 9972e5e..536e680 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CorrectionDialog.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/CorrectionDialog.java @@ -15,8 +15,9 @@ import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.R; +import com.tenlionsoft.baselib.utils.ToastUtils; import androidx.appcompat.widget.AppCompatRatingBar; diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/DiffcultDialog.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/DiffcultDialog.java index f7d42e0..77105b6 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/DiffcultDialog.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/DiffcultDialog.java @@ -15,8 +15,9 @@ import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.R; +import com.tenlionsoft.baselib.utils.ToastUtils; import androidx.appcompat.widget.AppCompatRatingBar; diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/LimitEmojiEditText.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/LimitEmojiEditText.java index 2750a90..5ee6ff4 100644 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/LimitEmojiEditText.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/LimitEmojiEditText.java @@ -7,9 +7,10 @@ import android.util.AttributeSet; import android.view.inputmethod.EditorInfo; import android.widget.EditText; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.R; import com.tenlionsoft.baselib.utils.LogUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import java.util.regex.Matcher; import java.util.regex.Pattern; diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/Pie3DView.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/Pie3DView.java new file mode 100644 index 0000000..c61703b --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/Pie3DView.java @@ -0,0 +1,106 @@ +package com.tenlionsoft.baselib.core.widget.views; + +import android.content.Context; +import android.graphics.BlurMaskFilter; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.RectF; +import android.graphics.Typeface; +import android.view.View; + +public class Pie3DView extends View { + + private int[] data; //数据 + private String[] info; //信息 + private float[] percent; //比例 + private float depth; //深度 + private int[] colors = //颜色 + new int[]{Color.RED, Color.YELLOW, Color.BLUE, Color.GREEN, Color.CYAN}; + private Paint mainPaint; //轮廓画笔 + private int ScrHeight; //屏幕高度 + private int ScrWidth; //屏幕宽度 + private Paint arrPaint; //填充画笔 + private Paint textPaint = null; //文本画笔 + + //构造函数 + public Pie3DView(Context context, int[] data, String[] info) { + super(context); + + this.data = data; + this.info = info; + initData(); + initPaint(); + } + + //初始化画笔 + private void initPaint() { + mainPaint = new Paint(); + mainPaint.setAntiAlias(true); + mainPaint.setColor(Color.WHITE); + mainPaint.setStyle(Paint.Style.STROKE); + mainPaint.setStrokeWidth(3); + + arrPaint = new Paint(); + arrPaint.setStyle(Paint.Style.FILL); + BlurMaskFilter PaintBGBlur = new BlurMaskFilter( + 2, BlurMaskFilter.Blur.SOLID); + arrPaint.setMaskFilter(PaintBGBlur); + + textPaint = new Paint(); + textPaint.setColor(Color.BLUE); + textPaint.setTextSize(16); + textPaint.setTypeface(Typeface.DEFAULT_BOLD); + } + + //数据转化比例 + private void initData() { + int sum = 0; + for (int i = 0; i < data.length; i++) { + sum += data[i]; + } + percent = new float[data.length]; + for (int i = 0; i < data.length; i++) { + percent[i] = (float) data[i] / sum * 360; + } + } + + //绘图 + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + + ScrHeight = getHeight(); + ScrWidth = getWidth(); + + float cirX = ScrWidth / 2; + float cirY = ScrHeight / 3; + float radius = ScrHeight / 4; + depth = radius / 5; + + final float p = 0.5f; + float arcLeft = cirX - radius; + float arcTop = cirY - radius * p; + float arcRight = cirX + radius; + float arcBottom = cirY + radius * p; + RectF arcRF0; + for (int j = (int) depth; j >= 0; j--) { + arcRF0 = new RectF(arcLeft, arcTop + j, arcRight, arcBottom + j); + float CurrPer = -20; + for (int i = 0; i < percent.length; i++) { + arrPaint.setColor(colors[i]); + canvas.drawArc(arcRF0, CurrPer, percent[i], true, arrPaint); + if (j == 1 && CurrPer > 0 && CurrPer < 180) + canvas.drawLine(cirX + (float) Math.cos(CurrPer / 180 * Math.PI) * radius, + cirY + (float) Math.sin(CurrPer / 180 * Math.PI) * radius * p, + cirX + (float) Math.cos(CurrPer / 180 * Math.PI) * radius, + cirY + (float) Math.sin(CurrPer / 180 * Math.PI) * radius * p + 1f + depth, + mainPaint); + if (j == 0 || j == depth) + canvas.drawArc(arcRF0, CurrPer, percent[i], true, mainPaint); + CurrPer += percent[i]; + } + } + + } + +} diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/SearchPersonDialogView.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/SearchPersonDialogView.java index e02a051..1602bc2 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/SearchPersonDialogView.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/widget/views/SearchPersonDialogView.java @@ -20,7 +20,7 @@ import android.widget.TextView; import com.bigkoo.pickerview.builder.OptionsPickerBuilder; import com.bigkoo.pickerview.view.OptionsPickerView; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.R; import com.tenlionsoft.baselib.core.beans.DictionaryBean; import com.tenlionsoft.baselib.core.beans.PersonSearchBean; @@ -29,6 +29,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.api.BaseApiService; import com.tenlionsoft.baselib.utils.ExceptionHandler; import com.tenlionsoft.baselib.utils.LogUtils; import com.tenlionsoft.baselib.utils.RegexUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/utils/ColorInfo.java b/baselib/src/main/java/com/tenlionsoft/baselib/utils/ColorInfo.java new file mode 100644 index 0000000..613407f --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/utils/ColorInfo.java @@ -0,0 +1,50 @@ +package com.tenlionsoft.baselib.utils; + + +import java.util.List; + +public class ColorInfo { + Range hueRange; + Range saturationRange; + Range brightnessRange; + List lowerBounds; + + public ColorInfo(Range hueRange, Range saturationRange, Range brightnessRange, List lowerBounds) { + this.hueRange = hueRange; + this.saturationRange = saturationRange; + this.brightnessRange = brightnessRange; + this.lowerBounds = lowerBounds; + } + + public Range getHueRange() { + return hueRange; + } + + public void setHueRange(Range hueRange) { + this.hueRange = hueRange; + } + + public Range getSaturationRange() { + return saturationRange; + } + + public void setSaturationRange(Range saturationRange) { + this.saturationRange = saturationRange; + } + + public Range getBrightnessRange() { + return brightnessRange; + } + + public void setBrightnessRange(Range brightnessRange) { + this.brightnessRange = brightnessRange; + } + + public List getLowerBounds() { + return lowerBounds; + } + + public void setLowerBounds(List lowerBounds) { + this.lowerBounds = lowerBounds; + } +} diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/utils/ExceptionHandler.java b/baselib/src/main/java/com/tenlionsoft/baselib/utils/ExceptionHandler.java index 5617379..0e0f947 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/utils/ExceptionHandler.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/utils/ExceptionHandler.java @@ -5,7 +5,7 @@ import android.view.TextureView; import com.google.gson.Gson; import com.google.gson.JsonParseException; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.core.beans.ErrorBean; import java.net.SocketTimeoutException; diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/utils/RandomColor.java b/baselib/src/main/java/com/tenlionsoft/baselib/utils/RandomColor.java new file mode 100644 index 0000000..51659ff --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/utils/RandomColor.java @@ -0,0 +1,421 @@ +package com.tenlionsoft.baselib.utils; + + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Random; + +public class RandomColor { + private static final String TAG = "RandomColor"; + private Random random; + + public static enum SaturationType { + RANDOM, MONOCHROME + } + + public static enum Luminosity { + BRIGHT, LIGHT, DARK, RANDOM + } + + public static class Options { + int hue; + SaturationType saturationType; + Luminosity luminosity; + + public int getHue() { + return hue; + } + + public void setHue(int hue) { + this.hue = hue; + } + + public SaturationType getSaturationType() { + return saturationType; + } + + public void setSaturationType(SaturationType saturationType) { + this.saturationType = saturationType; + } + + public Luminosity getLuminosity() { + return luminosity; + } + + public void setLuminosity(Luminosity luminosity) { + this.luminosity = luminosity; + } + } + + private HashMap colors = new HashMap<>(); + + public RandomColor() { + loadColorBounds(); + random = new Random(); + } + + public RandomColor(long seed){ + loadColorBounds(); + random = new Random(); + random.setSeed(seed); + } + + private int getColor(int hue, int saturation, int brightness) { + return android.graphics.Color.HSVToColor(new float[] {hue, saturation, brightness}); + } + + public int randomColor() { + return randomColor(0, null, null); + } + + public int randomColor(int value, SaturationType saturationType, Luminosity luminosity) { + int hue = value; + hue = pickHue(hue); + int saturation = pickSaturation(hue, saturationType, luminosity); + int brightness = pickBrightness(hue, saturation, luminosity); + + int color = getColor(hue, saturation, brightness); + return color; + } + + public int[] randomColor(int count) { + if (count <= 0) { + throw new IllegalArgumentException("count must be greater than 0"); + } + + int[] colors = new int[count]; + for (int i = 0; i < count; i++) { + colors[i] = randomColor(); + } + + return colors; + } + + public int randomColor(Color color) { + int hue = pickHue(color.name()); + int saturation = pickSaturation(color, null, null); + int brightness = pickBrightness(color, saturation, null); + + int colorValue = getColor(hue, saturation, brightness); + return colorValue; + } + + public int[] random(Color color, int count) { + if (count <= 0) { + throw new IllegalArgumentException("count must be greater than 0"); + } + + int[] colors = new int[count]; + for (int i = 0; i < count; i++) { + colors[i] = randomColor(color); + } + + return colors; + } + + private int pickHue(int hue) { + Range hueRange = getHueRange(hue); + return doPickHue(hueRange); + } + + private int doPickHue(Range hueRange) { + int hue = randomWithin(hueRange); + + // Instead of storing red as two seperate ranges, + // we group them, using negative numbers + if (hue < 0) { + hue = 360 + hue; + } + + return hue; + } + + private int pickHue(String name) { + Range hueRange = getHueRange(name); + return doPickHue(hueRange); + } + + private Range getHueRange(int number) { + if (number < 360 && number > 0) { + return new Range(number, number); + } + + return new Range(0, 360); + } + + private Range getHueRange(String name) { + if (colors.containsKey(name)) { + return colors.get(name).getHueRange(); + } + + return new Range(0, 360); + } + + private int pickSaturation(int hue, SaturationType saturationType, Luminosity luminosity) { + return pickSaturation(getColorInfo(hue), saturationType, luminosity); + } + + private int pickSaturation(Color color, SaturationType saturationType, Luminosity luminosity) { + ColorInfo colorInfo = colors.get(color.name()); + return pickSaturation(colorInfo, saturationType, luminosity); + } + + private int pickSaturation(ColorInfo colorInfo, SaturationType saturationType, Luminosity luminosity) { + if (saturationType != null) { + switch (saturationType) { + case RANDOM: + return randomWithin(new Range(0, 100)); + case MONOCHROME: + return 0; + } + } + + if (colorInfo == null) { + return 0; + } + + Range saturationRange = colorInfo.getSaturationRange(); + + int min = saturationRange.start; + int max = saturationRange.end; + + if (luminosity != null) { + switch (luminosity) { + case LIGHT: + min = 55; + break; + case BRIGHT: + min = max - 10; + break; + case DARK: + max = 55; + break; + } + } + + return randomWithin(new Range(min, max)); + } + + private int pickBrightness(int hue, int saturation, Luminosity luminosity) { + ColorInfo colorInfo = getColorInfo(hue); + + return pickBrightness(colorInfo, saturation, luminosity); + } + + private int pickBrightness(Color color, int saturation, Luminosity luminosity) { + ColorInfo colorInfo = colors.get(color.name()); + + return pickBrightness(colorInfo, saturation, luminosity); + } + + private int pickBrightness(ColorInfo colorInfo, int saturation, Luminosity luminosity) { + int min = getMinimumBrightness(colorInfo, saturation), + max = 100; + + if (luminosity != null) { + switch (luminosity) { + + case DARK: + max = min + 20; + break; + + case LIGHT: + min = (max + min) / 2; + break; + + case RANDOM: + min = 0; + max = 100; + break; + } + } + + return randomWithin(new Range(min, max)); + } + + private int getMinimumBrightness(ColorInfo colorInfo, int saturation) { + if (colorInfo == null) { + return 0; + } + + List lowerBounds = colorInfo.getLowerBounds(); + for (int i = 0; i < lowerBounds.size() - 1; i++) { + + int s1 = lowerBounds.get(i).start, + v1 = lowerBounds.get(i).end; + + if (i == lowerBounds.size() - 1) { + break; + } + int s2 = lowerBounds.get(i + 1).start, + v2 = lowerBounds.get(i + 1).end; + + if (saturation >= s1 && saturation <= s2) { + + float m = (v2 - v1)/(float) (s2 - s1), + b = v1 - m*s1; + + return (int) (m*saturation + b); + } + + } + + return 0; + } + + private ColorInfo getColorInfo(int hue) { + // Maps red colors to make picking hue easier + if (hue >= 334 && hue <= 360) { + hue-= 360; + } + + for(String key : colors.keySet()) { + ColorInfo colorInfo = colors.get(key); + if (colorInfo.getHueRange() != null && colorInfo.getHueRange().contain(hue)) { + return colorInfo; + } + } + + return null; + } + + private int randomWithin (Range range) { + return (int) Math.floor(range.start + random.nextDouble()*(range.end + 1 - range.start)); + } + + public void defineColor(String name, Range hueRange, List lowerBounds) { + int sMin = lowerBounds.get(0).start; + int sMax = lowerBounds.get(lowerBounds.size() - 1).start; + int bMin = lowerBounds.get(lowerBounds.size() - 1).end; + int bMax = lowerBounds.get(0).end; + + colors.put(name, new ColorInfo(hueRange, new Range(sMin, sMax), new Range(bMin, bMax), lowerBounds)); + } + + private void loadColorBounds() { + List lowerBounds1 = new ArrayList<>(); + lowerBounds1.add(new Range(0, 0)); + lowerBounds1.add(new Range(100, 0)); + defineColor( + Color.MONOCHROME.name(), + null, + lowerBounds1 + ); + + List lowerBounds2 = new ArrayList<>(); + lowerBounds2.add(new Range(20, 100)); + lowerBounds2.add(new Range(30, 92)); + lowerBounds2.add(new Range(40, 89)); + lowerBounds2.add(new Range(50, 85)); + lowerBounds2.add(new Range(60, 78)); + lowerBounds2.add(new Range(70, 70)); + lowerBounds2.add(new Range(80, 60)); + lowerBounds2.add(new Range(90, 55)); + lowerBounds2.add(new Range(100, 50)); + defineColor( + Color.RED.name(), + new Range(-26, 18), + lowerBounds2 + ); + + List lowerBounds3 = new ArrayList(); + lowerBounds3.add(new Range(20, 100)); + lowerBounds3.add(new Range(30, 93)); + lowerBounds3.add(new Range(40, 88)); + lowerBounds3.add(new Range(50, 86)); + lowerBounds3.add(new Range(60, 85)); + lowerBounds3.add(new Range(70, 70)); + lowerBounds3.add(new Range(100, 70)); + defineColor( + Color.ORANGE.name(), + new Range(19, 46), + lowerBounds3 + ); + + List lowerBounds4 = new ArrayList<>(); + lowerBounds4.add(new Range(25, 100)); + lowerBounds4.add(new Range(40, 94)); + lowerBounds4.add(new Range(50, 89)); + lowerBounds4.add(new Range(60, 86)); + lowerBounds4.add(new Range(70, 84)); + lowerBounds4.add(new Range(80, 82)); + lowerBounds4.add(new Range(90, 80)); + lowerBounds4.add(new Range(100, 75)); + + defineColor( + Color.YELLOW.name(), + new Range(47, 62), + lowerBounds4 + ); + + List lowerBounds5 = new ArrayList<>(); + lowerBounds5.add(new Range(30, 100)); + lowerBounds5.add(new Range(40, 90)); + lowerBounds5.add(new Range(50, 85)); + lowerBounds5.add(new Range(60, 81)); + lowerBounds5.add(new Range(70, 74)); + lowerBounds5.add(new Range(80, 64)); + lowerBounds5.add(new Range(90, 50)); + lowerBounds5.add(new Range(100, 40)); + + defineColor( + Color.GREEN.name(), + new Range(63,178), + lowerBounds5 + ); + + List lowerBounds6 = new ArrayList<>(); + lowerBounds6.add(new Range(20, 100)); + lowerBounds6.add(new Range(30, 86)); + lowerBounds6.add(new Range(40, 80)); + lowerBounds6.add(new Range(50, 74)); + lowerBounds6.add(new Range(60, 60)); + lowerBounds6.add(new Range(70, 52)); + lowerBounds6.add(new Range(80, 44)); + lowerBounds6.add(new Range(90, 39)); + lowerBounds6.add(new Range(100, 35)); + + defineColor( + Color.BLUE.name(), + new Range(179, 257), + lowerBounds6 + ); + + List lowerBounds7 = new ArrayList<>(); + lowerBounds7.add(new Range(20, 100)); + lowerBounds7.add(new Range(30, 87)); + lowerBounds7.add(new Range(40, 79)); + lowerBounds7.add(new Range(50, 70)); + lowerBounds7.add(new Range(60, 65)); + lowerBounds7.add(new Range(70, 59)); + lowerBounds7.add(new Range(80, 52)); + lowerBounds7.add(new Range(90, 45)); + lowerBounds7.add(new Range(100, 42)); + + defineColor( + Color.PURPLE.name(), + new Range(258, 282), + lowerBounds7 + ); + + List lowerBounds8 = new ArrayList<>(); + lowerBounds8.add(new Range(20, 100)); + lowerBounds8.add(new Range(30, 90)); + lowerBounds8.add(new Range(40, 86)); + lowerBounds8.add(new Range(60, 84)); + lowerBounds8.add(new Range(80, 80)); + lowerBounds8.add(new Range(90, 75)); + lowerBounds8.add(new Range(100, 73)); + + defineColor( + Color.PINK.name(), + new Range(283, 334), + lowerBounds8 + ); + } + + public static enum Color { + MONOCHROME, RED, ORANGE, YELLOW, GREEN, BLUE, PURPLE, PINK + } +} diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/utils/Range.java b/baselib/src/main/java/com/tenlionsoft/baselib/utils/Range.java new file mode 100644 index 0000000..d13c7af --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/utils/Range.java @@ -0,0 +1,20 @@ +package com.tenlionsoft.baselib.utils; + +public class Range { + int start; + int end; + + public Range(int start, int end) { + this.start = start; + this.end = end; + } + + public boolean contain(int value) { + return value >= start && value <= end; + } + + @Override + public String toString() { + return "start: " + start + " end: " + end; + } +} diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/utils/TimeUtils.java b/baselib/src/main/java/com/tenlionsoft/baselib/utils/TimeUtils.java index a9ccc0b..855af82 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/utils/TimeUtils.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/utils/TimeUtils.java @@ -117,6 +117,11 @@ public final class TimeUtils { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return format.format(date); } + public static String getCurrentTimeHHMM(){ + Date date = new Date(); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + return format.format(date); + } public static String getCurrentDate() { Date date = new Date(); diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/utils/ToastUtils.java b/baselib/src/main/java/com/tenlionsoft/baselib/utils/ToastUtils.java new file mode 100644 index 0000000..63b2604 --- /dev/null +++ b/baselib/src/main/java/com/tenlionsoft/baselib/utils/ToastUtils.java @@ -0,0 +1,18 @@ +package com.tenlionsoft.baselib.utils; + +import com.hjq.toast.Toaster; +import com.tenlionsoft.baselib.utils.ToastUtils; + +public class ToastUtils { + public static void show(String content) { + Toaster.show(content); + } + + public static void show(int content) { + Toaster.show(content); + } + + public static void showLong(String content) { + Toaster.showLong(content); + } +} diff --git a/baselib/src/main/res/drawable-xhdpi/ic_rb_normal_icon.png b/baselib/src/main/res/drawable-xhdpi/ic_rb_normal_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..dcb1c7ffe5b1868949604993a94157be933b22df GIT binary patch literal 673 zcmV;S0$%-zP)?q;?yltK;?<-^UUGhbzVhOtdnT5CNUJ<3URy^rHfn|sGHEQIaAqxO-P5qCD-Eh+U5$i4`!0sr$I<3D>0zVfG^2# zHc9jad+AhR!1fGk-)=zCXCU=gVSp9rrS`>alIRm)s1gHW&awr^GfA9M!N6EG2J{o^ z@5&^FVcKk)k0)L0D=;vQftEbPtKhU_@uO_PNG>v`bu|f}f;d^@LOc|+l6t@VB8?65 zG24(DUY+@B-C*fYl}Wq@Zq8DC2s~`>NQ-}n7wM%WKLw9GG0RJcUk5M9T~SzkGVFN8 zSZ2TCGw2O>nubk^!)D;V0_TD#SyEbjdN2{&3F#L23a)`}1{M!7#&feHP&(n+W$@Ns zw>;b8MEKtbRASrp0dRL>QhsAEF1t;(hj7!iRw6tfb2|P4XX?X7=5WC}00000NkvXX Hu0mjfQP?nt literal 0 HcmV?d00001 diff --git a/baselib/src/main/res/drawable-xhdpi/ic_rb_sel_point.png b/baselib/src/main/res/drawable-xhdpi/ic_rb_sel_point.png new file mode 100644 index 0000000000000000000000000000000000000000..48013739dc0e97ba3257b6c58c4cf22d7eec6dc6 GIT binary patch literal 853 zcmV-b1FHOqP)XK`AII z6k7!``;cT7su$z#G>hP|Xr)%cC!&ZRM8TpL#bo25Rzbz0_`(;6Uc?tYSVhzp)QW=1 zZmi-#Jn4UED%sg&lU>q-(t#g=o%z21f4-T_j3A7+f3e9#UnCJdDydqhNVJ$p)-;Dg z#>6od6;-N2^cF~iL2v_{1Xp3`4Sq8t{j{a5!jh^tA@L(=M5Gne=NlIy(OOg_g8ql# z35+Z)hxj@q8wQ({2(2k4#xRTtsK{Exd;y)o#fjdQEq8N}c#-G}5c?LDX!9=~p^a=! zF_VR^&P1kOFzt5G1FnEGV55-C%y5}d^_j>sq^NY6KLbSXlOj5Gi`#o3HVl5};XCLO z5zoKmXzdT`IxVcM4q2=nv_-I*#bXD^myTd4*HfW(QPC{cWrgfl0d zjhvst;nj}nxSB%r1`JGv!bauak4bAD68`jQ0Aw1uiS=VodH*#rXfrUKv$yv97Y9lE z2v>z}q(>v>4uZK)xo1^~nf+ z0Pcu{PW2m)xO3n!VyF2QA8qV;g=ZO?#Rt%#tfZC2VzAjL#y$tf<*+s>uy}66iz$bGlqsbq(K6f!FM~#ka*}5$2n$YV5k+0Ip?U%CFeL#g>WPAvoz8 f#zc6${nzaeh@qJRv9uc_00000NkvXXu0mjfeh!3| literal 0 HcmV?d00001 diff --git a/baselib/src/main/res/drawable-xhdpi/ic_statistics_count_percent_icon.png b/baselib/src/main/res/drawable-xhdpi/ic_statistics_count_percent_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d641360882d2f7facfa801333f1eeb0998c5c2de GIT binary patch literal 4174 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 + + + + \ No newline at end of file diff --git a/baselib/src/main/res/drawable/shp_rectangle_shade_white_blue.xml b/baselib/src/main/res/drawable/shp_rectangle_shade_white_blue.xml new file mode 100755 index 0000000..5b0bd49 --- /dev/null +++ b/baselib/src/main/res/drawable/shp_rectangle_shade_white_blue.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/baselib/src/main/res/drawable/shp_rectangle_top_left_bottom.xml b/baselib/src/main/res/drawable/shp_rectangle_top_left_bottom.xml new file mode 100755 index 0000000..f43ac4a --- /dev/null +++ b/baselib/src/main/res/drawable/shp_rectangle_top_left_bottom.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/baselib/src/main/res/drawable/shp_rectangle_yellow_shallow.xml b/baselib/src/main/res/drawable/shp_rectangle_yellow_shallow.xml new file mode 100755 index 0000000..a53512a --- /dev/null +++ b/baselib/src/main/res/drawable/shp_rectangle_yellow_shallow.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/baselib/src/main/res/layout/dialog_center_update_progress.xml b/baselib/src/main/res/layout/dialog_center_update_progress.xml new file mode 100755 index 0000000..be5f4e9 --- /dev/null +++ b/baselib/src/main/res/layout/dialog_center_update_progress.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/baselib/src/main/res/layout/item_all_area_sel.xml b/baselib/src/main/res/layout/item_all_area_sel.xml new file mode 100644 index 0000000..35d706b --- /dev/null +++ b/baselib/src/main/res/layout/item_all_area_sel.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/baselib/src/main/res/layout/popup_all_area_layout.xml b/baselib/src/main/res/layout/popup_all_area_layout.xml new file mode 100644 index 0000000..7b6b880 --- /dev/null +++ b/baselib/src/main/res/layout/popup_all_area_layout.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/baselib/src/main/res/values/attrs.xml b/baselib/src/main/res/values/attrs.xml index 9933a0c..ec47df2 100755 --- a/baselib/src/main/res/values/attrs.xml +++ b/baselib/src/main/res/values/attrs.xml @@ -194,4 +194,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/baselib/src/main/res/values/colors.xml b/baselib/src/main/res/values/colors.xml index 152ece6..0cc078c 100755 --- a/baselib/src/main/res/values/colors.xml +++ b/baselib/src/main/res/values/colors.xml @@ -60,6 +60,7 @@ #fa5148 #ffffffff + #9C8EC6 #31EAE7E7 #80ffffff #F2F0F0 diff --git a/baselib/src/main/res/values/dimens.xml b/baselib/src/main/res/values/dimens.xml index ab67a49..ca1755e 100755 --- a/baselib/src/main/res/values/dimens.xml +++ b/baselib/src/main/res/values/dimens.xml @@ -8,6 +8,7 @@ 22dp 14dp 12dp + 10dp 15dp 16dp 168dp diff --git a/build.gradle b/build.gradle index 05509fd..6adaebc 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.6.0' + ext.kotlin_version = '1.4.0-rc' repositories { google() jcenter() @@ -13,7 +13,7 @@ buildscript { classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0' classpath "com.alibaba:arouter-register:1.0.2" classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.6' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/AddressListActivity.java b/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/AddressListActivity.java index 0d9ffe9..5f0b452 100644 --- a/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/AddressListActivity.java +++ b/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/AddressListActivity.java @@ -15,7 +15,7 @@ import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.github.promeg.pinyinhelper.Pinyin; import com.gyf.immersionbar.ImmersionBar; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.chatmodule.R; import com.tengshisoft.chatmodule.R2; import com.tengshisoft.chatmodule.fragments.OftenContactFragment; @@ -31,6 +31,7 @@ import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.core.widget.base.BaseFragment; import com.tenlionsoft.baselib.core.widget.base.BaseViewPage2Adapter; import com.tenlionsoft.baselib.core.widget.base.ViewPageNavigatorAdapter; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/AddressListSearchActivity.java b/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/AddressListSearchActivity.java index d3b53a0..98d484c 100644 --- a/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/AddressListSearchActivity.java +++ b/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/AddressListSearchActivity.java @@ -11,7 +11,7 @@ import android.widget.ProgressBar; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.gyf.immersionbar.ImmersionBar; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.chatmodule.R; import com.tengshisoft.chatmodule.R2; @@ -23,6 +23,7 @@ import com.tenlionsoft.baselib.core.db.UserDao; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.core.widget.views.ItemSplitDivider; import com.tenlionsoft.baselib.core.widget.views.TypeFaceTextView; +import com.tenlionsoft.baselib.utils.ToastUtils; import java.util.ArrayList; import java.util.List; diff --git a/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/AddressUserDetailActivity.java b/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/AddressUserDetailActivity.java index 1b54611..601bde3 100644 --- a/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/AddressUserDetailActivity.java +++ b/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/AddressUserDetailActivity.java @@ -18,7 +18,7 @@ import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.huawei.ecterminalsdk.base.TsdkCallInfo; import com.huawei.ecterminalsdk.models.TsdkCommonResult; import com.huawei.ecterminalsdk.models.call.TsdkCall; @@ -57,6 +57,7 @@ import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.utils.AppUtils; import com.tenlionsoft.baselib.utils.EncryptedSPTool; import com.tenlionsoft.baselib.utils.LogUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/CallSingleActivity.java b/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/CallSingleActivity.java index e3df9cc..8bf1719 100644 --- a/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/CallSingleActivity.java +++ b/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/CallSingleActivity.java @@ -8,7 +8,7 @@ import android.view.WindowManager; import com.alibaba.android.arouter.facade.annotation.Route; import com.gyf.immersionbar.ImmersionBar; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.chatmodule.CallSessionCallback; import com.tengshisoft.chatmodule.R; import com.tengshisoft.chatmodule.beans.EnumType; @@ -21,6 +21,7 @@ import com.tenlionsoft.baselib.constant.PathConfig; import com.tenlionsoft.baselib.constant.PermissionConstants; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.utils.PermissionUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import java.util.UUID; diff --git a/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/ChatActivity.java b/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/ChatActivity.java index 4ede050..5713985 100644 --- a/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/ChatActivity.java +++ b/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/ChatActivity.java @@ -22,7 +22,7 @@ import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.huawei.ecterminalsdk.base.TsdkCallInfo; import com.huawei.ecterminalsdk.models.TsdkCommonResult; import com.huawei.ecterminalsdk.models.call.TsdkCall; @@ -75,6 +75,7 @@ import com.tenlionsoft.baselib.utils.EncryptedSPTool; import com.tenlionsoft.baselib.utils.ExceptionHandler; import com.tenlionsoft.baselib.utils.LogUtils; import com.tenlionsoft.baselib.utils.PermissionUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/InvitedPointCallActivity.java b/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/InvitedPointCallActivity.java index 61dd06a..1aa2a1c 100644 --- a/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/InvitedPointCallActivity.java +++ b/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/InvitedPointCallActivity.java @@ -22,7 +22,7 @@ import android.widget.TextView; import com.allen.library.SuperTextView; import com.bigkoo.pickerview.builder.OptionsPickerBuilder; import com.bigkoo.pickerview.view.OptionsPickerView; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.huawei.ecterminalsdk.base.TsdkConfRole; import com.huawei.ecterminalsdk.base.TsdkLdapContactsInfo; import com.huawei.ecterminalsdk.base.TsdkMobileAuidoRoute; @@ -82,6 +82,7 @@ import com.tenlionsoft.baselib.constant.ConfConstant; import com.tenlionsoft.baselib.core.beans.Member; import com.tenlionsoft.baselib.utils.EncryptedSPTool; import com.tenlionsoft.baselib.utils.LogUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import java.io.File; import java.util.ArrayList; diff --git a/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/ParticipantsActivityV2.java b/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/ParticipantsActivityV2.java index 20b213e..8634d5b 100644 --- a/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/ParticipantsActivityV2.java +++ b/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/ParticipantsActivityV2.java @@ -17,7 +17,7 @@ import android.widget.LinearLayout; import android.widget.TextView; import com.google.android.material.bottomsheet.BottomSheetDialog; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.huawei.ecterminalsdk.base.TsdkConfAttendeeInfo; import com.huawei.ecterminalsdk.base.TsdkConfSpeaker; import com.huawei.ecterminalsdk.base.TsdkConfTerminalType; @@ -42,6 +42,7 @@ import com.tengshisoft.chatmodule.hwclud.utils.UIUtil; import com.tenlionsoft.baselib.constant.ConstantsV2; import com.tenlionsoft.baselib.core.beans.Member; import com.tenlionsoft.baselib.utils.EncryptedSPTool; +import com.tenlionsoft.baselib.utils.ToastUtils; import java.util.ArrayList; import java.util.List; diff --git a/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/SponsorMeetingActivity.java b/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/SponsorMeetingActivity.java index e9ae3b4..56ece14 100644 --- a/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/SponsorMeetingActivity.java +++ b/chatmodule/src/main/java/com/tengshisoft/chatmodule/activity/SponsorMeetingActivity.java @@ -31,7 +31,7 @@ import android.widget.TextView; import com.bigkoo.pickerview.builder.OptionsPickerBuilder; import com.bigkoo.pickerview.view.OptionsPickerView; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.huawei.ecterminalsdk.base.TsdkConfRole; import com.huawei.ecterminalsdk.base.TsdkMobileAuidoRoute; import com.huawei.ecterminalsdk.base.TsdkNotifyHandUpAttendee; @@ -106,6 +106,7 @@ import com.tenlionsoft.baselib.constant.BroadcastConstant; import com.tenlionsoft.baselib.constant.ConfConstant; import com.tenlionsoft.baselib.core.beans.Member; import com.tenlionsoft.baselib.utils.EncryptedSPTool; +import com.tenlionsoft.baselib.utils.ToastUtils; import java.util.ArrayList; import java.util.Iterator; diff --git a/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/manager/LoginMangerV2.java b/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/manager/LoginMangerV2.java index bc188c1..9d3e7a1 100644 --- a/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/manager/LoginMangerV2.java +++ b/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/manager/LoginMangerV2.java @@ -4,7 +4,7 @@ package com.tengshisoft.chatmodule.hwclud.manager; import android.os.Build; import android.text.TextUtils; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.huawei.ecterminalsdk.base.TsdkAuthType; import com.huawei.ecterminalsdk.base.TsdkFailedInfo; import com.huawei.ecterminalsdk.base.TsdkForceLogoutInfo; @@ -38,6 +38,7 @@ import com.tenlionsoft.baselib.constant.BroadcastConstant; import com.tenlionsoft.baselib.constant.ConstantsV2; import com.tenlionsoft.baselib.utils.EncryptedSPTool; import com.tenlionsoft.baselib.utils.LogUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UserLgUtils; import androidx.annotation.RequiresApi; diff --git a/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/serivce/AuxSendService.java b/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/serivce/AuxSendService.java index 5a6953d..a345260 100644 --- a/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/serivce/AuxSendService.java +++ b/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/serivce/AuxSendService.java @@ -20,7 +20,7 @@ import android.view.ViewConfiguration; import android.view.WindowManager; import android.widget.LinearLayout; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.huawei.ecterminalsdk.models.call.TsdkCall; import com.tengshisoft.chatmodule.R; import com.tengshisoft.chatmodule.activity.SponsorMeetingActivity; @@ -39,6 +39,7 @@ import com.tengshisoft.chatmodule.hwclud.utils.Platform; import com.tenlionsoft.baselib.constant.BroadcastConstant; import com.tenlionsoft.baselib.constant.ConstantsV2; import com.tenlionsoft.baselib.core.beans.Member; +import com.tenlionsoft.baselib.utils.ToastUtils; import androidx.annotation.RequiresApi; import androidx.core.app.NotificationCompat; diff --git a/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/serivce/FloatingViewService.java b/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/serivce/FloatingViewService.java index 2d861b9..973fa91 100644 --- a/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/serivce/FloatingViewService.java +++ b/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/serivce/FloatingViewService.java @@ -17,12 +17,13 @@ import android.widget.Chronometer; import android.widget.FrameLayout; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.chatmodule.R; import com.tengshisoft.chatmodule.activity.SponsorMeetingActivity; import com.tengshisoft.chatmodule.hwclud.listener.FloatingViewListener; import com.tengshisoft.chatmodule.hwclud.manager.FloatingViewManager; import com.tengshisoft.chatmodule.hwclud.utils.LogUtil; +import com.tenlionsoft.baselib.utils.ToastUtils; import androidx.annotation.RequiresApi; diff --git a/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/serivce/MinimizeService.java b/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/serivce/MinimizeService.java index 7886759..859753a 100644 --- a/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/serivce/MinimizeService.java +++ b/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/serivce/MinimizeService.java @@ -20,7 +20,7 @@ import android.view.WindowManager; import android.widget.FrameLayout; import android.widget.TextView; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.huawei.ecterminalsdk.base.TsdkWatchSvcAttendees; import com.huawei.ecterminalsdk.models.call.TsdkCall; import com.tengshisoft.chatmodule.R; @@ -49,6 +49,7 @@ import com.tenlionsoft.baselib.app.BaseAppContext; import com.tenlionsoft.baselib.constant.BroadcastConstant; import com.tenlionsoft.baselib.core.beans.Member; import com.tenlionsoft.baselib.utils.EncryptedSPTool; +import com.tenlionsoft.baselib.utils.ToastUtils; import java.util.List; diff --git a/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/serivce/ServiceNotifyV2.java b/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/serivce/ServiceNotifyV2.java index 766a82e..9c93240 100644 --- a/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/serivce/ServiceNotifyV2.java +++ b/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/serivce/ServiceNotifyV2.java @@ -6,7 +6,7 @@ import android.os.Build; import android.text.TextUtils; import android.util.Log; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.huawei.ecterminalsdk.base.TsdkAttendee; import com.huawei.ecterminalsdk.base.TsdkAudioNetQuality; import com.huawei.ecterminalsdk.base.TsdkAuxTokenOwnerInd; @@ -91,6 +91,7 @@ import com.tenlionsoft.baselib.constant.ConstantsV2; import com.tenlionsoft.baselib.core.beans.Member; import com.tenlionsoft.baselib.utils.EncryptedSPTool; import com.tenlionsoft.baselib.utils.LogUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import java.util.TimerTask; diff --git a/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/ui/AuxMeetingFragment.java b/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/ui/AuxMeetingFragment.java index 1ef0c3a..afc131d 100644 --- a/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/ui/AuxMeetingFragment.java +++ b/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/ui/AuxMeetingFragment.java @@ -9,7 +9,7 @@ import android.os.Looper; import android.util.Log; import android.widget.FrameLayout; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.huawei.ecterminalsdk.base.TsdkWatchSvcAttendees; import com.tengshisoft.chatmodule.R; import com.tengshisoft.chatmodule.R2; @@ -22,6 +22,7 @@ import com.tengshisoft.chatmodule.hwclud.receiver.LocalBroadcast; import com.tengshisoft.chatmodule.hwclud.receiver.LocalBroadcastReceiver; import com.tengshisoft.chatmodule.hwclud.utils.LogUtil; import com.tenlionsoft.baselib.constant.BroadcastConstant; +import com.tenlionsoft.baselib.utils.ToastUtils; import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; diff --git a/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/ui/BaseMvpActivityV2.java b/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/ui/BaseMvpActivityV2.java index 476a5c7..1e8fe44 100644 --- a/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/ui/BaseMvpActivityV2.java +++ b/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/ui/BaseMvpActivityV2.java @@ -14,7 +14,7 @@ import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.chatmodule.R; import com.tengshisoft.chatmodule.activity.ChatActivity; import com.tengshisoft.chatmodule.activity.InvitedPointCallActivity; @@ -35,6 +35,7 @@ import com.tenlionsoft.baselib.app.BaseAppContext; import com.tenlionsoft.baselib.constant.ConstantsV2; import com.tenlionsoft.baselib.core.widget.views.LoadingDialog; import com.tenlionsoft.baselib.utils.EncryptedSPTool; +import com.tenlionsoft.baselib.utils.ToastUtils; import java.io.File; import java.util.concurrent.TimeUnit; diff --git a/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/ui/LazyloadFragment.java b/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/ui/LazyloadFragment.java index 512badb..e7111a5 100644 --- a/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/ui/LazyloadFragment.java +++ b/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/ui/LazyloadFragment.java @@ -8,9 +8,10 @@ import android.view.View; import android.view.ViewGroup; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.chatmodule.hwclud.listener.OrientationListener; import com.tengshisoft.chatmodule.hwclud.utils.LogUtil; +import com.tenlionsoft.baselib.utils.ToastUtils; import java.lang.ref.WeakReference; diff --git a/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/ui/SvcVideoFragment.kt b/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/ui/SvcVideoFragment.kt index 82fe854..d912df7 100644 --- a/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/ui/SvcVideoFragment.kt +++ b/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/ui/SvcVideoFragment.kt @@ -7,7 +7,6 @@ import android.view.ViewGroup import android.widget.FrameLayout import android.widget.RelativeLayout import androidx.annotation.RequiresApi -import com.hjq.toast.ToastUtils import com.huawei.ecterminalsdk.base.TsdkConfSpeakerInfo import com.huawei.ecterminalsdk.base.TsdkWatchSvcAttendees import com.tengshisoft.chatmodule.R @@ -24,6 +23,7 @@ import com.tengshisoft.chatmodule.hwclud.utils.* import com.tenlionsoft.baselib.constant.BroadcastConstant import com.tenlionsoft.baselib.constant.ConfConstant import com.tenlionsoft.baselib.core.beans.Member +import com.tenlionsoft.baselib.utils.ToastUtils import kotlinx.android.synthetic.main.fragment_svc_video.* import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch diff --git a/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/utils/HuaweiUtils.java b/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/utils/HuaweiUtils.java index 0357504..0b32ffe 100644 --- a/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/utils/HuaweiUtils.java +++ b/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/utils/HuaweiUtils.java @@ -14,7 +14,8 @@ import android.os.Build; import android.util.Log; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import java.lang.reflect.Method; diff --git a/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/utils/PhoneUtil.java b/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/utils/PhoneUtil.java index aaacf6d..58644da 100644 --- a/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/utils/PhoneUtil.java +++ b/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/utils/PhoneUtil.java @@ -9,9 +9,10 @@ import android.provider.Settings; import android.telephony.TelephonyManager; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.chatmodule.R; import com.tenlionsoft.baselib.app.BaseAppContext; +import com.tenlionsoft.baselib.utils.ToastUtils; import java.util.Calendar; diff --git a/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/utils/UIUtil.java b/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/utils/UIUtil.java index 7fdec07..03e7cee 100644 --- a/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/utils/UIUtil.java +++ b/chatmodule/src/main/java/com/tengshisoft/chatmodule/hwclud/utils/UIUtil.java @@ -40,12 +40,13 @@ import android.widget.Spinner; import android.widget.SpinnerAdapter; import android.widget.TextView; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.chatmodule.R; import com.tenlionsoft.baselib.app.BaseAppContext; import com.tenlionsoft.baselib.core.beans.Member; import com.tenlionsoft.baselib.utils.EncryptedSPTool; import com.tenlionsoft.baselib.utils.LogUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import java.lang.reflect.Field; import java.security.InvalidParameterException; diff --git a/chatmodule/src/main/java/com/tengshisoft/chatmodule/keeplive/services/VoipReceiver.java b/chatmodule/src/main/java/com/tengshisoft/chatmodule/keeplive/services/VoipReceiver.java index d5f10d2..09b90ed 100644 --- a/chatmodule/src/main/java/com/tengshisoft/chatmodule/keeplive/services/VoipReceiver.java +++ b/chatmodule/src/main/java/com/tengshisoft/chatmodule/keeplive/services/VoipReceiver.java @@ -6,7 +6,8 @@ import android.content.Intent; import android.media.AsyncPlayer; import android.util.Log; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import java.util.ArrayList; diff --git a/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/DeptSelActivity.java b/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/DeptSelActivity.java index 680899c..0f06c09 100644 --- a/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/DeptSelActivity.java +++ b/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/DeptSelActivity.java @@ -11,7 +11,7 @@ import android.widget.ImageView; import android.widget.LinearLayout; import com.alibaba.android.arouter.facade.annotation.Route; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commandmodule.R; import com.tengshisoft.commandmodule.R2; @@ -22,6 +22,7 @@ import com.tenlionsoft.baselib.constant.PathConfig; import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentAcceptDetailActivity.java b/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentAcceptDetailActivity.java index e444715..ac8d962 100644 --- a/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentAcceptDetailActivity.java +++ b/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentAcceptDetailActivity.java @@ -35,7 +35,7 @@ import com.baidu.mapapi.model.LatLng; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import com.google.gson.Gson; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commandmodule.R; import com.tengshisoft.commandmodule.R2; import com.tengshisoft.commonmodule.adapters.IncidentTagListAdapter; @@ -64,6 +64,7 @@ import com.tenlionsoft.baselib.core.widget.views.DiffcultDialog; import com.tenlionsoft.baselib.core.widget.views.OperatePopup; 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; diff --git a/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentAcceptListActivity.java b/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentAcceptListActivity.java index 7b4a9f3..b73c497 100644 --- a/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentAcceptListActivity.java +++ b/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentAcceptListActivity.java @@ -14,7 +14,7 @@ import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.gyf.immersionbar.ImmersionBar; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commandmodule.R; import com.tengshisoft.commandmodule.R2; @@ -26,6 +26,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.core.widget.views.ItemSplitDivider; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentAlterDetailActivity.java b/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentAlterDetailActivity.java index 3750bde..e908bab 100644 --- a/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentAlterDetailActivity.java +++ b/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentAlterDetailActivity.java @@ -42,7 +42,7 @@ import com.bigkoo.pickerview.view.TimePickerView; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import com.google.gson.Gson; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commandmodule.R; import com.tengshisoft.commandmodule.R2; import com.tengshisoft.commonmodule.adapters.CommunityUserListBean; @@ -70,6 +70,7 @@ import com.tenlionsoft.baselib.core.widget.videorecord.MediaManager; import com.tenlionsoft.baselib.core.widget.views.OperatePopup; import com.tenlionsoft.baselib.utils.ExceptionHandler; import com.tenlionsoft.baselib.utils.TimeUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentAlterListActivity.java b/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentAlterListActivity.java index db9f448..edbba44 100644 --- a/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentAlterListActivity.java +++ b/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentAlterListActivity.java @@ -18,7 +18,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.gyf.immersionbar.ImmersionBar; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commandmodule.R; import com.tengshisoft.commandmodule.R2; @@ -30,6 +30,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.core.widget.views.ItemSplitDivider; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentAnewListActivity.java b/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentAnewListActivity.java index 1e6debe..40d52c5 100644 --- a/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentAnewListActivity.java +++ b/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentAnewListActivity.java @@ -18,7 +18,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.gyf.immersionbar.ImmersionBar; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commandmodule.R; import com.tengshisoft.commandmodule.R2; @@ -30,6 +30,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.core.widget.views.ItemSplitDivider; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentDispatchDetailActivity.java b/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentDispatchDetailActivity.java index 6bbbd97..0d73ffe 100644 --- a/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentDispatchDetailActivity.java +++ b/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentDispatchDetailActivity.java @@ -42,7 +42,7 @@ import com.bigkoo.pickerview.view.TimePickerView; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import com.google.gson.Gson; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commandmodule.R; import com.tengshisoft.commandmodule.R2; import com.tengshisoft.commonmodule.adapters.CommunityUserListBean; @@ -68,6 +68,7 @@ import com.tenlionsoft.baselib.core.widget.videorecord.MediaManager; import com.tenlionsoft.baselib.core.widget.views.OperatePopup; import com.tenlionsoft.baselib.utils.ExceptionHandler; import com.tenlionsoft.baselib.utils.TimeUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentDispatchListActivity.java b/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentDispatchListActivity.java index de4efa8..78097ef 100644 --- a/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentDispatchListActivity.java +++ b/commandmodule/src/main/java/com/tengshisoft/commandmodule/activitys/incident/IncidentDispatchListActivity.java @@ -14,7 +14,7 @@ import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.gyf.immersionbar.ImmersionBar; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commandmodule.R; import com.tengshisoft.commandmodule.R2; @@ -26,6 +26,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.core.widget.views.ItemSplitDivider; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentArchiveListActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentArchiveListActivity.java index bc05bdc..34426e9 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentArchiveListActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentArchiveListActivity.java @@ -15,7 +15,7 @@ import androidx.viewpager2.widget.ViewPager2; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.gyf.immersionbar.ImmersionBar; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; import com.tenlionsoft.baselib.constant.PathConfig; @@ -27,6 +27,7 @@ import com.tenlionsoft.baselib.core.widget.base.BaseFragment; import com.tenlionsoft.baselib.core.widget.base.BaseViewPage2Adapter; import com.tenlionsoft.baselib.core.widget.base.ViewPageNavigatorAdapter; import com.tenlionsoft.baselib.core.widget.views.ConditionAreaPopup; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentAreaListActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentAreaListActivity.java index 98747a7..e620ea7 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentAreaListActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentAreaListActivity.java @@ -19,7 +19,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.gyf.immersionbar.ImmersionBar; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; @@ -34,6 +34,7 @@ import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.core.widget.views.ConditionAreaPopup; import com.tenlionsoft.baselib.core.widget.views.ItemSplitDivider; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentCenterCheckDetailActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentCenterCheckDetailActivity.java index be4d6c1..9f322c3 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentCenterCheckDetailActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentCenterCheckDetailActivity.java @@ -34,7 +34,7 @@ import com.baidu.mapapi.model.LatLng; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import com.google.gson.Gson; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; @@ -64,6 +64,7 @@ import com.tenlionsoft.baselib.core.widget.views.CenterInputViewBase; import com.tenlionsoft.baselib.core.widget.views.CenterTextAndInputView; import com.tenlionsoft.baselib.core.widget.views.OperatePopup; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentCenterCheckListActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentCenterCheckListActivity.java index 2b40e29..79cd674 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentCenterCheckListActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentCenterCheckListActivity.java @@ -14,7 +14,7 @@ import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.gyf.immersionbar.ImmersionBar; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; @@ -27,6 +27,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.conver.RxTransformer; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.core.widget.views.ItemSplitDivider; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentCheckDetailActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentCheckDetailActivity.java index 60acfe5..52d1c83 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentCheckDetailActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentCheckDetailActivity.java @@ -36,7 +36,7 @@ import com.baidu.mapapi.model.LatLng; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import com.google.gson.Gson; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; @@ -61,6 +61,7 @@ import com.tenlionsoft.baselib.core.widget.base.BaseShowPhotoAdapter; import com.tenlionsoft.baselib.core.widget.videorecord.MediaManager; import com.tenlionsoft.baselib.core.widget.views.ButtomDialogView; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentCheckListActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentCheckListActivity.java index 89761a3..a88f9fe 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentCheckListActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentCheckListActivity.java @@ -15,7 +15,7 @@ import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.gyf.immersionbar.ImmersionBar; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.jakewharton.rxbinding3.widget.RxTextView; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; @@ -28,6 +28,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.core.widget.views.ItemSplitDivider; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentComponentSelActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentComponentSelActivity.java index be565a9..6aa23ff 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentComponentSelActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentComponentSelActivity.java @@ -9,7 +9,7 @@ import android.widget.ProgressBar; import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Route; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; @@ -20,6 +20,7 @@ import com.tenlionsoft.baselib.constant.PathConfig; import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentDeferExamineDetailActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentDeferExamineDetailActivity.java index 3007d27..c330c02 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentDeferExamineDetailActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentDeferExamineDetailActivity.java @@ -30,7 +30,7 @@ import com.baidu.mapapi.model.LatLng; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import com.google.gson.Gson; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; import com.tengshisoft.commonmodule.adapters.IncidentTagListAdapter; @@ -55,6 +55,7 @@ import com.tenlionsoft.baselib.core.widget.base.BaseShowPhotoAdapter; import com.tenlionsoft.baselib.core.widget.videorecord.MediaManager; import com.tenlionsoft.baselib.core.widget.views.OperatePopup; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentDeferExamineListActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentDeferExamineListActivity.java index 5d527d5..0ff19df 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentDeferExamineListActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentDeferExamineListActivity.java @@ -6,7 +6,7 @@ import android.view.View; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; import com.tenlionsoft.baselib.constant.PathConfig; @@ -14,6 +14,7 @@ import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.core.widget.base.BaseFragment; import com.tenlionsoft.baselib.core.widget.base.BaseViewPage2Adapter; import com.tenlionsoft.baselib.core.widget.base.ViewPageNavigatorAdapter; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import net.lucode.hackware.magicindicator.MagicIndicator; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentDetailActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentDetailActivity.java index bb4c1fe..055908b 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentDetailActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentDetailActivity.java @@ -39,7 +39,7 @@ import com.baidu.mapapi.model.LatLng; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import com.google.gson.Gson; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; @@ -75,6 +75,7 @@ import com.tenlionsoft.baselib.core.widget.views.ItemSplitDivider; import com.tenlionsoft.baselib.core.widget.views.OperatePopup; 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; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentDoneListActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentDoneListActivity.java index 3f86d52..746083d 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentDoneListActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentDoneListActivity.java @@ -15,7 +15,7 @@ import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.gyf.immersionbar.ImmersionBar; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.jakewharton.rxbinding3.widget.RxTextView; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; @@ -28,6 +28,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.core.widget.views.ItemSplitDivider; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentEditActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentEditActivity.java index c67861b..f04cc91 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentEditActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentEditActivity.java @@ -29,7 +29,7 @@ import com.baidu.mapapi.model.LatLng; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import com.google.gson.Gson; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; @@ -49,6 +49,7 @@ import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.core.widget.base.BaseShowPhotoAdapter; import com.tenlionsoft.baselib.core.widget.videorecord.MediaManager; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentHandleActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentHandleActivity.java index f5c8046..b216cff 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentHandleActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentHandleActivity.java @@ -42,7 +42,7 @@ import com.baidu.mapapi.model.LatLng; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import com.google.gson.Gson; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; import com.tengshisoft.commonmodule.adapters.DeferRecordAdapter; @@ -75,6 +75,7 @@ import com.tenlionsoft.baselib.core.widget.views.CenterInputView; import com.tenlionsoft.baselib.core.widget.views.CenterTimeAndIntputView; 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; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentHandleListActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentHandleListActivity.java index adfb5f5..caa9bb0 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentHandleListActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentHandleListActivity.java @@ -15,7 +15,7 @@ import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.gyf.immersionbar.ImmersionBar; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.jakewharton.rxbinding3.widget.RxTextView; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; @@ -28,6 +28,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.core.widget.views.ItemSplitDivider; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentListActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentListActivity.java index f1f3de3..dbad5f6 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentListActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentListActivity.java @@ -15,7 +15,7 @@ import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.gyf.immersionbar.ImmersionBar; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.jakewharton.rxbinding3.widget.RxTextView; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; @@ -28,6 +28,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.core.widget.views.ItemSplitDivider; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentOverseeDetailOrReplyActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentOverseeDetailOrReplyActivity.java index c840da4..402aa51 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentOverseeDetailOrReplyActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentOverseeDetailOrReplyActivity.java @@ -10,7 +10,7 @@ import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Route; import com.google.gson.Gson; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; import com.tengshisoft.commonmodule.beans.IncidentOverseeDetailBean; @@ -22,6 +22,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.retrofit_net.conver.RxTransformer; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentReportActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentReportActivity.java index f597ab1..20c66c7 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentReportActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentReportActivity.java @@ -37,7 +37,7 @@ import com.bigkoo.pickerview.view.OptionsPickerView; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import com.google.gson.Gson; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; import com.tengshisoft.commonmodule.beans.AreaGridListBean; @@ -66,6 +66,7 @@ import com.tenlionsoft.baselib.core.widget.views.AreaChooseDialog; import com.tenlionsoft.baselib.core.widget.views.ButtomDialogView; import com.tenlionsoft.baselib.utils.ExceptionHandler; import com.tenlionsoft.baselib.utils.PermissionUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentReturnRecordActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentReturnRecordActivity.java index 4fde9c0..c839bca 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentReturnRecordActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentReturnRecordActivity.java @@ -6,7 +6,7 @@ import android.view.View; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentReturnRecordAddActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentReturnRecordAddActivity.java index 0dac0bd..07967dc 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentReturnRecordAddActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentReturnRecordAddActivity.java @@ -15,7 +15,7 @@ import com.bigkoo.pickerview.builder.TimePickerBuilder; import com.bigkoo.pickerview.view.OptionsPickerView; import com.bigkoo.pickerview.view.TimePickerView; import com.google.gson.Gson; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; import com.tengshisoft.commonmodule.beans.SaveFloatingBean; @@ -28,6 +28,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.utils.ExceptionHandler; import com.tenlionsoft.baselib.utils.TimeUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentSpecialActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentSpecialActivity.java index 8b72641..c554444 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentSpecialActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentSpecialActivity.java @@ -7,7 +7,7 @@ import android.view.View; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.gyf.immersionbar.ImmersionBar; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; import com.tenlionsoft.baselib.constant.PathConfig; @@ -16,6 +16,7 @@ import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.core.widget.base.BaseFragment; import com.tenlionsoft.baselib.core.widget.base.BaseViewPage2Adapter; import com.tenlionsoft.baselib.core.widget.base.ViewPageNavigatorAdapter; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import net.lucode.hackware.magicindicator.MagicIndicator; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentSpecialDeptActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentSpecialDeptActivity.java index 0a66ec7..a2a4079 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentSpecialDeptActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/IncidentSpecialDeptActivity.java @@ -5,7 +5,7 @@ import android.view.View; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; import com.tenlionsoft.baselib.constant.PathConfig; @@ -14,6 +14,7 @@ import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.core.widget.base.BaseFragment; import com.tenlionsoft.baselib.core.widget.base.BaseViewPage2Adapter; import com.tenlionsoft.baselib.core.widget.base.ViewPageNavigatorAdapter; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import net.lucode.hackware.magicindicator.MagicIndicator; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/TaskConverIncidentDetailActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/TaskConverIncidentDetailActivity.java index 2828db0..978c91e 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/TaskConverIncidentDetailActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/TaskConverIncidentDetailActivity.java @@ -127,6 +127,7 @@ public class TaskConverIncidentDetailActivity extends BaseActivity { private void getDetailData() { Observable incidentDetailById = RetrofitManager.getInstance().create(GridApis.class).getIncidentDetailById(mReportId, UserLgUtils.getToken()); Observable taskReportDetailById = RetrofitManager.getInstance().create(GridApis.class).getTaskReportDetailById(mRecordId, UserLgUtils.getToken()); + Observable.mergeDelayError(incidentDetailById, taskReportDetailById) .compose(RxTransformer.getTransformer()) .subscribe(new Observer() { diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/TaskConverIncidentReportActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/TaskConverIncidentReportActivity.java index a21908f..da81ed3 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/TaskConverIncidentReportActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/cases/TaskConverIncidentReportActivity.java @@ -28,7 +28,7 @@ import com.bigkoo.pickerview.view.TimePickerView; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import com.google.gson.Gson; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; import com.tengshisoft.commonmodule.beans.AreaGridListBean; @@ -56,6 +56,7 @@ import com.tenlionsoft.baselib.utils.ExceptionHandler; import com.tenlionsoft.baselib.utils.LogUtils; import com.tenlionsoft.baselib.utils.PermissionUtils; import com.tenlionsoft.baselib.utils.TimeUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseCommunityUserActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseCommunityUserActivity.java index b59df58..afaef2e 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseCommunityUserActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseCommunityUserActivity.java @@ -14,7 +14,7 @@ import com.alibaba.android.arouter.facade.annotation.Route; import com.google.android.flexbox.FlexDirection; import com.google.android.flexbox.FlexWrap; import com.google.android.flexbox.FlexboxLayoutManager; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; @@ -30,6 +30,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.retrofit_net.conver.RxTransformer; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UserLgUtils; import java.util.ArrayList; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseDeptActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseDeptActivity.java index 24d3d8c..3ff6d7e 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseDeptActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseDeptActivity.java @@ -11,7 +11,7 @@ import com.alibaba.android.arouter.facade.annotation.Route; import com.google.android.flexbox.FlexDirection; import com.google.android.flexbox.FlexWrap; import com.google.android.flexbox.FlexboxLayoutManager; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; @@ -27,6 +27,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.utils.ExceptionHandler; import com.tenlionsoft.baselib.utils.LogUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UserLgUtils; import java.util.ArrayList; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseDeptKnowLedgeActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseDeptKnowLedgeActivity.java index 4118b71..e88edb9 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseDeptKnowLedgeActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseDeptKnowLedgeActivity.java @@ -11,7 +11,7 @@ import com.alibaba.android.arouter.facade.annotation.Route; import com.google.android.flexbox.FlexDirection; import com.google.android.flexbox.FlexWrap; import com.google.android.flexbox.FlexboxLayoutManager; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; @@ -30,6 +30,7 @@ import com.tenlionsoft.baselib.constant.PathConfig; import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UserLgUtils; import java.util.ArrayList; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseDeptUserActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseDeptUserActivity.java index e307736..bd99eb0 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseDeptUserActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseDeptUserActivity.java @@ -10,7 +10,7 @@ import com.alibaba.android.arouter.facade.annotation.Route; import com.google.android.flexbox.FlexDirection; import com.google.android.flexbox.FlexWrap; import com.google.android.flexbox.FlexboxLayoutManager; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; @@ -26,6 +26,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.retrofit_net.conver.RxTransformer; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UserLgUtils; import java.util.ArrayList; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseGridActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseGridActivity.java index 081494b..73c1169 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseGridActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseGridActivity.java @@ -9,7 +9,7 @@ import android.widget.ProgressBar; import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Route; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; @@ -21,6 +21,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.core.widget.views.ItemSplitDivider; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UserLgUtils; import java.util.ArrayList; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseGridUserActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseGridUserActivity.java index aafec3b..0b2756a 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseGridUserActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseGridUserActivity.java @@ -14,7 +14,7 @@ import com.alibaba.android.arouter.facade.annotation.Route; import com.google.android.flexbox.FlexDirection; import com.google.android.flexbox.FlexWrap; import com.google.android.flexbox.FlexboxLayoutManager; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; @@ -29,6 +29,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.retrofit_net.conver.RxTransformer; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UserLgUtils; import java.util.ArrayList; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseOrgAreaActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseOrgAreaActivity.java index 8183694..a8ac068 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseOrgAreaActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChooseOrgAreaActivity.java @@ -10,7 +10,7 @@ import com.alibaba.android.arouter.facade.annotation.Route; import com.google.android.flexbox.FlexDirection; import com.google.android.flexbox.FlexWrap; import com.google.android.flexbox.FlexboxLayoutManager; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; @@ -24,6 +24,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.retrofit_net.conver.RxTransformer; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UserLgUtils; import java.util.ArrayList; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChoosePersonActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChoosePersonActivity.java index d9f54fc..e3521e8 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChoosePersonActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/department/ChoosePersonActivity.java @@ -12,7 +12,7 @@ import android.widget.ProgressBar; import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Route; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; @@ -23,6 +23,7 @@ import com.tenlionsoft.baselib.constant.PathConfig; import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/journal/JournalListActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/journal/JournalListActivity.java index a8cdec1..54efcc4 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/journal/JournalListActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/journal/JournalListActivity.java @@ -16,7 +16,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.gyf.immersionbar.ImmersionBar; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; @@ -28,6 +28,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.core.widget.views.ItemSplitDivider; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/logs/StatisticsCommandActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/logs/StatisticsCommandActivity.java index 8da716b..bc8e969 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/logs/StatisticsCommandActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/logs/StatisticsCommandActivity.java @@ -89,6 +89,7 @@ public class StatisticsCommandActivity extends BaseActivity { commonNavigator.setAdapter(new ViewPageWhiteNavigatorAdapter(this, mTitles, mVpContent)); commonNavigator.setAdjustMode(false); mMiTabs.setNavigator(commonNavigator); + mVpContent.setUserInputEnabled(false); UIUtil.bindViewPager2(mMiTabs, mVpContent, null); } diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/logs/StatisticsGridActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/logs/StatisticsGridActivity.java index e78a0c2..ff9f5eb 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/logs/StatisticsGridActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/logs/StatisticsGridActivity.java @@ -17,7 +17,7 @@ import com.github.mikephil.charting.data.BarDataSet; import com.github.mikephil.charting.data.BarEntry; import com.github.mikephil.charting.formatter.LargeValueFormatter; import com.gyf.immersionbar.ImmersionBar; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; import com.tengshisoft.commonmodule.beans.GridStatistCountBean; @@ -27,6 +27,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.retrofit_net.conver.RxTransformer; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.utils.TimeUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/populace/CensusBaseDetailActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/populace/CensusBaseDetailActivity.java index 67581bf..df5a9e1 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/populace/CensusBaseDetailActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/populace/CensusBaseDetailActivity.java @@ -7,7 +7,7 @@ import android.widget.Button; import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Route; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; import com.tengshisoft.commonmodule.beans.SuccessBean; @@ -19,6 +19,7 @@ import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.core.widget.views.CenterBaseInputView; import com.tenlionsoft.baselib.utils.ExceptionHandler; import com.tenlionsoft.baselib.utils.IDCard; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/populace/PopulaceAreaListActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/populace/PopulaceAreaListActivity.java index 539e0b1..57b87b0 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/populace/PopulaceAreaListActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/populace/PopulaceAreaListActivity.java @@ -19,7 +19,6 @@ import androidx.recyclerview.widget.RecyclerView; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.gyf.immersionbar.ImmersionBar; -import com.hjq.toast.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; @@ -36,6 +35,7 @@ import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.core.widget.views.ConditionAreaPopup; import com.tenlionsoft.baselib.core.widget.views.ItemSplitDivider; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; @@ -262,13 +262,9 @@ public class PopulaceAreaListActivity extends BaseActivity { AreaSimpleBean bean2 = new AreaSimpleBean(); bean2.setId("2"); bean2.setName("户籍人口(外出)"); - AreaSimpleBean bean3 = new AreaSimpleBean(); - bean3.setId("3"); - bean3.setName("非户籍人口"); mTypeList = new ArrayList<>(); mTypeList.add(bean1); mTypeList.add(bean2); - mTypeList.add(bean3); } diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeAskAddActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeAskAddActivity.java index da2fb8c..697ddf5 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeAskAddActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeAskAddActivity.java @@ -10,7 +10,7 @@ import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.google.gson.Gson; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; import com.tengshisoft.commonmodule.beans.DeptBean; @@ -23,6 +23,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.retrofit_net.conver.RxTransformer; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeAskDetailActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeAskDetailActivity.java index 8fb77a3..04b4cbb 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeAskDetailActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeAskDetailActivity.java @@ -14,7 +14,7 @@ import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.google.gson.Gson; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; import com.tengshisoft.commonmodule.beans.KnowAskDetailBean; @@ -27,6 +27,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.conver.RxTransformer; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.core.widget.views.CenterBaseInputView; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeDetailActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeDetailActivity.java index cbdff07..0d014f8 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeDetailActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeDetailActivity.java @@ -18,7 +18,7 @@ import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Route; import com.google.gson.Gson; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; @@ -37,6 +37,7 @@ import com.tenlionsoft.baselib.core.widget.views.CorrectionDialog; import com.tenlionsoft.baselib.core.widget.views.ItemSplitDivider; import com.tenlionsoft.baselib.core.widget.views.NestedScrollWebView; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeListActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeListActivity.java index 2b50a98..b491d20 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeListActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeListActivity.java @@ -9,7 +9,7 @@ import android.view.View; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.gyf.immersionbar.ImmersionBar; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; import com.tengshisoft.commonmodule.nets.GridApis; @@ -24,6 +24,7 @@ import com.tenlionsoft.baselib.core.widget.base.BaseViewPage2Adapter; import com.tenlionsoft.baselib.core.widget.base.ViewPageNavigatorAdapter; import com.tenlionsoft.baselib.core.widget.views.ConditionDicPopup; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeManageAddActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeManageAddActivity.java index b62003a..4603e70 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeManageAddActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeManageAddActivity.java @@ -13,7 +13,7 @@ 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.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; import com.tengshisoft.commonmodule.beans.CaseTypeBean; @@ -30,6 +30,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.retrofit_net.conver.RxTransformer; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeManageDetailActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeManageDetailActivity.java index 631f9a6..6112c39 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeManageDetailActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeManageDetailActivity.java @@ -12,7 +12,7 @@ import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; import com.tengshisoft.commonmodule.beans.KnowReportDetailBean; @@ -23,6 +23,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.retrofit_net.conver.RxTransformer; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeManageListActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeManageListActivity.java index 338038e..27858c6 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeManageListActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/repository/KnowLedgeManageListActivity.java @@ -6,7 +6,7 @@ import android.view.View; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; @@ -19,6 +19,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.conver.RxTransformer; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.core.widget.base.BaseRecyclerAdapter; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UserLgUtils; import java.util.ArrayList; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/usercenter/ForgetPwdActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/usercenter/ForgetPwdActivity.java index 73aeb88..dcd5939 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/usercenter/ForgetPwdActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/usercenter/ForgetPwdActivity.java @@ -13,7 +13,7 @@ import android.widget.ImageView; import com.alibaba.android.arouter.facade.annotation.Route; import com.google.gson.Gson; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; import com.tenlionsoft.baselib.constant.PathConfig; @@ -27,6 +27,7 @@ import com.tenlionsoft.baselib.core.widget.base.BaseActivity; import com.tenlionsoft.baselib.utils.EncryptUtils; import com.tenlionsoft.baselib.utils.ExceptionHandler; import com.tenlionsoft.baselib.utils.RegexUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import java.util.concurrent.TimeUnit; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/usercenter/UserCenterActivity.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/usercenter/UserCenterActivity.java index 743c4cc..5fce215 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/usercenter/UserCenterActivity.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/usercenter/UserCenterActivity.java @@ -20,7 +20,7 @@ import com.alibaba.android.arouter.facade.annotation.Route; import com.bumptech.glide.Glide; import com.bumptech.glide.load.resource.bitmap.CircleCrop; import com.bumptech.glide.request.RequestOptions; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; import com.tenlionsoft.baselib.constant.BaseConfig; @@ -40,6 +40,7 @@ import com.tenlionsoft.baselib.utils.AppUtils; import com.tenlionsoft.baselib.utils.ExceptionHandler; import com.tenlionsoft.baselib.utils.FileUtils; import com.tenlionsoft.baselib.utils.ProiderUtil; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/usercenter/UserCenterFragment.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/usercenter/UserCenterFragment.java index a190a01..ced401c 100755 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/usercenter/UserCenterFragment.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/activitys/usercenter/UserCenterFragment.java @@ -26,7 +26,7 @@ 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.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; import com.tengshisoft.commonmodule.beans.ChangePwdBean; @@ -61,6 +61,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; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/adapters/GridPersonCountAdapter.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/adapters/GridPersonCountAdapter.java new file mode 100644 index 0000000..e9a3c62 --- /dev/null +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/adapters/GridPersonCountAdapter.java @@ -0,0 +1,56 @@ +package com.tengshisoft.commonmodule.adapters; + +import android.content.Context; +import android.graphics.Color; +import android.graphics.Typeface; +import android.text.SpannableString; +import android.text.style.ForegroundColorSpan; +import android.text.style.RelativeSizeSpan; +import android.text.style.StyleSpan; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.tengshisoft.commonmodule.R; +import com.tengshisoft.commonmodule.beans.AreaGridLowCountBean; +import com.tengshisoft.commonmodule.holders.GridCountItemHolder; +import com.tenlionsoft.baselib.core.widget.base.BaseRecyclerAdapter; + +import java.util.List; + +/** + * 作者: adam + * 日期: 2021/9/26 - 3:01 下午 + * 邮箱: itgaojian@163.com + * 描述: 网格员 + */ +public class GridPersonCountAdapter extends BaseRecyclerAdapter { + + public GridPersonCountAdapter(Context ctx, List list) { + super(ctx, list); + } + + @Override + public GridCountItemHolder createHolder(ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_grid_count_percent, parent, false); + return new GridCountItemHolder(itemView); + } + + @Override + public void bindHolder(GridCountItemHolder h, int i) { + AreaGridLowCountBean.DataBean bean = mData.get(i); + h.mTvName.setText(bean.getAreaName()); + String content = bean.getTotal() + " 人"; + SpannableString gridCount = generateGridCount(content); + h.mTvCount.setText(gridCount); + } + + private SpannableString generateGridCount(String content) { + SpannableString s = new SpannableString(content); + s.setSpan(new RelativeSizeSpan(1.2f), 0, content.indexOf(" 人"), 0); + s.setSpan(new RelativeSizeSpan(0.6f), content.indexOf(" 人"), content.length(), 0); + s.setSpan(new ForegroundColorSpan(Color.parseColor("#F6B37F")), 0, content.indexOf(" 人"), 0); + s.setSpan(new StyleSpan(Typeface.BOLD), 0, content.length(), 0); + return s; + } +} diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/adapters/IncidentStatisticsAdapter.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/adapters/IncidentStatisticsAdapter.java new file mode 100644 index 0000000..649e326 --- /dev/null +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/adapters/IncidentStatisticsAdapter.java @@ -0,0 +1,83 @@ +package com.tengshisoft.commonmodule.adapters; + +import android.content.Context; +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.tengshisoft.commonmodule.R; +import com.tengshisoft.commonmodule.beans.IncidentTop7Bean; +import com.tengshisoft.commonmodule.holders.IncidentStatisticsHolder; +import com.tenlionsoft.baselib.core.widget.base.BaseRecyclerAdapter; + +import java.util.List; + +/** + * 作者: adam + * 日期: 2021/9/26 - 3:01 下午 + * 邮箱: itgaojian@163.com + * 描述: 网格员上报事件排行 + */ +public class IncidentStatisticsAdapter extends BaseRecyclerAdapter { + + public IncidentStatisticsAdapter(Context ctx, List list) { + super(ctx, list); + } + + @Override + public IncidentStatisticsHolder createHolder(ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_grid_incident_statistics, parent, false); + return new IncidentStatisticsHolder(itemView); + } + + @Override + public void bindHolder(IncidentStatisticsHolder h, int i) { + if (i == 0) { + h.mTvNumber.setText("排名"); + h.mTvName.setText("网格员姓名"); + h.mTvRanking.setText("上报事件"); + h.mTvNumber.setTextColor(Color.parseColor("#FFFFFF")); + h.mTvNumber.setBackgroundResource(0); + h.mTvName.setTextColor(Color.parseColor("#FFFFFF")); + h.mTvRanking.setTextColor(Color.parseColor("#FFFFFF")); + h.mLlItemContent.setBackgroundResource(R.drawable.shp_rectangle_shade_white_blue); + } else { + h.mLlItemContent.setBackgroundResource(0); + if (mData.get(i).getPm() == 1) { + h.mTvNumber.setTextColor(Color.parseColor("#FFFFFF")); + h.mTvName.setTextColor(Color.parseColor("#46494D")); + h.mTvRanking.setTextColor(Color.parseColor("#46494D")); + h.mTvNumber.setBackgroundResource(R.drawable.ic_statistics_one); + h.mTvRanking.setText(mData.get(i).getReportNum() + ""); + h.mTvName.setText(mData.get(i).getUserName()); + h.mTvNumber.setText(mData.get(i).getPm() + ""); + } else if (mData.get(i).getPm() == 2) { + h.mTvNumber.setBackgroundResource(R.drawable.ic_statistics_two); + h.mTvNumber.setTextColor(Color.parseColor("#FFFFFF")); + h.mTvName.setTextColor(Color.parseColor("#46494D")); + h.mTvRanking.setTextColor(Color.parseColor("#46494D")); + h.mTvRanking.setText(mData.get(i).getReportNum() + ""); + h.mTvName.setText(mData.get(i).getUserName()); + h.mTvNumber.setText(mData.get(i).getPm() + ""); + } else if (mData.get(i).getPm() == 3) { + h.mTvNumber.setBackgroundResource(R.drawable.ic_statistics_third); + h.mTvNumber.setTextColor(Color.parseColor("#FFFFFF")); + h.mTvName.setTextColor(Color.parseColor("#46494D")); + h.mTvRanking.setTextColor(Color.parseColor("#46494D")); + h.mTvRanking.setText(mData.get(i).getReportNum() + ""); + h.mTvName.setText(mData.get(i).getUserName()); + h.mTvNumber.setText(mData.get(i).getPm() + ""); + } else { + h.mTvNumber.setBackgroundResource(0); + h.mTvNumber.setTextColor(Color.parseColor("#46494D")); + h.mTvName.setTextColor(Color.parseColor("#46494D")); + h.mTvRanking.setTextColor(Color.parseColor("#46494D")); + h.mTvRanking.setText(mData.get(i).getReportNum() + ""); + h.mTvName.setText(mData.get(i).getUserName()); + h.mTvNumber.setText(mData.get(i).getPm() + ""); + } + } + } + +} diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/adapters/LabelAdapter.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/adapters/LabelAdapter.java index ea8e033..c835827 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/adapters/LabelAdapter.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/adapters/LabelAdapter.java @@ -1,7 +1,6 @@ package com.tengshisoft.commonmodule.adapters; import android.content.Context; -import android.graphics.Color; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -34,7 +33,7 @@ public class LabelAdapter extends BaseRecyclerAdapter { @Override public void bindHolder(LabelHolder h, int i) { LabelBean bean = mData.get(i); - h.mIvLabel.setBackgroundColor(Color.parseColor(bean.getColor())); + h.mIvLabel.setBackgroundColor(bean.getColor()); h.mTvHint.setText(bean.getHint()); } diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/adapters/PopulaceCountAdapter.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/adapters/PopulaceCountAdapter.java new file mode 100644 index 0000000..0002855 --- /dev/null +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/adapters/PopulaceCountAdapter.java @@ -0,0 +1,40 @@ +package com.tengshisoft.commonmodule.adapters; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.tengshisoft.commonmodule.R; +import com.tengshisoft.commonmodule.beans.AreaPopulaceBean; +import com.tengshisoft.commonmodule.holders.PopulaceItemHolder; +import com.tenlionsoft.baselib.core.widget.base.BaseRecyclerAdapter; + +import java.util.List; + +/** + * 作者: adam + * 日期: 2021/9/26 - 3:01 下午 + * 邮箱: itgaojian@163.com + * 描述: 人口 + */ +public class PopulaceCountAdapter extends BaseRecyclerAdapter { + + public PopulaceCountAdapter(Context ctx, List list) { + super(ctx, list); + } + + @Override + public PopulaceItemHolder createHolder(ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_populace_percent, parent, false); + return new PopulaceItemHolder(itemView); + } + + @Override + public void bindHolder(PopulaceItemHolder h, int i) { + AreaPopulaceBean.ItemBean bean = mData.get(i); + h.mTvName.setText(bean.getName()); + h.mTvCount.setText(bean.getCount()); + } + +} diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaGridCountBean.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaGridCountBean.java new file mode 100644 index 0000000..f102590 --- /dev/null +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaGridCountBean.java @@ -0,0 +1,35 @@ +package com.tengshisoft.commonmodule.beans; + +public class AreaGridCountBean { + + private DataBean data; + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public static class DataBean { + private int count; + private int total; + + public int getCount() { + return count; + } + + public void setCount(int count) { + this.count = count; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + } +} diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaGridLowCountBean.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaGridLowCountBean.java new file mode 100644 index 0000000..39a992d --- /dev/null +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaGridLowCountBean.java @@ -0,0 +1,55 @@ +package com.tengshisoft.commonmodule.beans; + +import java.util.List; + +public class AreaGridLowCountBean { + + private List data; + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + private String areaCode; + private String areaId; + private String areaName; + private int total; + + public String getAreaCode() { + return areaCode; + } + + public void setAreaCode(String areaCode) { + this.areaCode = areaCode; + } + + public String getAreaId() { + return areaId; + } + + public void setAreaId(String areaId) { + this.areaId = areaId; + } + + public String getAreaName() { + return areaName; + } + + public void setAreaName(String areaName) { + this.areaName = areaName; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + } +} diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaIncidentCategoryBean.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaIncidentCategoryBean.java new file mode 100644 index 0000000..ac30557 --- /dev/null +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaIncidentCategoryBean.java @@ -0,0 +1,68 @@ +package com.tengshisoft.commonmodule.beans; + +public class AreaIncidentCategoryBean { + + private int noOverNum; + private int overNum; + private int reportNum; + private String reportScale; + private String typeId; + private String typeName1; + private String typeName2; + + public int getNoOverNum() { + return noOverNum; + } + + public void setNoOverNum(int noOverNum) { + this.noOverNum = noOverNum; + } + + public int getOverNum() { + return overNum; + } + + public void setOverNum(int overNum) { + this.overNum = overNum; + } + + public int getReportNum() { + return reportNum; + } + + public void setReportNum(int reportNum) { + this.reportNum = reportNum; + } + + public String getReportScale() { + return reportScale; + } + + public void setReportScale(String reportScale) { + this.reportScale = reportScale; + } + + public String getTypeId() { + return typeId; + } + + public void setTypeId(String typeId) { + this.typeId = typeId; + } + + public String getTypeName1() { + return typeName1; + } + + public void setTypeName1(String typeName1) { + this.typeName1 = typeName1; + } + + public String getTypeName2() { + return typeName2; + } + + public void setTypeName2(String typeName2) { + this.typeName2 = typeName2; + } +} diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaIncidentHotBean.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaIncidentHotBean.java new file mode 100644 index 0000000..134a9c5 --- /dev/null +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaIncidentHotBean.java @@ -0,0 +1,68 @@ +package com.tengshisoft.commonmodule.beans; + +public class AreaIncidentHotBean { + + private int noOverNum; + private int overNum; + private int reportNum; + private String reportScale; + private String typeId; + private String typeName1; + private String typeName2; + + public int getNoOverNum() { + return noOverNum; + } + + public void setNoOverNum(int noOverNum) { + this.noOverNum = noOverNum; + } + + public int getOverNum() { + return overNum; + } + + public void setOverNum(int overNum) { + this.overNum = overNum; + } + + public int getReportNum() { + return reportNum; + } + + public void setReportNum(int reportNum) { + this.reportNum = reportNum; + } + + public String getReportScale() { + return reportScale; + } + + public void setReportScale(String reportScale) { + this.reportScale = reportScale; + } + + public String getTypeId() { + return typeId; + } + + public void setTypeId(String typeId) { + this.typeId = typeId; + } + + public String getTypeName1() { + return typeName1; + } + + public void setTypeName1(String typeName1) { + this.typeName1 = typeName1; + } + + public String getTypeName2() { + return typeName2; + } + + public void setTypeName2(String typeName2) { + this.typeName2 = typeName2; + } +} diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaIncidentPercentBean.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaIncidentPercentBean.java new file mode 100644 index 0000000..8299b1a --- /dev/null +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaIncidentPercentBean.java @@ -0,0 +1,81 @@ +package com.tengshisoft.commonmodule.beans; + +public class AreaIncidentPercentBean { + + + private DataBean data; + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public static class DataBean { + private String dataTime; + private String nowAreaName; + private int nowAreaReportNum; + private String nowAreaReportScale; + private String otherAreaName; + private int otherAreaReportNum; + private String otherAreaReportScale; + + public String getDataTime() { + return dataTime; + } + + public void setDataTime(String dataTime) { + this.dataTime = dataTime; + } + + public String getNowAreaName() { + return nowAreaName; + } + + public void setNowAreaName(String nowAreaName) { + this.nowAreaName = nowAreaName; + } + + public int getNowAreaReportNum() { + return nowAreaReportNum; + } + + public void setNowAreaReportNum(int nowAreaReportNum) { + this.nowAreaReportNum = nowAreaReportNum; + } + + public String getNowAreaReportScale() { + return nowAreaReportScale; + } + + public void setNowAreaReportScale(String nowAreaReportScale) { + this.nowAreaReportScale = nowAreaReportScale; + } + + public String getOtherAreaName() { + return otherAreaName; + } + + public void setOtherAreaName(String otherAreaName) { + this.otherAreaName = otherAreaName; + } + + public int getOtherAreaReportNum() { + return otherAreaReportNum; + } + + public void setOtherAreaReportNum(int otherAreaReportNum) { + this.otherAreaReportNum = otherAreaReportNum; + } + + public String getOtherAreaReportScale() { + return otherAreaReportScale; + } + + public void setOtherAreaReportScale(String otherAreaReportScale) { + this.otherAreaReportScale = otherAreaReportScale; + } + } +} diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaIncidentScaleBean.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaIncidentScaleBean.java index f6d057e..2bb1509 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaIncidentScaleBean.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaIncidentScaleBean.java @@ -47,7 +47,8 @@ public class AreaIncidentScaleBean { private int reportNum; private String reportScale; private String typeId; - private String typeName; + private String typeName1; + private String typeName2; public int getNoOverNum() { return noOverNum; @@ -89,12 +90,20 @@ public class AreaIncidentScaleBean { this.typeId = typeId; } - public String getTypeName() { - return typeName; + public String getTypeName1() { + return typeName1; } - public void setTypeName(String typeName) { - this.typeName = typeName; + public void setTypeName1(String typeName1) { + this.typeName1 = typeName1; + } + + public String getTypeName2() { + return typeName2; + } + + public void setTypeName2(String typeName2) { + this.typeName2 = typeName2; } } } diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaPopulaceBean.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaPopulaceBean.java new file mode 100644 index 0000000..fd6cc8d --- /dev/null +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/AreaPopulaceBean.java @@ -0,0 +1,268 @@ +package com.tengshisoft.commonmodule.beans; + +import java.util.List; + +public class AreaPopulaceBean { + + private int liuShiYiShang;//60以上 + private int dangYuan;//党员 + private int waiChuHuJi;//户籍外出 + private String zhanQuanShi;//占全市 + private String freshTime;//刷新时间 + private String shiJianLv;//事件率 + private String chuZhongYiShangZhanBi;//初中以上学历占比 + private String liuShiYiShangZhanBi;//60岁以上学历占比 + private String dangYuanZhanBi;//党员占比 + private int nanXing;//男性 + private int chuZhongYiShang;//初中以上人数 + private int nvXing;//女性 + private String hanZuZhanBi;//汉族占比 + private int zongShu;//总人口数 + private int changZhu;//常住人口 + private int hanZu;//汉族人口 + private String nanXingZhanBi;//男性占比 + private String nvXingZhanBi;//女性占比 + private int sheQuCun;//社区/村 + private boolean isGrid; + + private int huJi; + + + public boolean isGrid() { + return isGrid; + } + + public void setGrid(boolean grid) { + isGrid = grid; + } + + public int getHuJi() { + return huJi; + } + + public void setHuJi(int huJi) { + this.huJi = huJi; + } + + private List renKouShiJian; + + public int getLiuShiYiShang() { + return liuShiYiShang; + } + + public void setLiuShiYiShang(int liuShiYiShang) { + this.liuShiYiShang = liuShiYiShang; + } + + public int getDangYuan() { + return dangYuan; + } + + public void setDangYuan(int dangYuan) { + this.dangYuan = dangYuan; + } + + public int getWaiChuHuJi() { + return waiChuHuJi; + } + + public void setWaiChuHuJi(int waiChuHuJi) { + this.waiChuHuJi = waiChuHuJi; + } + + public String getZhanQuanShi() { + return zhanQuanShi; + } + + public void setZhanQuanShi(String zhanQuanShi) { + this.zhanQuanShi = zhanQuanShi; + } + + public String getFreshTime() { + return freshTime; + } + + public void setFreshTime(String freshTime) { + this.freshTime = freshTime; + } + + public String getShiJianLv() { + return shiJianLv; + } + + public void setShiJianLv(String shiJianLv) { + this.shiJianLv = shiJianLv; + } + + public String getChuZhongYiShangZhanBi() { + return chuZhongYiShangZhanBi; + } + + public void setChuZhongYiShangZhanBi(String chuZhongYiShangZhanBi) { + this.chuZhongYiShangZhanBi = chuZhongYiShangZhanBi; + } + + public String getLiuShiYiShangZhanBi() { + return liuShiYiShangZhanBi; + } + + public void setLiuShiYiShangZhanBi(String liuShiYiShangZhanBi) { + this.liuShiYiShangZhanBi = liuShiYiShangZhanBi; + } + + public String getDangYuanZhanBi() { + return dangYuanZhanBi; + } + + public void setDangYuanZhanBi(String dangYuanZhanBi) { + this.dangYuanZhanBi = dangYuanZhanBi; + } + + public int getNanXing() { + return nanXing; + } + + public void setNanXing(int nanXing) { + this.nanXing = nanXing; + } + + public int getChuZhongYiShang() { + return chuZhongYiShang; + } + + public void setChuZhongYiShang(int chuZhongYiShang) { + this.chuZhongYiShang = chuZhongYiShang; + } + + public int getNvXing() { + return nvXing; + } + + public void setNvXing(int nvXing) { + this.nvXing = nvXing; + } + + public String getHanZuZhanBi() { + return hanZuZhanBi; + } + + public void setHanZuZhanBi(String hanZuZhanBi) { + this.hanZuZhanBi = hanZuZhanBi; + } + + public int getZongShu() { + return zongShu; + } + + public void setZongShu(int zongShu) { + this.zongShu = zongShu; + } + + public int getChangZhu() { + return changZhu; + } + + public void setChangZhu(int changZhu) { + this.changZhu = changZhu; + } + + public int getHanZu() { + return hanZu; + } + + public void setHanZu(int hanZu) { + this.hanZu = hanZu; + } + + public String getNanXingZhanBi() { + return nanXingZhanBi; + } + + public void setNanXingZhanBi(String nanXingZhanBi) { + this.nanXingZhanBi = nanXingZhanBi; + } + + public String getNvXingZhanBi() { + return nvXingZhanBi; + } + + public void setNvXingZhanBi(String nvXingZhanBi) { + this.nvXingZhanBi = nvXingZhanBi; + } + + public int getSheQuCun() { + return sheQuCun; + } + + public void setSheQuCun(int sheQuCun) { + this.sheQuCun = sheQuCun; + } + + public List getRenKouShiJian() { + return renKouShiJian; + } + + public void setRenKouShiJian(List renKouShiJian) { + this.renKouShiJian = renKouShiJian; + } + + public static class RenKouShiJianBean { + private String areaCode; + private String areaName; + private int caseCount; + private int personCount; + + public String getAreaCode() { + return areaCode; + } + + public void setAreaCode(String areaCode) { + this.areaCode = areaCode; + } + + public String getAreaName() { + return areaName; + } + + public void setAreaName(String areaName) { + this.areaName = areaName; + } + + public int getCaseCount() { + return caseCount; + } + + public void setCaseCount(int caseCount) { + this.caseCount = caseCount; + } + + public int getPersonCount() { + return personCount; + } + + public void setPersonCount(int personCount) { + this.personCount = personCount; + } + } + + public static class ItemBean { + private String name; + private String count; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCount() { + return count; + } + + public void setCount(String count) { + this.count = count; + } + } +} diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/IncidentTop7Bean.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/IncidentTop7Bean.java new file mode 100644 index 0000000..56a27a8 --- /dev/null +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/IncidentTop7Bean.java @@ -0,0 +1,95 @@ +package com.tengshisoft.commonmodule.beans; + +public class IncidentTop7Bean { + + private String countDate; + private String countGridUserId; + private int noOverNum; + private int noSelfNum; + private int overNum; + private int pm; + private int reportNum; + private int selfNum; + private String userId; + private String userName; + + public String getCountDate() { + return countDate; + } + + public void setCountDate(String countDate) { + this.countDate = countDate; + } + + public String getCountGridUserId() { + return countGridUserId; + } + + public void setCountGridUserId(String countGridUserId) { + this.countGridUserId = countGridUserId; + } + + public int getNoOverNum() { + return noOverNum; + } + + public void setNoOverNum(int noOverNum) { + this.noOverNum = noOverNum; + } + + public int getNoSelfNum() { + return noSelfNum; + } + + public void setNoSelfNum(int noSelfNum) { + this.noSelfNum = noSelfNum; + } + + public int getOverNum() { + return overNum; + } + + public void setOverNum(int overNum) { + this.overNum = overNum; + } + + public int getPm() { + return pm; + } + + public void setPm(int pm) { + this.pm = pm; + } + + public int getReportNum() { + return reportNum; + } + + public void setReportNum(int reportNum) { + this.reportNum = reportNum; + } + + public int getSelfNum() { + return selfNum; + } + + public void setSelfNum(int selfNum) { + this.selfNum = selfNum; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } +} diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/LabelBean.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/LabelBean.java index 912c3e2..1d5713f 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/LabelBean.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/beans/LabelBean.java @@ -1,11 +1,20 @@ package com.tengshisoft.commonmodule.beans; public class LabelBean { - private String color; + private int color; private String hint; private String hintId; + private String reportScale; + public String getReportScale() { + return reportScale; + } + + public void setReportScale(String reportScale) { + this.reportScale = reportScale; + } + public String getHintId() { return hintId; } @@ -14,11 +23,11 @@ public class LabelBean { this.hintId = hintId; } - public String getColor() { + public int getColor() { return color; } - public void setColor(String color) { + public void setColor(int color) { this.color = color; } diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/GridLeaderStatisticsFragment.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/GridLeaderStatisticsFragment.java index 2db7a2c..6a76212 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/GridLeaderStatisticsFragment.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/GridLeaderStatisticsFragment.java @@ -1,14 +1,58 @@ package com.tengshisoft.commonmodule.fragments; +import android.app.ProgressDialog; +import android.graphics.Color; +import android.graphics.Typeface; +import android.text.SpannableString; +import android.text.style.ForegroundColorSpan; +import android.text.style.RelativeSizeSpan; +import android.text.style.StyleSpan; import android.view.View; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import com.alibaba.android.arouter.facade.annotation.Route; +import com.github.mikephil.charting.animation.Easing; +import com.github.mikephil.charting.charts.PieChart; +import com.github.mikephil.charting.data.PieData; +import com.github.mikephil.charting.data.PieDataSet; +import com.github.mikephil.charting.data.PieEntry; +import com.github.mikephil.charting.formatter.ValueFormatter; +import com.github.mikephil.charting.utils.MPPointF; import com.tengshisoft.commonmodule.R; +import com.tengshisoft.commonmodule.R2; +import com.tengshisoft.commonmodule.adapters.GridPersonCountAdapter; +import com.tengshisoft.commonmodule.adapters.IncidentStatisticsAdapter; +import com.tengshisoft.commonmodule.beans.AreaGridCountBean; +import com.tengshisoft.commonmodule.beans.AreaGridLowCountBean; +import com.tengshisoft.commonmodule.beans.AreaIncidentPercentBean; +import com.tengshisoft.commonmodule.beans.IncidentTop7Bean; +import com.tengshisoft.commonmodule.nets.CenterApis; import com.tenlionsoft.baselib.constant.PathConfig; +import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.widget.base.BaseFragment; +import com.tenlionsoft.baselib.core.widget.views.CircleChartView; +import com.tenlionsoft.baselib.core.widget.views.ConditionAllAreaPopup; +import com.tenlionsoft.baselib.utils.TimeUtils; +import com.tenlionsoft.baselib.utils.UIUtil; +import com.tenlionsoft.baselib.utils.UserLgUtils; +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; import butterknife.ButterKnife; import butterknife.Unbinder; +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.schedulers.Schedulers; /** * 作者: adam @@ -19,14 +63,338 @@ import butterknife.Unbinder; @Route(path = PathConfig.PATH_MODULE_COMMON_FRAGMENT_GRID_STATISTICS) public class GridLeaderStatisticsFragment extends BaseFragment { + @BindView(R2.id.tv_area) + TextView mTvArea; + @BindView(R2.id.ll_area) + LinearLayout mLlArea; + @BindView(R2.id.tv_current_time) + TextView mTvCurrentTime; + @BindView(R2.id.tv_grid_count) + TextView mTvGridCount; + @BindView(R2.id.tv_grid_percent) + TextView mTvGridPercent; + @BindView(R2.id.rlv_grid_count) + RecyclerView mRlvGridCount; + @BindView(R2.id.rlv_grid_incident) + RecyclerView mRlvGridIncident; + @BindView(R2.id.tv_percent_area) + TextView mTvPercentArea; + @BindView(R2.id.pc_community_percent) + PieChart mPieChart; + @BindView(R2.id.ccv_percent) + CircleChartView mCcvPercent; + @BindView(R2.id.tv_grid_hint) + TextView mTvGridCountHint; private Unbinder mBind; + private String mCurrentAreaCode; + private ProgressDialog mDialog; + private List mTop7BeanList; + private IncidentStatisticsAdapter mTop7Adapter; + private List mLowCountDatas; + private GridPersonCountAdapter mGridCountAdapter; @Override protected void setDataToView(View dataView) { mBind = ButterKnife.bind(this, dataView); - setStateView(STATE_LOAD); + setStateView(STATE_SUCCESS); + mSrlView.setEnableLoadMore(false); + mSrlView.setEnableRefresh(false); + initViews(); + getData(); } + /** + * 获取数据 + */ + private void getData() { + + RetrofitManager.getInstance() + .create(CenterApis.class) + .getAreaReportTop7(mCurrentAreaCode, UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + + } + + @Override + public void onNext(@NonNull List areaIncidentCategoryBeans) { + if (mDialog != null && mDialog.isShowing()) { + mDialog.dismiss(); + } + areaIncidentCategoryBeans.add(0, new IncidentTop7Bean()); + mTop7BeanList = areaIncidentCategoryBeans; + mTop7Adapter.setData(mTop7BeanList); + } + + @Override + public void onError(@NonNull Throwable e) { + if (mDialog != null && mDialog.isShowing()) { + mDialog.dismiss(); + } + } + + @Override + public void onComplete() { + + } + }); + RetrofitManager.getInstance() + .create(CenterApis.class) + .getAreaGridPercent(mCurrentAreaCode, UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + + } + + @Override + public void onNext(@NonNull AreaIncidentPercentBean areaIncidentCategoryBeans) { + if (mDialog != null && mDialog.isShowing()) { + mDialog.dismiss(); + } + setAreaIncidentPercent(areaIncidentCategoryBeans); + } + + @Override + public void onError(@NonNull Throwable e) { + if (mDialog != null && mDialog.isShowing()) { + mDialog.dismiss(); + } + } + + @Override + public void onComplete() { + + } + }); + + //获取辖区内网格员 + RetrofitManager.getInstance() + .create(CenterApis.class) + .getAreaGrid(mCurrentAreaCode, UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + + } + + @Override + public void onNext(@NonNull AreaGridCountBean areaPopulaceBean) { + setGridCount(areaPopulaceBean); + } + + @Override + public void onError(@NonNull Throwable e) { + + } + + @Override + public void onComplete() { + + } + }); + //获取辖区下级网格员 + RetrofitManager.getInstance() + .create(CenterApis.class) + .getAreaLowerGrid(mCurrentAreaCode, UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + + } + + @Override + public void onNext(@NonNull AreaGridLowCountBean areaPopulaceBeans) { + if (areaPopulaceBeans.getData() != null && areaPopulaceBeans.getData().size() > 0) { + mRlvGridCount.setVisibility(View.VISIBLE); + mTvGridCountHint.setVisibility(View.GONE); + mLowCountDatas = areaPopulaceBeans.getData(); + mGridCountAdapter.setData(mLowCountDatas); + } else { + mRlvGridCount.setVisibility(View.GONE); + mTvGridCountHint.setVisibility(View.VISIBLE); + } + } + + @Override + public void onError(@NonNull Throwable e) { + + } + + @Override + public void onComplete() { + + } + }); + + } + + /** + * 设置辖区网格员数量 + * + * @param bean + */ + private void setGridCount(AreaGridCountBean bean) { + // 将其中一个操作数强制转换为double类型,使得除法运算得到浮点数结果 + if (bean.getData().getTotal() != 0) { + double percent = ((double) bean.getData().getCount() / bean.getData().getTotal()) * 100; + DecimalFormat format = new DecimalFormat("#0.00"); + String percentStr = format.format(percent); + //计算占用比例 + mCcvPercent.setData(Double.parseDouble(percentStr)); + String countStr = bean.getData().getCount() + " 人"; + SpannableString formatCountStr = generateGridCount(countStr); + mTvGridCount.setText(formatCountStr); + String percentCount = percentStr + " %"; + SpannableString formatPercent = generateGridPercent(percentCount); + mTvGridPercent.setText(formatPercent); + } + + } + + /** + * 初始化 + */ + private void initViews() { + mTop7BeanList = new ArrayList<>(); + mTvCurrentTime.setText("数据更新时间:" + TimeUtils.getCurrentTimeHHMM()); + mRlvGridIncident.setLayoutManager(new LinearLayoutManager(mActivity)); + mTop7Adapter = new IncidentStatisticsAdapter(mActivity, mTop7BeanList); + mRlvGridIncident.setAdapter(mTop7Adapter); + + mLowCountDatas = new ArrayList<>(); + mGridCountAdapter = new GridPersonCountAdapter(mActivity, mLowCountDatas); + mRlvGridCount.setLayoutManager(new GridLayoutManager(mActivity, 1, GridLayoutManager.HORIZONTAL, false)); + mRlvGridCount.setAdapter(mGridCountAdapter); + + mCurrentAreaCode = UserLgUtils.getUserAreaCode(); + initPieChart(); + mLlArea.setOnClickListener(v -> onShowArea()); + mTvArea.setText(UserLgUtils.getUserFullAreaName()); + mDialog = UIUtil.initDialog(mActivity, "加载中..."); + mDialog.show(); + } + + /** + * 初始化占比 + */ + private void initPieChart() { + mPieChart.setUsePercentValues(true); + mPieChart.getDescription().setEnabled(false); + mPieChart.setExtraOffsets(5, 10, 5, 5); + mPieChart.setDragDecelerationFrictionCoef(0.95f); + mPieChart.setDrawHoleEnabled(false);//是否绘制数据体内的label + mPieChart.setHoleColor(Color.YELLOW); + mPieChart.setDrawEntryLabels(true); + mPieChart.setTransparentCircleColor(Color.WHITE); + mPieChart.setTransparentCircleAlpha(110); + mPieChart.setDrawCenterText(true); + mPieChart.setRotationAngle(0); + mPieChart.setRotationEnabled(true); + mPieChart.setHighlightPerTapEnabled(true); + mPieChart.animateY(1400, Easing.EaseInOutQuad); + mPieChart.setEntryLabelColor(Color.YELLOW); + mPieChart.setEntryLabelTextSize(12f); + mPieChart.getLegend().setEnabled(false); + mPieChart.setNoDataText("当前区域无事件数据"); + } + + private void onShowArea() { + if (UserLgUtils.getUserAreaLevel() < 4 && UserLgUtils.getUserAreaLevel() != -1) { + ConditionAllAreaPopup areaPopup = new ConditionAllAreaPopup(mActivity, + UserLgUtils.getUserFullAreaName(), + UserLgUtils.getUserAreaLevel()); + areaPopup.setOnListPopupItemClickListener((areaNames, areaCode) -> { + mTvArea.setText(areaNames); + //刷新数据 + mCurrentAreaCode = areaCode; + if (mDialog != null) { + mDialog.show(); + } + getData(); + areaPopup.dismiss(); + }); + areaPopup.setOffsetY(10); + areaPopup.showPopupWindow(mTvArea); + } + + } + + /** + * 显示网格员上报事件占比 + */ + private void setAreaIncidentPercent(AreaIncidentPercentBean bean) { + ArrayList entries = new ArrayList<>(); + + mPieChart.clear(); + if (bean.getData() == null) return; + if (bean.getData().getNowAreaReportNum() == 0 && bean.getData().getOtherAreaReportNum() == 0) return; + mTvPercentArea.setText(bean.getData().getNowAreaName()); + + ArrayList colors = new ArrayList<>(); + //当前区域上报 + float currentNum = Float.parseFloat(bean.getData().getNowAreaReportScale()); + entries.add(new PieEntry(currentNum, "共计" + bean.getData().getNowAreaReportNum() + "件", "")); + colors.add(Color.parseColor("#6685EF")); + + float otherNum = Float.parseFloat(bean.getData().getOtherAreaReportScale()); + entries.add(new PieEntry(otherNum, "共计" + bean.getData().getOtherAreaReportNum() + "件", "")); + colors.add(Color.parseColor("#EF7D62")); + PieDataSet dataSet = new PieDataSet(entries, ""); + PieData data = new PieData(dataSet); + //其他区域上报 + dataSet.setDrawIcons(false); + dataSet.setSliceSpace(0f); + dataSet.setIconsOffset(new MPPointF(0, 20)); + dataSet.setDrawValues(true);//绘制百分比 + dataSet.setSelectionShift(5f); + dataSet.setYValuePosition(PieDataSet.ValuePosition.INSIDE_SLICE);//百分比在外 + dataSet.setColors(colors); + dataSet.setValueLinePart1Length(0.3f); + dataSet.setValueLinePart2Length(0.4f); + dataSet.setValueLinePart1OffsetPercentage(100.0f); + dataSet.setValueLineColor(Color.parseColor("#FF6191F7")); + + data.setValueFormatter(new ValueFormatter() { + @Override + public String getFormattedValue(float value) { + return "占比" + value + "%"; + } + }); + data.setDrawValues(true); + data.setValueTextSize(11f); + data.setValueTextColor(Color.YELLOW); + mPieChart.setData(data); + mPieChart.highlightValues(null); + mPieChart.invalidate(); + } + + private SpannableString generateGridCount(String content) { + SpannableString s = new SpannableString(content); + s.setSpan(new RelativeSizeSpan(1.2f), 0, content.indexOf(" 人"), 0); + s.setSpan(new RelativeSizeSpan(0.6f), content.indexOf(" 人"), content.length(), 0); + s.setSpan(new ForegroundColorSpan(Color.parseColor("#9C8EC6")), 0, content.indexOf(" 人"), 0); + s.setSpan(new StyleSpan(Typeface.BOLD), 0, content.indexOf(" 人"), 0); + return s; + } + + private SpannableString generateGridPercent(String content) { + SpannableString s = new SpannableString(content); + s.setSpan(new RelativeSizeSpan(1.2f), 0, content.indexOf(" %"), 0); + s.setSpan(new RelativeSizeSpan(0.6f), content.indexOf(" %"), content.length(), 0); + s.setSpan(new ForegroundColorSpan(Color.parseColor("#2F5CFB")), 0, content.indexOf(" %"), 0); + s.setSpan(new StyleSpan(Typeface.BOLD), 0, content.indexOf(" %"), 0); + return s; + } @Override protected void refreshView() { diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/IncidentLeaderStatisticsFragment.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/IncidentLeaderStatisticsFragment.java index 87d42c1..9bef3ba 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/IncidentLeaderStatisticsFragment.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/IncidentLeaderStatisticsFragment.java @@ -1,7 +1,15 @@ package com.tengshisoft.commonmodule.fragments; +import android.app.ProgressDialog; import android.graphics.Color; +import android.graphics.Typeface; +import android.text.SpannableString; +import android.text.style.ForegroundColorSpan; +import android.text.style.RelativeSizeSpan; +import android.text.style.StyleSpan; +import android.text.style.UnderlineSpan; import android.view.View; +import android.widget.LinearLayout; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; @@ -13,26 +21,33 @@ import com.github.mikephil.charting.charts.HorizontalBarChart; import com.github.mikephil.charting.charts.PieChart; 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.PieData; import com.github.mikephil.charting.data.PieDataSet; import com.github.mikephil.charting.data.PieEntry; import com.github.mikephil.charting.formatter.DefaultValueFormatter; import com.github.mikephil.charting.formatter.LargeValueFormatter; -import com.github.mikephil.charting.formatter.PercentFormatter; import com.github.mikephil.charting.utils.MPPointF; -import com.hjq.toast.ToastUtils; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; import com.tengshisoft.commonmodule.adapters.LabelAdapter; +import com.tengshisoft.commonmodule.beans.AreaIncidentCategoryBean; +import com.tengshisoft.commonmodule.beans.AreaIncidentHotBean; import com.tengshisoft.commonmodule.beans.AreaIncidentScaleBean; -import com.tengshisoft.commonmodule.beans.CaseTypeBean; import com.tengshisoft.commonmodule.beans.LabelBean; import com.tengshisoft.commonmodule.nets.CenterApis; -import com.tengshisoft.commonmodule.nets.GridApis; +import com.tengshisoft.commonmodule.utils.PiePercentFormater; +import com.tengshisoft.commonmodule.views.MyIncidentMarkerView; import com.tenlionsoft.baselib.constant.PathConfig; import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; +import com.tenlionsoft.baselib.core.retrofit_net.conver.RxTransformer; import com.tenlionsoft.baselib.core.widget.base.BaseFragment; +import com.tenlionsoft.baselib.core.widget.views.ConditionAllAreaPopup; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.LogUtils; +import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; import java.util.ArrayList; @@ -43,11 +58,10 @@ import java.util.Random; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.Unbinder; -import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.core.Observable; import io.reactivex.rxjava3.core.Observer; import io.reactivex.rxjava3.disposables.Disposable; -import io.reactivex.rxjava3.schedulers.Schedulers; /** * 作者: adam @@ -57,6 +71,10 @@ import io.reactivex.rxjava3.schedulers.Schedulers; */ @Route(path = PathConfig.PATH_MODULE_COMMON_FRAGMENT_INCIDENT_STATISTICS) public class IncidentLeaderStatisticsFragment extends BaseFragment { + @BindView(R2.id.tv_area) + TextView mTvArea; + @BindView(R2.id.ll_area) + LinearLayout mLlArea; @BindView(R2.id.rlv_label) RecyclerView mRlvLabel; @BindView(R2.id.pie_chart) @@ -67,64 +85,92 @@ public class IncidentLeaderStatisticsFragment extends BaseFragment { TextView mTvDoIncident; @BindView(R2.id.hbc_category_chart) HorizontalBarChart mHbcChart; + @BindView(R2.id.tv_hot_type_1) + TextView mTvHotType1; + @BindView(R2.id.tv_hot_type_2) + TextView mTvHotType2; + @BindView(R2.id.tv_hot_detail) + TextView mTvHotDetail; private Unbinder mBind; private LabelAdapter mLabelAdapter; private List mLabelBeanList; - private List labelColors = Arrays.asList(Color.parseColor("#FF6191F7"), - Color.parseColor("#FF60D8A8"), - Color.parseColor("#FFFFA800"), - Color.parseColor("#FF154CFF"), - Color.parseColor("#FFFFDA2D"), - Color.parseColor("#FF60D8A8")); private List labelHint = null; + private String mCurrentAreaCode; + private ProgressDialog mDialog; @Override protected void setDataToView(View dataView) { mBind = ButterKnife.bind(this, dataView); setStateView(STATE_SUCCESS); + mSrlView.setEnableLoadMore(false); + mSrlView.setEnableRefresh(false); initViews(); - getTypeList(); getData(); } /** - * 获取事件类型 + * 获取数据 */ - private void getTypeList() { - RetrofitManager.getInstance() - .create(GridApis.class) - .getCaseTypeListAll(UserLgUtils.getToken()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Observer>() { + private void getData() { + + + //获取事件分类占比 + Observable areaTypeScale = RetrofitManager.getInstance() + .create(CenterApis.class) + .getAreaTypeScale(mCurrentAreaCode, UserLgUtils.getToken()); + //热点事件 + Observable areaHot = RetrofitManager.getInstance() + .create(CenterApis.class) + .getAreaHot(mCurrentAreaCode, UserLgUtils.getToken()); + //事件分类 + Observable> areaIncidentCategory = RetrofitManager.getInstance() + .create(CenterApis.class) + .getAreaIncidentCategory(mCurrentAreaCode, UserLgUtils.getToken()); + Observable.mergeDelayError(areaTypeScale, areaHot, areaIncidentCategory) + .compose(RxTransformer.getTransformer()) + .subscribe(new Observer() { @Override public void onSubscribe(@NonNull Disposable d) { } @Override - public void onNext(@NonNull List componentTypeBeans) { - if (componentTypeBeans != null && componentTypeBeans.size() > 0) { - for (int i = 0; i < componentTypeBeans.size(); i++) { - int col = Color.parseColor("#FF154CFF"); - if (labelColors.size() < componentTypeBeans.size()) { - col = labelColors.get(i); - } else { - col = getRandomColor(); + public void onNext(@NonNull Object o) { + if (o instanceof AreaIncidentScaleBean) { + AreaIncidentScaleBean b = (AreaIncidentScaleBean) o; + if (b.getReportTypeList() != null && b.getReportTypeList().size() > 0) { + mLabelBeanList.clear(); + mLabelAdapter.setData(mLabelBeanList); + for (int i = 0; i < b.getReportTypeList().size(); i++) { + int col = getRandomColor(); + LabelBean bean = new LabelBean(); + bean.setHint(b.getReportTypeList().get(i).getTypeName1()); + bean.setColor(col); + bean.setHintId(b.getReportTypeList().get(i).getTypeId()); + bean.setReportScale(b.getReportTypeList().get(i).getReportScale()); + mLabelBeanList.add(bean); } + mLabelAdapter.setData(mLabelBeanList); + setInfoToView(b, mLabelBeanList); } - } else { - ToastUtils.show("暂无数据"); - setStateView(STATE_EMPTY); - mSrlView.setEnableLoadMore(false); + } else if (o instanceof AreaIncidentHotBean) { + AreaIncidentHotBean b = (AreaIncidentHotBean) o; + setHotDataToView(b); + } else if (o instanceof List) { + List b = (List) o; + setIncidentCategory(b); + } + if (mDialog != null && mDialog.isShowing()) { + mDialog.dismiss(); } } @Override public void onError(@NonNull Throwable e) { + if (mDialog != null && mDialog.isShowing()) { + mDialog.dismiss(); + } ExceptionHandler.handleException(e); - setStateView(STATE_ERROR); - mSrlView.setEnableLoadMore(false); } @Override @@ -135,68 +181,63 @@ public class IncidentLeaderStatisticsFragment extends BaseFragment { } /** - * 获取数据 + * 显示热门事件数据 */ - private void getData() { -// Observable areaTypeScale = - RetrofitManager.getInstance() - .create(CenterApis.class) - .getAreaTypeScale(UserLgUtils.getUserAreaCode(), UserLgUtils.getToken()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Observer() { - @Override - public void onSubscribe(@NonNull Disposable d) { + private void setHotDataToView(AreaIncidentHotBean hotBean) { + mTvHotType1.setText(hotBean.getTypeName1()); + mTvHotType2.setText(hotBean.getTypeName2()); + mTvHotDetail.setText(generateHotTxt("共计上报" + hotBean.getReportNum() + "件\n占比" + hotBean.getReportScale() + "%")); + } - } + private SpannableString generateHotTxt(String content) { + SpannableString s = new SpannableString(content); + s.setSpan(new RelativeSizeSpan(1.4f), content.lastIndexOf("报") + 1, content.indexOf("件"), 0); + s.setSpan(new UnderlineSpan(), content.lastIndexOf("报"), content.indexOf("件"), 0); - @Override - public void onNext(@NonNull AreaIncidentScaleBean b) { - setInfoToView(b); - } - - @Override - public void onError(@NonNull Throwable e) { - - } - - @Override - public void onComplete() { - - } - }) - ;//事件分类占比 + s.setSpan(new RelativeSizeSpan(1.4f), content.indexOf("比") + 1, content.length() - 1, 0); + s.setSpan(new UnderlineSpan(), content.lastIndexOf("比") + 1, content.length() - 1, 0); + s.setSpan(new StyleSpan(Typeface.BOLD), content.lastIndexOf("报") + 1, content.indexOf("件"), 0); + s.setSpan(new StyleSpan(Typeface.BOLD), content.lastIndexOf("比") + 1, content.length() - 1, 0); + return s; } /** * 显示事件分类占比 */ - private void setInfoToView(AreaIncidentScaleBean b) { + private void setInfoToView(AreaIncidentScaleBean b, List list) { + //设置文字数据 + + mTvDoIncident.setText(generateDisTxt("上报事件已处理\n" + b.getOverNum() + "件")); + mTvUndoIncident.setText(generateDisTxt("上报事件未处理\n" + b.getNoOverNum() + "件")); + ArrayList entries = new ArrayList<>(); - if (b.getReportTypeList() == null || b.getReportTypeList().size() == 0) return; + if (list == null || list.size() == 0) return; + ArrayList colors = new ArrayList<>(); for (int i = 0; i < b.getReportTypeList().size(); i++) { - float num = Float.parseFloat(b.getReportTypeList().get(i).getReportScale()); + float num = Float.parseFloat(list.get(i).getReportScale()); entries.add(new PieEntry(num, "", "")); + colors.add(list.get(i).getColor()); } PieDataSet dataSet = new PieDataSet(entries, ""); dataSet.setDrawIcons(false); dataSet.setSliceSpace(0f); - dataSet.setIconsOffset(new MPPointF(0, 40)); + dataSet.setIconsOffset(new MPPointF(0, 20)); + dataSet.setDrawValues(true);//绘制百分比 dataSet.setSelectionShift(5f); - ArrayList colors = new ArrayList<>(); - colors.add(Color.rgb(3, 197, 145)); - colors.add(Color.rgb(37, 121, 251)); - colors.add(Color.rgb(255, 154, 5)); + dataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);//百分比在外 dataSet.setColors(colors); + dataSet.setValueLinePart1Length(0.2f); + dataSet.setValueLinePart2Length(0.5f); + dataSet.setValueLinePart1OffsetPercentage(80.0f); + dataSet.setValueLineColor(Color.parseColor("#FF6191F7")); PieData data = new PieData(dataSet); - data.setValueFormatter(new PercentFormatter()); - data.setDrawValues(false); + data.setValueFormatter(new PiePercentFormater()); + data.setDrawValues(true); data.setValueTextSize(11f); - data.setValueTextColor(Color.WHITE); - float total = 0; -//TODO mPieChart.setCenterText(generateCenterSpannableText(total)); + data.setValueTextColors(colors); + mPieChart.setCenterText(generateCenterSpannableText(b.getReportNum())); mPieChart.setData(data); mPieChart.highlightValues(null); mPieChart.invalidate(); @@ -206,17 +247,38 @@ public class IncidentLeaderStatisticsFragment extends BaseFragment { * 初始化视图 */ private void initViews() { -// mLabelBeanList = new ArrayList<>(); -// for (int i = 0; i < labelColors.size(); i++) { -// LabelBean b = new LabelBean(); -// b.setColor(labelColors.get(i)); -// b.setHint(labelHint.get(i)); -// mLabelBeanList.add(b); -// } -// mLabelAdapter = new LabelAdapter(mActivity, mLabelBeanList); -// mRlvLabel.setLayoutManager(new GridLayoutManager(mActivity, 3)); -// mRlvLabel.setAdapter(mLabelAdapter); -// initPieChart(); + mLabelBeanList = new ArrayList<>(); + mLabelAdapter = new LabelAdapter(mActivity, mLabelBeanList); + mRlvLabel.setLayoutManager(new GridLayoutManager(mActivity, 3)); + mRlvLabel.setAdapter(mLabelAdapter); + mCurrentAreaCode = UserLgUtils.getUserAreaCode(); + initPieChart(); + initHoChart(); + mLlArea.setOnClickListener(v -> onShowArea()); + mTvArea.setText(UserLgUtils.getUserFullAreaName()); + mDialog = UIUtil.initDialog(mActivity, "加载中..."); + mDialog.show(); + } + + private void onShowArea() { + if (UserLgUtils.getUserAreaLevel() < 4 && UserLgUtils.getUserAreaLevel() != -1) { + ConditionAllAreaPopup areaPopup = new ConditionAllAreaPopup(mActivity, + UserLgUtils.getUserFullAreaName(), + UserLgUtils.getUserAreaLevel()); + areaPopup.setOnListPopupItemClickListener((areaNames, areaCode) -> { + mTvArea.setText(areaNames); + //刷新数据 + mCurrentAreaCode = areaCode; + if (mDialog != null) { + mDialog.show(); + } + getData(); + areaPopup.dismiss(); + }); + areaPopup.setOffsetY(10); + areaPopup.showPopupWindow(mTvArea); + } + } /** @@ -227,19 +289,13 @@ public class IncidentLeaderStatisticsFragment extends BaseFragment { mPieChart.getDescription().setEnabled(false); mPieChart.setExtraOffsets(5, 10, 5, 5); mPieChart.setDragDecelerationFrictionCoef(0.95f); - - mPieChart.setDrawHoleEnabled(true); mPieChart.setHoleColor(Color.WHITE); - mPieChart.setTransparentCircleColor(Color.WHITE); mPieChart.setTransparentCircleAlpha(110); - - mPieChart.setHoleRadius(90f);//饼状图中间圆的半径大小 - mPieChart.setTransparentCircleRadius(120f);//圆环的半径 - + mPieChart.setHoleRadius(80f);//饼状图中间圆的半径大小 + mPieChart.setTransparentCircleRadius(80f);//圆环的半径 mPieChart.setDrawCenterText(true); - mPieChart.setRotationAngle(0); mPieChart.setRotationEnabled(true); mPieChart.setHighlightPerTapEnabled(true); @@ -251,33 +307,55 @@ public class IncidentLeaderStatisticsFragment extends BaseFragment { mPieChart.setNoDataText("当前区域无事件数据"); } + /** + * 构建事件分类占比图中心展示的文字 + */ + private SpannableString generateCenterSpannableText(int total) { + String content = "上报事件总数\n" + total + "件"; + SpannableString s = new SpannableString(content); + s.setSpan(new RelativeSizeSpan(0.8f), 0, content.indexOf("数") + 1, 0); + s.setSpan(new RelativeSizeSpan(0.8f), content.lastIndexOf("件"), content.length(), 0); + s.setSpan(new RelativeSizeSpan(1.8f), content.indexOf("数") + 1, content.length() - 1, 0); + s.setSpan(new ForegroundColorSpan(Color.parseColor("#2F5CFB")), content.indexOf("数") + 1, content.length(), 0); + s.setSpan(new StyleSpan(Typeface.BOLD), content.indexOf("数") + 1, content.length(), 0); + return s; + } + + private SpannableString generateDisTxt(String content) { + SpannableString s = new SpannableString(content); + s.setSpan(new RelativeSizeSpan(0.6f), content.lastIndexOf("件"), content.length(), 0); + s.setSpan(new RelativeSizeSpan(1.4f), content.indexOf("理") + 1, content.length() - 1, 0); + s.setSpan(new ForegroundColorSpan(Color.parseColor("#2F5CFB")), content.indexOf("理") + 1, content.length(), 0); + s.setSpan(new StyleSpan(Typeface.BOLD), content.indexOf("理") + 1, content.length(), 0); + return s; + } + /** * 初始化 */ private void initHoChart() { mHbcChart.getDescription().setEnabled(false); - mHbcChart.getLegend().setEnabled(false); mHbcChart.setExtraOffsets(0, 10, 10, 10); mHbcChart.setNoDataText("当前区域无数据"); mHbcChart.setScaleXEnabled(true); mHbcChart.setScaleYEnabled(false); mHbcChart.setDrawGridBackground(false);//不绘制网格 - setAxis(); + mHbcChart.getLegend().setEnabled(false); } - private void setAxis() { + private void setAxis(List datas) { XAxis xAxis = mHbcChart.getXAxis(); xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); xAxis.setDrawGridLines(false); xAxis.setTextSize(12f); - xAxis.setLabelCount(6); + xAxis.setLabelCount(datas.size()); + xAxis.setDrawAxisLine(false); xAxis.setGranularity(1f);//防止放大图后,标签错乱 - final String label[] = {"市容环境", "宣传广告", "施工管理", "街面秩序", "突发事件", "其他事件"}; xAxis.setValueFormatter(new LargeValueFormatter() { @Override public String getFormattedValue(float value) { try { - return label[(int) value]; + return datas.get((int) value).getTypeName1(); } catch (Exception e) { return ""; } @@ -285,18 +363,76 @@ public class IncidentLeaderStatisticsFragment extends BaseFragment { }); YAxis axisRight = mHbcChart.getAxisRight(); axisRight.setAxisMinimum(0f); - axisRight.setDrawGridLines(true);//绘制网格 - axisRight.enableGridDashedLine(5f, 20f, 0f); - axisRight.setAxisMaximum(100f); + axisRight.setDrawGridLines(false);//绘制网格 + axisRight.enableGridDashedLine(5f, 10f, 0f); + axisRight.setDrawAxisLine(false); + axisRight.setAxisMaximum(50f); axisRight.setTextSize(12f); axisRight.setValueFormatter(new DefaultValueFormatter(0));//显示整数 //不显示顶部的轴 YAxis axisLeft = mHbcChart.getAxisLeft(); axisLeft.setAxisMinimum(0f); - axisLeft.setAxisMaximum(100f); + axisLeft.setAxisMaximum(50f); axisLeft.setEnabled(false); } + /** + * 显示事件分类 + */ + private void setIncidentCategory(List datas) { + if (datas != null && datas.size() > 0) { + setAxis(datas); + float maxiNum = getMaxNum(datas); + LogUtils.e("最大值=" + maxiNum); + YAxis axisRight = mHbcChart.getAxisRight(); + axisRight.setEnabled(false); + axisRight.setAxisMinimum(0f); + axisRight.setAxisMaximum(maxiNum); + axisRight.setValueFormatter(new DefaultValueFormatter(0));//显示整数 + YAxis axisLeft = mHbcChart.getAxisLeft(); + axisLeft.setAxisMinimum(0f); + axisLeft.setAxisMaximum(maxiNum); + List entryList = new ArrayList<>(); + for (int i = 0; i < datas.size(); i++) { + entryList.add(new BarEntry(i, new float[]{datas.get(i).getOverNum(), datas.get(i).getNoOverNum()})); + } + BarDataSet barDataSet = new BarDataSet(entryList, ""); + barDataSet.setColors(Color.rgb(47, 92, 251), + Color.rgb(255, 168, 0)); + barDataSet.setDrawValues(false); +// barDataSet.setValueTextColor(Color.WHITE); +// barDataSet.setValueFormatter(new DefaultValueFormatter(0));//柱子上面的数 +// barDataSet.setValueTextSize(6f); + BarData data = new BarData(barDataSet); + data.setBarWidth(0.4f);//设置柱子的宽度 + mHbcChart.setData(data); + MyIncidentMarkerView mv = new MyIncidentMarkerView(mActivity); + mv.setChartView(mHbcChart); // For bounds control + mHbcChart.setMarker(mv); // Set the marker to the chart + + } else { + mHbcChart.clear(); + mHbcChart.setNoDataText("当前区域内无数据"); + } + mHbcChart.invalidate(); + } + + + private float getMaxNum(List datas) { + float max = datas.get(0).getNoOverNum() + datas.get(0).getOverNum(); + for (int i = 0; i < datas.size(); i++) { + if (max < (datas.get(i).getOverNum() + datas.get(i).getNoOverNum())) { + max = datas.get(i).getOverNum(); + } + } + if (max > 99) { + max += 100; + } else { + max += 10; + } + return max; + } + /** * 获取随机颜色值 */ diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/IncidentNoFileListFragment.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/IncidentNoFileListFragment.java index e180149..d07ce7f 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/IncidentNoFileListFragment.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/IncidentNoFileListFragment.java @@ -12,7 +12,7 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.alibaba.android.arouter.facade.annotation.Route; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; import com.tengshisoft.commonmodule.activitys.cases.IncidentArchiveListActivity; @@ -26,6 +26,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.conver.RxTransformer; import com.tenlionsoft.baselib.core.widget.base.BaseFragment; import com.tenlionsoft.baselib.core.widget.views.ItemSplitDivider; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UserLgUtils; import java.util.ArrayList; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/IncidentYetFileListFragment.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/IncidentYetFileListFragment.java index 3b4b4f6..232e7aa 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/IncidentYetFileListFragment.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/IncidentYetFileListFragment.java @@ -13,7 +13,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; import com.tengshisoft.commonmodule.activitys.cases.IncidentDetailActivity; @@ -26,6 +26,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.conver.RxTransformer; import com.tenlionsoft.baselib.core.widget.base.BaseFragment; import com.tenlionsoft.baselib.core.widget.views.ItemSplitDivider; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UserLgUtils; import java.util.ArrayList; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/KnowLedgeDeptListFragment.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/KnowLedgeDeptListFragment.java index 77063bb..3750568 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/KnowLedgeDeptListFragment.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/KnowLedgeDeptListFragment.java @@ -11,7 +11,7 @@ import android.widget.ProgressBar; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.google.gson.Gson; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; @@ -28,6 +28,7 @@ import com.tenlionsoft.baselib.core.widget.base.BaseFragment; import com.tenlionsoft.baselib.core.widget.views.CenterBaseInputView; import com.tenlionsoft.baselib.core.widget.views.TypeFaceTextView; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/KnowLedgeListByDeptFragment.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/KnowLedgeListByDeptFragment.java index da15a19..9f9d67e 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/KnowLedgeListByDeptFragment.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/KnowLedgeListByDeptFragment.java @@ -9,7 +9,7 @@ import android.widget.ProgressBar; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.scwang.smart.refresh.layout.SmartRefreshLayout; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; @@ -24,6 +24,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.widget.base.BaseFragment; import com.tenlionsoft.baselib.core.widget.views.TypeFaceTextView; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/KnowLedgeListFragment.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/KnowLedgeListFragment.java index ed11606..40cf053 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/KnowLedgeListFragment.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/KnowLedgeListFragment.java @@ -6,7 +6,7 @@ import android.view.View; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.commonmodule.R; import com.tengshisoft.commonmodule.R2; import com.tengshisoft.commonmodule.adapters.KnowLedgeListAdapter; @@ -17,6 +17,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.widget.base.BaseFragment; import com.tenlionsoft.baselib.core.widget.views.ItemSplitDivider; import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UserLgUtils; import java.util.ArrayList; diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/PopulaceLeaderStatisticsFragment.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/PopulaceLeaderStatisticsFragment.java index 3fbc3db..82b31f6 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/PopulaceLeaderStatisticsFragment.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/fragments/PopulaceLeaderStatisticsFragment.java @@ -1,14 +1,52 @@ package com.tengshisoft.commonmodule.fragments; +import android.app.ProgressDialog; +import android.graphics.Color; import android.view.View; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import com.alibaba.android.arouter.facade.annotation.Route; +import com.github.mikephil.charting.charts.HorizontalBarChart; +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.formatter.DefaultValueFormatter; +import com.github.mikephil.charting.formatter.LargeValueFormatter; import com.tengshisoft.commonmodule.R; +import com.tengshisoft.commonmodule.R2; +import com.tengshisoft.commonmodule.adapters.PopulaceCountAdapter; +import com.tengshisoft.commonmodule.beans.AreaPopulaceBean; +import com.tengshisoft.commonmodule.nets.CenterApis; +import com.tengshisoft.commonmodule.views.MyMarkerView; import com.tenlionsoft.baselib.constant.PathConfig; +import com.tenlionsoft.baselib.core.beans.BallTypeBean; +import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; import com.tenlionsoft.baselib.core.widget.base.BaseFragment; +import com.tenlionsoft.baselib.core.widget.views.BallView; +import com.tenlionsoft.baselib.core.widget.views.ConditionAllAreaPopup; +import com.tenlionsoft.baselib.core.widget.views.TypeBoldTextView; +import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.LogUtils; +import com.tenlionsoft.baselib.utils.UserLgUtils; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import butterknife.BindView; import butterknife.ButterKnife; import butterknife.Unbinder; +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; +import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.schedulers.Schedulers; /** * 作者: adam @@ -19,14 +57,331 @@ import butterknife.Unbinder; @Route(path = PathConfig.PATH_MODULE_COMMON_FRAGMENT_POPULACE_STATISTICS) public class PopulaceLeaderStatisticsFragment extends BaseFragment { + @BindView(R2.id.tv_area) + TextView mTvArea; + @BindView(R2.id.ll_area) + LinearLayout mLlArea; + @BindView(R2.id.tv_total_populace) + TypeBoldTextView mTvTotalPopulace; + @BindView(R2.id.tv_populace_percent) + TypeBoldTextView mTvPopulacePercent; + @BindView(R2.id.tv_populace_incident_percent) + TypeBoldTextView mTvPopulaceIncidentPercent; + @BindView(R2.id.tv_populace_community) + TypeBoldTextView mTvPopulaceCommunity; + @BindView(R2.id.rlv_category_percent) + RecyclerView mRlvCategoryPercent; + @BindView(R2.id.tv_category) + TypeBoldTextView mTvCategory; + @BindView(R2.id.hbc_category_chart) + HorizontalBarChart mHbcChart; + @BindView(R2.id.bv_type) + BallView mBvType; + @BindView(R2.id.tv_refresh_time) + TextView mTvRefreshTime; private Unbinder mBind; + private String mCurrentAreaCode; + private ProgressDialog mDialog; + private PopulaceCountAdapter mPopulaceCountAdapter; + private List mCountDatas; @Override protected void setDataToView(View dataView) { mBind = ButterKnife.bind(this, dataView); - setStateView(STATE_LOAD); + setStateView(STATE_SUCCESS); + mSrlView.setEnableLoadMore(false); + mSrlView.setEnableRefresh(false); + initViews(); + getData(); } + /** + * 获取数据 + */ + private void getData() { + + RetrofitManager.getInstance() + .create(CenterApis.class) + .getAreaPopulaceStatistics(mCurrentAreaCode, UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + + } + + @Override + public void onNext(@NonNull AreaPopulaceBean bean) { + if (mDialog != null && mDialog.isShowing()) { + mDialog.dismiss(); + } + setInfoToView(bean); + } + + @Override + public void onError(@NonNull Throwable e) { + if (mDialog != null && mDialog.isShowing()) { + mDialog.dismiss(); + } + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + } + + /** + * 展示数据 + * + * @param bean + */ + private void setInfoToView(AreaPopulaceBean bean) { + mTvRefreshTime.setText("数据更新时间 : " + bean.getFreshTime()); + mTvTotalPopulace.setText(bean.getZongShu() + "");//总人口 + mTvPopulacePercent.setText(bean.getZhanQuanShi() + "%");//占全市 + mTvPopulaceIncidentPercent.setText(bean.getShiJianLv() + "%"); + mTvPopulaceCommunity.setText(bean.getSheQuCun() + ""); + + mCountDatas.clear(); + mPopulaceCountAdapter.setData(mCountDatas); + + AreaPopulaceBean.ItemBean pB = new AreaPopulaceBean.ItemBean(); + pB.setName("党员"); + pB.setCount(bean.getDangYuan() + ""); + + + AreaPopulaceBean.ItemBean pB1 = new AreaPopulaceBean.ItemBean(); + pB1.setName("户籍人口(外出)"); + pB1.setCount(bean.getWaiChuHuJi() + ""); + + + AreaPopulaceBean.ItemBean pB2 = new AreaPopulaceBean.ItemBean(); + pB2.setName("男性"); + pB2.setCount(bean.getNanXing() + ""); + + + AreaPopulaceBean.ItemBean pB3 = new AreaPopulaceBean.ItemBean(); + pB3.setName("女性"); + pB3.setCount(bean.getNvXing() + ""); + + + AreaPopulaceBean.ItemBean pB4 = new AreaPopulaceBean.ItemBean(); + pB4.setName("初中以上学历"); + pB4.setCount(bean.getChuZhongYiShang() + ""); + + AreaPopulaceBean.ItemBean pB5 = new AreaPopulaceBean.ItemBean(); + pB5.setName("非户籍人口"); + pB5.setCount(bean.getChangZhu() + ""); + + AreaPopulaceBean.ItemBean pB6 = new AreaPopulaceBean.ItemBean(); + pB6.setName("户籍人口"); + pB6.setCount(bean.getHuJi() + ""); + + AreaPopulaceBean.ItemBean pB7 = new AreaPopulaceBean.ItemBean(); + pB7.setName("汉族人口"); + pB7.setCount(bean.getHanZu() + ""); + + mCountDatas.add(pB7);//汉族 + mCountDatas.add(pB2);//男性 + mCountDatas.add(pB3);//女性 + mCountDatas.add(pB6);//户籍人口 + mCountDatas.add(pB1);//户籍人口外出 + mCountDatas.add(pB5);//非户籍人口 + mCountDatas.add(pB);//党员 + mCountDatas.add(pB4); + mPopulaceCountAdapter.setData(mCountDatas); + +// 气泡 + List typeBeans = new ArrayList<>(); + BallTypeBean b = new BallTypeBean(); + b.setTypeName("初中以上学历"); + b.setTypePercent(bean.getChuZhongYiShangZhanBi() + "%"); + + BallTypeBean b1 = new BallTypeBean(); + b1.setTypeName("60岁以上"); + b1.setTypePercent(bean.getLiuShiYiShangZhanBi() + "%"); + + BallTypeBean b2 = new BallTypeBean(); + b2.setTypeName("党员"); + b2.setTypePercent(bean.getDangYuanZhanBi() + "%"); + + BallTypeBean b3 = new BallTypeBean(); + b3.setTypeName("汉族"); + b3.setTypePercent(bean.getHanZuZhanBi() + "%"); + + BallTypeBean b4 = new BallTypeBean(); + b4.setTypeName("男性"); + b4.setTypePercent(bean.getNanXingZhanBi() + "%"); + + BallTypeBean b5 = new BallTypeBean(); + b5.setTypeName("女性"); + b5.setTypePercent(bean.getNvXingZhanBi() + "%"); + typeBeans.add(b); + typeBeans.add(b1); + typeBeans.add(b2); + typeBeans.add(b3); + typeBeans.add(b4); + typeBeans.add(b5); + + mBvType.setData(typeBeans); + + setCommunityData(bean.getRenKouShiJian()); + } + + + private void setCommunityData(List datas) { + if (datas != null && datas.size() > 0) { + setAxis(datas); + float maxiNum = getMaxNum(datas); + LogUtils.e("最大值=" + maxiNum); + YAxis axisRight = mHbcChart.getAxisRight(); + axisRight.setEnabled(false); + axisRight.setAxisMinimum(0f); + axisRight.setAxisMaximum(maxiNum); + axisRight.setValueFormatter(new DefaultValueFormatter(0));//显示整数 + YAxis axisLeft = mHbcChart.getAxisLeft(); + axisLeft.setAxisMinimum(0f); + axisLeft.setAxisMaximum(maxiNum); + List entryList = new ArrayList<>(); + for (int i = 0; i < datas.size(); i++) { + entryList.add(new BarEntry(i, new float[]{datas.get(i).getPersonCount(), datas.get(i).getCaseCount()})); + } + BarDataSet barDataSet = new BarDataSet(entryList, ""); + barDataSet.setColors(Color.rgb(47, 92, 251), + Color.rgb(255, 168, 0)); + barDataSet.setDrawValues(false);//是否绘制柱子上的数 + barDataSet.setValueTextColor(Color.WHITE); + barDataSet.setValueFormatter(new DefaultValueFormatter(0));//柱子上面的数 + barDataSet.setValueTextSize(6f); + BarData data = new BarData(barDataSet); + data.setBarWidth(0.4f);//设置柱子的宽度 + mHbcChart.setData(data); + MyMarkerView mv = new MyMarkerView(mActivity, datas); + mv.setChartView(mHbcChart); // For bounds control + mHbcChart.setMarker(mv); // Set the marker to the chart + } else { + mHbcChart.setNoDataText("当前区域内无数据"); + } + mHbcChart.invalidate(); + } + + private float getMaxNum(List datas) { + float max = datas.get(0).getCaseCount(); + for (int i = 0; i < datas.size(); i++) { + if (max < datas.get(i).getCaseCount()) { + max = datas.get(i).getCaseCount(); + } + if (max < datas.get(i).getPersonCount()) { + max = datas.get(i).getPersonCount(); + } + } + if (max > 99) { + max += 100; + } else { + max += 10; + } + return max; + } + + /** + * 初始化 + */ + private void initViews() { + mCurrentAreaCode = UserLgUtils.getUserAreaCode(); + initHoChart(); + mCountDatas = new ArrayList<>(); + mPopulaceCountAdapter = new PopulaceCountAdapter(mActivity, mCountDatas); + mRlvCategoryPercent.setLayoutManager(new GridLayoutManager(mActivity, 1, GridLayoutManager.HORIZONTAL, false)); + mRlvCategoryPercent.setAdapter(mPopulaceCountAdapter); + mLlArea.setOnClickListener(v -> onShowArea()); + mTvArea.setText(UserLgUtils.getUserFullAreaName()); +// mDialog = UIUtil.initDialog(mActivity, "加载中..."); +// mDialog.show(); + } + + + /** + * 地区选择 + */ + private void onShowArea() { + if (UserLgUtils.getUserAreaLevel() < 4 && UserLgUtils.getUserAreaLevel() != -1) { + ConditionAllAreaPopup areaPopup = new ConditionAllAreaPopup(mActivity, + UserLgUtils.getUserFullAreaName(), + UserLgUtils.getUserAreaLevel()); + areaPopup.setOnListPopupItemClickListener((areaNames, areaCode) -> { + mTvArea.setText(areaNames); + //刷新数据 + mCurrentAreaCode = areaCode; +// if (mDialog != null) { +// mDialog.show(); +// } + getData(); + areaPopup.dismiss(); + }); + areaPopup.setOffsetY(10); + areaPopup.showPopupWindow(mTvArea); + } + + } + + /** + * 初始化 + */ + private void initHoChart() { + mHbcChart.getDescription().setEnabled(false); + mHbcChart.setExtraOffsets(0, 10, 10, 10); + mHbcChart.setNoDataText("当前区域无数据"); + mHbcChart.setScaleXEnabled(true); + mHbcChart.setScaleYEnabled(false); + mHbcChart.setDrawGridBackground(false);//不绘制网格 + mHbcChart.getLegend().setEnabled(false); + } + + private void setAxis(List datas) { + XAxis xAxis = mHbcChart.getXAxis(); + xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); + xAxis.setDrawGridLines(false); + xAxis.setTextSize(12f); + xAxis.setLabelCount(datas.size()); + xAxis.setDrawAxisLine(false); + xAxis.setGranularity(1f);//防止放大图后,标签错乱 + xAxis.setValueFormatter(new LargeValueFormatter() { + @Override + public String getFormattedValue(float value) { + try { + return datas.get((int) value).getAreaName(); + } catch (Exception e) { + return ""; + } + } + }); + YAxis axisRight = mHbcChart.getAxisRight(); + axisRight.setAxisMinimum(0f); + axisRight.setDrawGridLines(false);//绘制网格 + axisRight.enableGridDashedLine(5f, 10f, 0f); + axisRight.setDrawAxisLine(false); + axisRight.setAxisMaximum(50f); + axisRight.setTextSize(12f); + axisRight.setValueFormatter(new DefaultValueFormatter(0));//显示整数 + //不显示顶部的轴 + YAxis axisLeft = mHbcChart.getAxisLeft(); + axisLeft.setAxisMinimum(0f); + axisLeft.setAxisMaximum(50f); + axisLeft.setEnabled(false); + } + + /** + * 获取随机颜色值 + */ + private int getRandomColor() { + Random rnd = new Random(); + int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256)); + return color; + } @Override protected void refreshView() { diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/holders/GridCountItemHolder.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/holders/GridCountItemHolder.java new file mode 100644 index 0000000..0b1d63c --- /dev/null +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/holders/GridCountItemHolder.java @@ -0,0 +1,20 @@ +package com.tengshisoft.commonmodule.holders; + +import android.view.View; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.tengshisoft.commonmodule.R; + +public class GridCountItemHolder extends RecyclerView.ViewHolder { + public TextView mTvName; + public TextView mTvCount; + + public GridCountItemHolder(@NonNull View itemView) { + super(itemView); + mTvName = itemView.findViewById(R.id.tv_name); + mTvCount = itemView.findViewById(R.id.tv_count); + } +} diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/holders/IncidentStatisticsHolder.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/holders/IncidentStatisticsHolder.java new file mode 100644 index 0000000..35296d6 --- /dev/null +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/holders/IncidentStatisticsHolder.java @@ -0,0 +1,25 @@ +package com.tengshisoft.commonmodule.holders; + +import android.view.View; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.tengshisoft.commonmodule.R; + +public class IncidentStatisticsHolder extends RecyclerView.ViewHolder { + public TextView mTvNumber; + public TextView mTvName; + public TextView mTvRanking; + public LinearLayout mLlItemContent; + + public IncidentStatisticsHolder(@NonNull View itemView) { + super(itemView); + mTvNumber = itemView.findViewById(R.id.tv_number); + mTvName = itemView.findViewById(R.id.tv_name); + mTvRanking = itemView.findViewById(R.id.tv_ranking); + mLlItemContent= itemView.findViewById(R.id.ll_item_content); + } +} diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/holders/PopulaceItemHolder.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/holders/PopulaceItemHolder.java new file mode 100644 index 0000000..30e5f7b --- /dev/null +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/holders/PopulaceItemHolder.java @@ -0,0 +1,20 @@ +package com.tengshisoft.commonmodule.holders; + +import android.view.View; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.tengshisoft.commonmodule.R; + +public class PopulaceItemHolder extends RecyclerView.ViewHolder { + public TextView mTvName; + public TextView mTvCount; + + public PopulaceItemHolder(@NonNull View itemView) { + super(itemView); + mTvName = itemView.findViewById(R.id.tv_name); + mTvCount = itemView.findViewById(R.id.tv_count); + } +} diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/nets/CenterApis.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/nets/CenterApis.java index f69ec91..2ef1169 100644 --- a/commonmodule/src/main/java/com/tengshisoft/commonmodule/nets/CenterApis.java +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/nets/CenterApis.java @@ -1,8 +1,14 @@ package com.tengshisoft.commonmodule.nets; import com.tengshisoft.commonmodule.adapters.CommunityUserListBean; +import com.tengshisoft.commonmodule.beans.AreaGridCountBean; import com.tengshisoft.commonmodule.beans.AreaGridListBean; +import com.tengshisoft.commonmodule.beans.AreaGridLowCountBean; +import com.tengshisoft.commonmodule.beans.AreaIncidentCategoryBean; +import com.tengshisoft.commonmodule.beans.AreaIncidentHotBean; +import com.tengshisoft.commonmodule.beans.AreaIncidentPercentBean; import com.tengshisoft.commonmodule.beans.AreaIncidentScaleBean; +import com.tengshisoft.commonmodule.beans.AreaPopulaceBean; import com.tengshisoft.commonmodule.beans.DeferDetailBean; import com.tengshisoft.commonmodule.beans.DepartmentListBean; import com.tengshisoft.commonmodule.beans.DisposeDetailBean; @@ -18,6 +24,7 @@ import com.tengshisoft.commonmodule.beans.IncidentDeferListBean; import com.tengshisoft.commonmodule.beans.IncidentListBean; import com.tengshisoft.commonmodule.beans.IncidentMineOverseeListBean; import com.tengshisoft.commonmodule.beans.IncidentOverseeDetailBean; +import com.tengshisoft.commonmodule.beans.IncidentTop7Bean; import com.tengshisoft.commonmodule.beans.JournalListBean; import com.tengshisoft.commonmodule.beans.KnowAskDetailBean; import com.tengshisoft.commonmodule.beans.KnowAskListBean; @@ -434,4 +441,60 @@ public interface CenterApis { @GET("app/report/count/count-area-type-scale/{areaCode}") Observable getAreaTypeScale(@Path("areaCode") String areaCode, @Header("token") String token); + + /** + * 获取热门事件 + */ + @Headers({"base_url_name:case", "Content-Type: application/json", "Accept: application/json"}) + @GET("app/report/count/count-area-hot-report-type/{areaCode}") + Observable getAreaHot(@Path("areaCode") String areaCode, + @Header("token") String token); + + /** + * 获取事件分类 + */ + @Headers({"base_url_name:case", "Content-Type: application/json", "Accept: application/json"}) + @GET("app/report/count/count-area-hot-report-type-over/{areaCode}") + Observable> getAreaIncidentCategory(@Path("areaCode") String areaCode, + @Header("token") String token); + + /** + * 获取网格员上报排行TOP7 + */ + @Headers({"base_url_name:case", "Content-Type: application/json", "Accept: application/json"}) + @GET("app/countgriduser/get-area-year-grid-user-top-seven/{areaCode}") + Observable> getAreaReportTop7(@Path("areaCode") String areaCode, + @Header("token") String token); + + /** + * 获取乡镇事件占比 + */ + @Headers({"base_url_name:case", "Content-Type: application/json", "Accept: application/json"}) + @GET("app/countgriduser/count-nowareaandother-reportnum/{areaCode}") + Observable getAreaGridPercent(@Path("areaCode") String areaCode, + @Header("token") String token); + + /** + * 人口数据统计 + */ + @Headers({"base_url_name:person", "Content-Type: application/json", "Accept: application/json"}) + @GET("app/basepopulationinfo/population-center-count-data/{areaCode}") + Observable getAreaPopulaceStatistics(@Path("areaCode") String areaCode, + @Header("token") String token); + + /** + * 辖区网格员统计 + */ + @Headers({"Content-Type: application/json", "Accept: application/json"}) + @GET("app/user-expand/count-grid-member/area-code-like/{areaCodeLike}") + Observable getAreaGrid(@Path("areaCodeLike") String areaCode, + @Header("token") String token); + + /** + * 辖区下级网格员统计 + */ + @Headers({"Content-Type: application/json", "Accept: application/json"}) + @GET("app/user-expand/count-sub-area-grid-member/area-code/{areaCode}") + Observable getAreaLowerGrid(@Path("areaCode") String areaCode, + @Header("token") String token); } diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/utils/PiePercentFormater.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/utils/PiePercentFormater.java new file mode 100644 index 0000000..3819db4 --- /dev/null +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/utils/PiePercentFormater.java @@ -0,0 +1,39 @@ +package com.tengshisoft.commonmodule.utils; + +import com.github.mikephil.charting.components.AxisBase; +import com.github.mikephil.charting.data.Entry; +import com.github.mikephil.charting.formatter.ValueFormatter; +import com.github.mikephil.charting.utils.ViewPortHandler; + +import java.text.DecimalFormat; + +public class PiePercentFormater extends ValueFormatter { + protected DecimalFormat mFormat; + + public PiePercentFormater() { + mFormat = new DecimalFormat("###,###,##0.0"); + } + + /** + * Allow a custom decimalformat + * + * @param format + */ + public PiePercentFormater(DecimalFormat format) { + this.mFormat = format; + } + + @Override + public String getFormattedValue(float value) { + return mFormat.format(value) + " %"; + } + +// @Override +// public String getFormattedValue(float value, AxisBase axis) { +// return mFormat.format(value) + " %"; +// } + + public int getDecimalDigits() { + return 1; + } +} diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/views/MyIncidentMarkerView.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/views/MyIncidentMarkerView.java new file mode 100644 index 0000000..15f8965 --- /dev/null +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/views/MyIncidentMarkerView.java @@ -0,0 +1,50 @@ +package com.tengshisoft.commonmodule.views; + +import android.content.Context; +import android.widget.TextView; + +import com.github.mikephil.charting.components.MarkerView; +import com.github.mikephil.charting.data.BarEntry; +import com.github.mikephil.charting.data.Entry; +import com.github.mikephil.charting.highlight.Highlight; +import com.github.mikephil.charting.utils.MPPointF; +import com.tengshisoft.commonmodule.R; +import com.tenlionsoft.baselib.utils.LogUtils; + +public class MyIncidentMarkerView extends MarkerView { + + private final TextView mTvDo; + private final TextView mTvUnDo; + + public MyIncidentMarkerView(Context context) { + super(context, R.layout.multi_incident_mark_view); + mTvDo = findViewById(R.id.tv_do); + mTvUnDo = findViewById(R.id.tv_undo); + } + + + @Override + public void refreshContent(Entry e, Highlight highlight) { + try { + if (e instanceof BarEntry) { + BarEntry entry = (BarEntry) e; + float[] yVals = entry.getYVals(); + LogUtils.e(yVals[0] + "===" + yVals[1]); + int populaceCount = (int) yVals[0]; + int incidentCount = (int) yVals[1]; + mTvDo.setText(incidentCount + "件"); + mTvUnDo.setText(populaceCount + "件"); + } + } catch (Exception err) { + + } + super.refreshContent(e, highlight); + } + + @Override + public MPPointF getOffset() { + return new MPPointF(-(getWidth() / 2), -getHeight()); + } + + +} diff --git a/commonmodule/src/main/java/com/tengshisoft/commonmodule/views/MyMarkerView.java b/commonmodule/src/main/java/com/tengshisoft/commonmodule/views/MyMarkerView.java new file mode 100644 index 0000000..edc4b95 --- /dev/null +++ b/commonmodule/src/main/java/com/tengshisoft/commonmodule/views/MyMarkerView.java @@ -0,0 +1,59 @@ +package com.tengshisoft.commonmodule.views; + +import android.content.Context; +import android.widget.TextView; + +import com.github.mikephil.charting.components.MarkerView; +import com.github.mikephil.charting.data.BarData; +import com.github.mikephil.charting.data.BarEntry; +import com.github.mikephil.charting.data.Entry; +import com.github.mikephil.charting.highlight.Highlight; +import com.github.mikephil.charting.utils.MPPointF; +import com.tengshisoft.commonmodule.R; +import com.tengshisoft.commonmodule.beans.AreaPopulaceBean; +import com.tenlionsoft.baselib.utils.LogUtils; + +import java.util.List; + +public class MyMarkerView extends MarkerView { + + private final TextView mTvIncidentCount; + private final TextView mTvPersonCount; + private TextView mDateTv; + private BarData mBarData; + private List mDateList; + private int[] mLineColorArr = {0xff45D6E1, 0xff675AAD, 0xffFB80D8, 0xff0e7e71, 0xff0066cc, 0xffFF8040, 0xffDD5246, 0xffF2350D}; + + public MyMarkerView(Context context, List dateList) { + super(context, R.layout.multi_mark_view); + this.mDateList = dateList; + mTvIncidentCount = findViewById(R.id.tv_incident_count); + mTvPersonCount = findViewById(R.id.tv_populace_count); + } + + + @Override + public void refreshContent(Entry e, Highlight highlight) { + try { + if (e instanceof BarEntry) { + BarEntry entry = (BarEntry) e; + float[] yVals = entry.getYVals(); + LogUtils.e(yVals[0] + "===" + yVals[1]); + int populaceCount = (int) yVals[0]; + int incidentCount = (int) yVals[1]; + mTvIncidentCount.setText(incidentCount + "件"); + mTvPersonCount.setText(populaceCount + "人"); + } + }catch (Exception error){ + + } + super.refreshContent(e, highlight); + } + + @Override + public MPPointF getOffset() { + return new MPPointF(-getWidth(), -(getHeight() / 2)); + } + + +} diff --git a/commonmodule/src/main/res/drawable-xhdpi/ic_grid_statistics_count.png b/commonmodule/src/main/res/drawable-xhdpi/ic_grid_statistics_count.png new file mode 100644 index 0000000000000000000000000000000000000000..de1650be9f702a2fcad9b49f9ef32c148d460aaa GIT binary patch literal 1912 zcmV-;2Z#8HP)Px+GD$>1RA@u(T7PU^Wf^{+bI!fJ+n6u~M;5>#Wg>3(7KSj?KdPXFC=QhdY;R{3 zUD7~Bwh&-yY!vEHVHt}i0)}O6H*^V$&M1Wd)1-3^Z0#+Zqf|H6F&IN!t#-CO=X{Sj z-M!nT^!A?K-i@2a@1L8T@BQ&S=l$;YzTf*DB0b8lS6S?AEOLzZWf9j2JUcU23crMg zEZ?o`{K$+BG}45@#6ak>TL$MDJ6aE7Ie-s_QG73C1nsq8?&vBndo~O~mN%$uR=?K> zVFiHbdjWb9J_Tq$gqc7ys*x1UxL1UK;;97rSL`xd<|mbe{)M8P;M6$w}Zo%P}`~t&et%hbtg=2*A7&0zD}x z0^X+Y-8kos9Xqyd`?Qy>%y`l}KS-Q~{H*}LfUAP0!#J_A$J-5l-6 zy!+`wF2kqa7%Y9sb=t9+{&XV;L4UVpHI$FoPft5?0D?r{2a8{yj^xryRQsnfIUJg{ zp7IqW4u-u68>&TGt;tLQZ3F`00uj5-Vv{Hn@HT7 zS1_|Irk=z(1ex3B9BSV%_7t2AA|16K0=WCca|;ioHbm|T3$~)#tCOW5orD_2h+I&D z?**`;yCw3}_+G_$t@{m%_W?LJYcpv}H9Oabja(w>tpjv>C}u^F!xD`Nd;_FECqq*AS6-oEA0v-aea5Cmgfn1Q6`vLPC%S4(wH}XJ+K)g1nWX!FUxdTAZ4Yy7& zIdT}%0H{HN1Cm}Kcu>>;WjjXRnHD)$u*xBGt}M={a+Xm?h@fI&AD{~X%un}I3pz;@ z8aV^-Ab~xCo`r=@$$ND;68lHb1sEK=yc!#2ZR*3U*oc3VptS^Y{|6@%nmn?TCMT$m zu-6({&zKkv?KvO)`LB}1MAF;|>MlqpQ$Z1ljAv>xQnE5WfwyCm~xi}qhE+WWqE5qcWOyDhDfeR*tTfhT>4h$H|L)TLJg z$Xh^%A-5gAS)STdwkPZx%g80FN3Nu0wF)ZF(%mKSXP#p}k3szNubVj%)^25`oVVv; zHtAhX3wJ@dZX(@0*b(#WJs2My=^*J#?HUUF(BnUEDExpMTVS3}AAs<%!7omXB*X zH$^7DBmpF9+#iAX-f@TeRjMWW&EnEJX{}<}@KPCT%h=sGH#xyG(vp`pMt2qhDpBLE z1@Y~)?#fh4B&ZEf$p|(sSZoL2WILFU9HCEy`5at> yzJG&^`2om}g)~xnVnQ##70$qs=XP$LckF)vN|H|c1#z?h0000HIL!KI yY>=~iOUu>S``7~BuqFxL$Z$F|c|r%T3&W`tDZ#6WF3W+2GkCiCxvX#WP$0 literal 0 HcmV?d00001 diff --git a/commonmodule/src/main/res/drawable-xhdpi/ic_point_yellow_text_title.png b/commonmodule/src/main/res/drawable-xhdpi/ic_point_yellow_text_title.png new file mode 100644 index 0000000000000000000000000000000000000000..47f9bafff8e024b82c0ccca851c13bd42bab3976 GIT binary patch literal 146 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 QCjbBd07*qoM6N<$f_-FYxBvhE literal 0 HcmV?d00001 diff --git a/commonmodule/src/main/res/drawable-xhdpi/ic_statistics_pillar_icon.png b/commonmodule/src/main/res/drawable-xhdpi/ic_statistics_pillar_icon.png new file mode 100755 index 0000000000000000000000000000000000000000..46415bb0839e7423e62ccb5fe6f9cac3eb4c566c GIT binary patch literal 1097 zcmY+E3rtg27{_miK&hgIzOaSChLdR2%s{qaM%O~2y|lMNg=|EUff>RS&BSRmdo@65 z3tFKr&blD<!7X!dO)U7#vVx^Lf$I0b%H1O5h-i z5_n1wP`DId1>xzyCUIhPLKTgRR5~$G>FbD^aw#n07QO^4z9kk>DgQ{}3P`W8W92mf zxe)fkixPv6LB~TDbV9!cx%7@#Bx3Y7d2te(?C-z))0J!2uiqHD>G2GY{CfB9z5CADsK)`=fV8?^*Jh3{makq4}#5-aSI*1l#gw)F$$b zVA11fx#OuCE-#f;XSEcT<(+oa3scf^l+O>EcacHe1HFw~DC0Br&*rf>{jFPx4YL<+ ze{3GHp4=s7dlnO}9Z4#%lY4uDI^0Kg?rD0wU12h8ZIV};;zsOe8wbQqb5eN?KjQ51 ze_UOKlT#m5ekXBt&N4}}%w4@9X=sy;9DDLnL-W|F;$Nt%oxOuIzdh`jji(4(Y;Wy} z7*6Z^oYKF}ttLa>jTy~JNqvi{`6@A;Tp`sR=Jpc-OY>Fn&3zxzr*p;GgX-n2()aFX z9=cMpAP#2M?;oNHy4w0|Q!5S9f!>E5mxI#i;e?5VPaFjt*Gca;?i^R5sQHXG*L$PB cD0zK*G+lDIZF*tzXZSBbrmAHv$$6#!0|U$-B>(^b literal 0 HcmV?d00001 diff --git a/commonmodule/src/main/res/drawable-xhdpi/ic_statistics_populace_title_icon.png b/commonmodule/src/main/res/drawable-xhdpi/ic_statistics_populace_title_icon.png new file mode 100755 index 0000000000000000000000000000000000000000..faf24c3e1292beae044219a6b1db5a3edf109f51 GIT binary patch literal 1869 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 N002ovPDHLkV1gbKQQ-gp literal 0 HcmV?d00001 diff --git a/commonmodule/src/main/res/drawable-xhdpi/ic_statistics_two.png b/commonmodule/src/main/res/drawable-xhdpi/ic_statistics_two.png new file mode 100755 index 0000000000000000000000000000000000000000..485e25e0f86f4f1910fb1e7f1137e1fdff355096 GIT binary patch literal 17280 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 literal 0 HcmV?d00001 diff --git a/commonmodule/src/main/res/drawable-xhdpi/marker2.png b/commonmodule/src/main/res/drawable-xhdpi/marker2.png new file mode 100755 index 0000000000000000000000000000000000000000..580542829b4b935710fa7f836e71e932c693e6b2 GIT binary patch literal 3389 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 literal 0 HcmV?d00001 diff --git a/commonmodule/src/main/res/drawable/shp_rec_border_green.xml b/commonmodule/src/main/res/drawable/shp_rec_border_green.xml new file mode 100644 index 0000000..fab2c8b --- /dev/null +++ b/commonmodule/src/main/res/drawable/shp_rec_border_green.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/commonmodule/src/main/res/layout/custom_marker_view.xml b/commonmodule/src/main/res/layout/custom_marker_view.xml new file mode 100755 index 0000000..62d9d95 --- /dev/null +++ b/commonmodule/src/main/res/layout/custom_marker_view.xml @@ -0,0 +1,24 @@ + + + + + + diff --git a/commonmodule/src/main/res/layout/fragment_grid_leader_statistics.xml b/commonmodule/src/main/res/layout/fragment_grid_leader_statistics.xml index e100926..c7253af 100644 --- a/commonmodule/src/main/res/layout/fragment_grid_leader_statistics.xml +++ b/commonmodule/src/main/res/layout/fragment_grid_leader_statistics.xml @@ -4,7 +4,378 @@ android:id="@+id/ll_page" android:layout_width="match_parent" android:layout_height="match_parent" - android:orientation="vertical"> + android:orientation="vertical" + tools:background="@color/gray"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/commonmodule/src/main/res/layout/fragment_incident_leader_statistics.xml b/commonmodule/src/main/res/layout/fragment_incident_leader_statistics.xml index eff7d25..0ede883 100644 --- a/commonmodule/src/main/res/layout/fragment_incident_leader_statistics.xml +++ b/commonmodule/src/main/res/layout/fragment_incident_leader_statistics.xml @@ -14,6 +14,7 @@ android:padding="10dp"> @@ -21,7 +22,7 @@ @@ -30,23 +31,13 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" - android:clickable="true" android:drawableRight="@drawable/ic_arrow_sort_gray" android:drawablePadding="5dp" - android:focusable="true" android:textColor="#4261FF" android:textSize="12dp" tools:text="乌兰察布市/集宁区/XXXX县/XXXX镇/XXX村" /> - @@ -85,7 +76,8 @@ android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:text="事件分类占比" - android:textColor="@color/black" /> + android:textColor="@color/black" + android:textSize="@dimen/text_14" /> @@ -113,10 +105,11 @@ android:id="@+id/tv_undo_incident" android:layout_width="match_parent" android:layout_height="wrap_content" - android:padding="10dp" - android:text="未处理事件\n11件" + android:padding="5dp" + android:text="无" android:textColor="#464E58" - android:textSize="@dimen/text_12" /> + android:textSize="@dimen/text_12" + tools:text="上报事件未处理\n11件" /> @@ -131,8 +124,8 @@ android:padding="5dp"> @@ -140,10 +133,11 @@ android:id="@+id/tv_do_incident" android:layout_width="match_parent" android:layout_height="wrap_content" - android:padding="10dp" - android:text="已处理事件\n11件" + android:padding="5dp" + android:text="无" android:textColor="#464E58" - android:textSize="@dimen/text_12" /> + android:textSize="@dimen/text_12" + tools:text="上报事件已处理\n11件" /> @@ -151,7 +145,7 @@ + android:layout_height="240dp" /> + android:textColor="@color/black" + android:textSize="@dimen/text_14" /> + tools:text="" /> + android:textSize="@dimen/text_14" + tools:text="" /> @@ -259,12 +257,12 @@ + android:background="@drawable/ic_hot_incident_detail_bg" + android:minHeight="72dp"> + android:textSize="@dimen/text_12" + tools:text="" /> @@ -315,7 +316,8 @@ android:layout_marginLeft="5dp" android:layout_toRightOf="@id/iv_category" android:text="事件分类" - android:textColor="@color/black" /> + android:textColor="@color/black" + android:textSize="@dimen/text_14" /> diff --git a/commonmodule/src/main/res/layout/fragment_populace_leader_statistics.xml b/commonmodule/src/main/res/layout/fragment_populace_leader_statistics.xml index e100926..bcae799 100644 --- a/commonmodule/src/main/res/layout/fragment_populace_leader_statistics.xml +++ b/commonmodule/src/main/res/layout/fragment_populace_leader_statistics.xml @@ -4,7 +4,341 @@ android:id="@+id/ll_page" android:layout_width="match_parent" android:layout_height="match_parent" - android:orientation="vertical"> + android:orientation="vertical" + tools:background="@color/gray"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/commonmodule/src/main/res/layout/item_grid_count_percent.xml b/commonmodule/src/main/res/layout/item_grid_count_percent.xml new file mode 100644 index 0000000..d71b980 --- /dev/null +++ b/commonmodule/src/main/res/layout/item_grid_count_percent.xml @@ -0,0 +1,33 @@ + + + + + + + \ No newline at end of file diff --git a/commonmodule/src/main/res/layout/item_grid_incident_statistics.xml b/commonmodule/src/main/res/layout/item_grid_incident_statistics.xml new file mode 100644 index 0000000..d57c649 --- /dev/null +++ b/commonmodule/src/main/res/layout/item_grid_incident_statistics.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/commonmodule/src/main/res/layout/item_populace_percent.xml b/commonmodule/src/main/res/layout/item_populace_percent.xml new file mode 100644 index 0000000..ea0e52b --- /dev/null +++ b/commonmodule/src/main/res/layout/item_populace_percent.xml @@ -0,0 +1,27 @@ + + + + + + + \ No newline at end of file diff --git a/commonmodule/src/main/res/layout/multi_incident_mark_view.xml b/commonmodule/src/main/res/layout/multi_incident_mark_view.xml new file mode 100644 index 0000000..3620cd7 --- /dev/null +++ b/commonmodule/src/main/res/layout/multi_incident_mark_view.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/commonmodule/src/main/res/layout/multi_mark_view.xml b/commonmodule/src/main/res/layout/multi_mark_view.xml new file mode 100644 index 0000000..1d1bafd --- /dev/null +++ b/commonmodule/src/main/res/layout/multi_mark_view.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mainmodule/src/main/java/com/tengshisoft/mainmodule/MainActivity.java b/mainmodule/src/main/java/com/tengshisoft/mainmodule/MainActivity.java index ecc48b5..bf272ed 100644 --- a/mainmodule/src/main/java/com/tengshisoft/mainmodule/MainActivity.java +++ b/mainmodule/src/main/java/com/tengshisoft/mainmodule/MainActivity.java @@ -18,7 +18,7 @@ import com.bumptech.glide.Glide; import com.bumptech.glide.load.resource.bitmap.CircleCrop; import com.bumptech.glide.request.RequestOptions; import com.google.gson.Gson; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.constant.BaseConfig; import com.tenlionsoft.baselib.constant.PathConfig; import com.tenlionsoft.baselib.constant.PermissionConstants; @@ -34,6 +34,7 @@ import com.tenlionsoft.baselib.core.retrofit_net.api.BaseApiService; import com.tenlionsoft.baselib.core.retrofit_net.bean.VersionBean; import com.tenlionsoft.baselib.core.retrofit_net.conver.RxTransformer; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UserLgUtils; import com.tengshisoft.mainmodule.beans.GirdPBean; import com.tengshisoft.mainmodule.net.MainApi; diff --git a/mainmodule/src/main/java/com/tengshisoft/mainmodule/base/CustomPushMsgActivity.java b/mainmodule/src/main/java/com/tengshisoft/mainmodule/base/CustomPushMsgActivity.java index d269bf6..cd65b8a 100644 --- a/mainmodule/src/main/java/com/tengshisoft/mainmodule/base/CustomPushMsgActivity.java +++ b/mainmodule/src/main/java/com/tengshisoft/mainmodule/base/CustomPushMsgActivity.java @@ -11,7 +11,7 @@ import android.view.View; import com.alibaba.android.arouter.launcher.ARouter; import com.gyf.immersionbar.ImmersionBar; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tapadoo.alerter.Alerter; import com.tengshisoft.mainmodule.R; import com.tenlionsoft.baselib.app.BaseAppContext; diff --git a/mainmodule/src/main/java/com/tengshisoft/mainmodule/base/LoginActivity.java b/mainmodule/src/main/java/com/tengshisoft/mainmodule/base/LoginActivity.java index 04e46e9..c09724f 100755 --- a/mainmodule/src/main/java/com/tengshisoft/mainmodule/base/LoginActivity.java +++ b/mainmodule/src/main/java/com/tengshisoft/mainmodule/base/LoginActivity.java @@ -20,7 +20,6 @@ import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.google.gson.Gson; import com.gyf.immersionbar.ImmersionBar; -import com.hjq.toast.ToastUtils; import com.tengshisoft.mainmodule.R; import com.tengshisoft.mainmodule.R2; import com.tenlionsoft.baselib.app.BaseAppContext; @@ -45,6 +44,7 @@ import com.tenlionsoft.baselib.utils.AppUtils; import com.tenlionsoft.baselib.utils.EncryptUtils; import com.tenlionsoft.baselib.utils.ExceptionHandler; import com.tenlionsoft.baselib.utils.LogUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UserLgUtils; import butterknife.BindView; @@ -166,9 +166,9 @@ public class LoginActivity extends BaseActivity { setTouchDelegate(mIvClosePhone, 40); mIvClosePhone.setOnClickListener(v -> mEtUserPhone.setText("")); initDatabase(); - mTvChangePwd.setOnClickListener(v->ARouter.getInstance() - .build(PathConfig.PATH_MODULE_COMMON_ACTIVITY_FORGET_PWD) - .navigation()); + mTvChangePwd.setOnClickListener(v -> ARouter.getInstance() + .build(PathConfig.PATH_MODULE_COMMON_ACTIVITY_FORGET_PWD) + .navigation()); } private void initDatabase() { @@ -213,100 +213,100 @@ public class LoginActivity extends BaseActivity { String obj = gson.toJson(info); RequestBody body = RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"), obj); RetrofitManager.getInstance() - .create(BaseApiService.class) - .doLogin(body) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { + .create(BaseApiService.class) + .doLogin(body) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { - } + } - @Override - public void onNext(BaseSuccessBean baseUserBean) { + @Override + public void onNext(BaseSuccessBean baseUserBean) { - 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); - boolean tag = false; - if (appTokenUser.getRoles() == null || appTokenUser.getRoles().size() <= 0) { - ToastUtils.show("您不是区域管理员,无法登录"); - } else { - for (int i = 0; i < appTokenUser.getRoles().size(); i++) { - if (PathConfig.USER_TYPE_CENTER.equals(appTokenUser.getRoles().get(i).getRoleId())) { - tag = true; - break; + 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); + boolean tag = false; + if (appTokenUser.getRoles() == null || appTokenUser.getRoles().size() <= 0) { + ToastUtils.show("您不是区域管理员,无法登录"); + } else { + for (int i = 0; i < appTokenUser.getRoles().size(); i++) { + if (PathConfig.USER_TYPE_CENTER.equals(appTokenUser.getRoles().get(i).getRoleId())) { + tag = true; + break; + } } } - } - refreshLoginState(12); - if (tag) { - //专管员 - UserLgUtils.setLoginInfo(loginUserInfo); - UserLgUtils.setPassword(pwd); - 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()); - GlobalProvider.save(mActivity, "userId", appTokenUser.getId()); - GlobalProvider.save(mActivity, "userName", appTokenUser.getUsername()); - GlobalProvider.save(mActivity, "name", appTokenUser.getName()); - if (isRememberPwd) { + refreshLoginState(12); + if (tag) { + //专管员 + UserLgUtils.setLoginInfo(loginUserInfo); UserLgUtils.setPassword(pwd); + 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()); + GlobalProvider.save(mActivity, "userId", appTokenUser.getId()); + GlobalProvider.save(mActivity, "userName", appTokenUser.getUsername()); + GlobalProvider.save(mActivity, "name", appTokenUser.getName()); + if (isRememberPwd) { + UserLgUtils.setPassword(pwd); + } + ARouter.getInstance() + .build(PathConfig.PATH_MODULE_MAIN_NAVIGATION_HOME) + .withString(LionActions.EXTRA_PUSH_MSG, getIntent().getStringExtra(LionActions.EXTRA_PUSH_MSG)) + .withInt(LionActions.EXTRA_MSG_TYPE, getIntent().getIntExtra(LionActions.EXTRA_MSG_TYPE, -1)) + .withInt("status", getIntent().getIntExtra("status", -1)) + .withString("to", getIntent().getStringExtra("to")) + .withString("time", getIntent().getStringExtra("time")) + .withString(LionActions.EXTRA_MSG_CONF_ID, getIntent().getStringExtra(LionActions.EXTRA_MSG_CONF_ID)) + .navigation(); + finish(); + } else { + //不是网格员 + ToastUtils.show("您不是区域管理员,无法登录"); } - ARouter.getInstance() - .build(PathConfig.PATH_MODULE_MAIN_NAVIGATION_HOME) - .withString(LionActions.EXTRA_PUSH_MSG, getIntent().getStringExtra(LionActions.EXTRA_PUSH_MSG)) - .withInt(LionActions.EXTRA_MSG_TYPE, getIntent().getIntExtra(LionActions.EXTRA_MSG_TYPE, -1)) - .withInt("status", getIntent().getIntExtra("status", -1)) - .withString("to", getIntent().getStringExtra("to")) - .withString("time", getIntent().getStringExtra("time")) - .withString(LionActions.EXTRA_MSG_CONF_ID, getIntent().getStringExtra(LionActions.EXTRA_MSG_CONF_ID)) - .navigation(); - finish(); } else { - //不是网格员 - ToastUtils.show("您不是区域管理员,无法登录"); + ToastUtils.show("登录失败,请稍后重试."); + refreshLoginState(12); } - } else { + } catch (Exception e) { + e.printStackTrace(); ToastUtils.show("登录失败,请稍后重试."); refreshLoginState(12); } - } catch (Exception e) { - e.printStackTrace(); + } else { ToastUtils.show("登录失败,请稍后重试."); refreshLoginState(12); } - } else { - ToastUtils.show("登录失败,请稍后重试."); + } + + @Override + public void onError(Throwable e) { + e.printStackTrace(); refreshLoginState(12); + int i = ExceptionHandler.handleExceptionWithLogin(e); + if (i == 40502) { + checkPermission(); + } } - } - @Override - public void onError(Throwable e) { - e.printStackTrace(); - refreshLoginState(12); - int i = ExceptionHandler.handleExceptionWithLogin(e); - if (i == 40502) { - checkPermission(); + @Override + public void onComplete() { + } - } - - @Override - public void onComplete() { - - } - }); + }); } /** @@ -314,44 +314,46 @@ public class LoginActivity extends BaseActivity { */ private void checkPermission() { RetrofitManager.getInstance() - .create(BaseApiService.class) - .doCheckAppVersion(BaseUrlApi.APP_VERSION_ID) - .compose(RxTransformer.getTransformer()) - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { + .create(BaseApiService.class) + .doCheckAppVersion(BaseUrlApi.APP_VERSION_ID) + .compose(RxTransformer.getTransformer()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { - } + } - @Override - public void onNext(VersionBean successBean) { - if (successBean != null && successBean.getData() > 0) { - if (CheckUpdateUtils.checkcode(LoginActivity.this, successBean.getData() + "")) { - startDownloadApk(); + @Override + public void onNext(VersionBean successBean) { + if (successBean != null && successBean.getData() > 0) { + if (CheckUpdateUtils.checkcode(LoginActivity.this, successBean.getData() + "")) { + startDownloadApk(); + } } } - } - @Override - public void onError(Throwable e) { + @Override + public void onError(Throwable e) { - } + } - @Override - public void onComplete() { + @Override + public void onComplete() { - } - }); + } + }); } + /** * 开始下载Apk */ private void startDownloadApk() { - ToastUtils.show("检测到新版本,开始下载,请在通知栏查看下载进度"); + ToastUtils.show("检测到新版本,开始下载"); Intent intent = new Intent(mActivity, DownloadService.class); intent.putExtra(Constants.APK_DOWNLOAD_URL, BaseUrlApi.APP_DOWNLOAD_URL); startService(intent); } + @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { diff --git a/mainmodule/src/main/java/com/tengshisoft/mainmodule/base/MainTabActivity.java b/mainmodule/src/main/java/com/tengshisoft/mainmodule/base/MainTabActivity.java index 51cb90c..c8129e5 100644 --- a/mainmodule/src/main/java/com/tengshisoft/mainmodule/base/MainTabActivity.java +++ b/mainmodule/src/main/java/com/tengshisoft/mainmodule/base/MainTabActivity.java @@ -17,6 +17,9 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; +import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import androidx.core.content.ContextCompat; import androidx.viewpager2.widget.ViewPager2; @@ -26,7 +29,6 @@ import com.alibaba.android.arouter.launcher.ARouter; import com.baidu.location.BDLocation; import com.google.gson.JsonObject; import com.gyf.immersionbar.ImmersionBar; -import com.hjq.toast.ToastUtils; import com.huawei.ecterminalsdk.base.TsdkConfJoinParam; import com.huawei.ecterminalsdk.base.TsdkLocalAddress; import com.huawei.ecterminalsdk.models.TsdkManager; @@ -63,6 +65,7 @@ import com.tenlionsoft.baselib.core.beans.UserExpandInfoBean; import com.tenlionsoft.baselib.core.db.AppDatabase; import com.tenlionsoft.baselib.core.network.update.CheckUpdateUtils; import com.tenlionsoft.baselib.core.network.update.service.DownloadService; +import com.tenlionsoft.baselib.core.network.update.utils.ApkUtils; import com.tenlionsoft.baselib.core.network.update.utils.Constants; import com.tenlionsoft.baselib.core.retrofit_net.BaseUrlApi; import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; @@ -74,11 +77,13 @@ import com.tenlionsoft.baselib.core.widget.base.BaseFragment; import com.tenlionsoft.baselib.core.widget.base.BaseViewPage2Adapter; import com.tenlionsoft.baselib.core.widget.base.FragmentUtils; import com.tenlionsoft.baselib.core.widget.base.NotificationUtils; +import com.tenlionsoft.baselib.core.widget.views.CenterProgressUpdateView; import com.tenlionsoft.baselib.utils.AppUtils; import com.tenlionsoft.baselib.utils.GpsUtils; import com.tenlionsoft.baselib.utils.IntentWrapper; import com.tenlionsoft.baselib.utils.KeyBoardListener; import com.tenlionsoft.baselib.utils.LogUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import com.tenlionsoft.baselib.utils.UserLgUtils; @@ -86,6 +91,7 @@ import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import java.io.File; import java.util.ArrayList; import java.util.List; @@ -135,6 +141,9 @@ public class MainTabActivity extends BaseActivity implements LoginView, LocalBro BroadcastConstant.ACTION_FIRST_CHANGE_PWD}; private String mConfId; private ProgressDialog mDialog; + private CenterProgressUpdateView mUpdateView; + private File mApkFile; + private ActivityResultLauncher mInstallLauncher; @Override protected int setLayoutId() { @@ -148,6 +157,20 @@ public class MainTabActivity extends BaseActivity implements LoginView, LocalBro refreshView(STATE_LOAD_SUCCESS); mFragments = new ArrayList<>(); initContentView(); + mInstallLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), + result -> { + boolean b = false; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && Build.VERSION.SDK_INT < Build.VERSION_CODES.R) { + LogUtils.e("是否可以安装:" + b); + b = getPackageManager().canRequestPackageInstalls(); + if (b) { + installApk(mApkFile); + } else { + mApkFile = null; + ToastUtils.showLong("您未授权安装未知应用,无法安装,请前往设置自行授权."); + } + } + }); getAppConfig(); //不能拨打 getUserExpand(); @@ -243,6 +266,15 @@ public class MainTabActivity extends BaseActivity implements LoginView, LocalBro } } + /** + * 更新dialog + */ + private void showUpdateProgress() { + mUpdateView = new CenterProgressUpdateView.DialogBuilder(mActivity) + .build(); + mUpdateView.show(); + } + /** * 打开悬浮窗权限提示 */ @@ -366,6 +398,7 @@ public class MainTabActivity extends BaseActivity implements LoginView, LocalBro } } + /** * App版本校验 */ @@ -406,7 +439,8 @@ public class MainTabActivity extends BaseActivity implements LoginView, LocalBro * 开始下载Apk */ private void startDownloadApk() { - ToastUtils.show("检测到新版本,开始下载,请在通知栏查看下载进度"); + ToastUtils.show("检测到新版本,开始下载."); + showUpdateProgress(); Intent intent = new Intent(mActivity, DownloadService.class); intent.putExtra(Constants.APK_DOWNLOAD_URL, BaseUrlApi.APP_DOWNLOAD_URL); startService(intent); @@ -466,6 +500,9 @@ public class MainTabActivity extends BaseActivity implements LoginView, LocalBro filter.addAction(PathConfig.ACTION_LOGIN_OUT);//强制退出 filter.addAction(PathConfig.ACTION_SOCKET_NOT_ALIVE);//重新连接socket filter.addAction(PathConfig.ACTION_RELINK_HW_RHTX);//重新登录融合通信 + filter.addAction(PathConfig.ACTION_UPDATE_SUCCESS);//下载成功 + filter.addAction(PathConfig.ACTION_UPDATE_ERROR);//下载失败 + filter.addAction(PathConfig.ACTION_UPDATE_PROGRESS);//进度更新 registerReceiver(mReceiver, filter); } @@ -580,7 +617,7 @@ public class MainTabActivity extends BaseActivity implements LoginView, LocalBro if (mDialog != null && mDialog.isShowing()) { mDialog.dismiss(); } - ToastUtils.show("登录失败,请稍后重试"); + ToastUtils.show("融合通信登录失败,请稍后重试"); LogUtils.e("登录失败"); Intent intent = new Intent(); intent.setAction(PathConfig.ACTION_CALL_LOGIN_FAIL); @@ -600,7 +637,7 @@ public class MainTabActivity extends BaseActivity implements LoginView, LocalBro mFragments.get(2).refreshContentView("success"); } } - ToastUtils.show("登录成功"); + ToastUtils.show("融合通信登录成功"); int status = getIntent().getIntExtra("status", -1); if (status != -1) { if (status == 111) { @@ -805,10 +842,68 @@ public class MainTabActivity extends BaseActivity implements LoginView, LocalBro int logout = LoginMangerV2.getInstance().logout(); LogUtils.e("退出登录===" + logout); getAppConfig(); + } else if (PathConfig.ACTION_UPDATE_ERROR.equals(action)) { + //下载失败 + if (mUpdateView != null && mUpdateView.isShowing()) { + mUpdateView.dismiss(); + } + } else if (PathConfig.ACTION_UPDATE_PROGRESS.equals(action)) { + //进度更新 + if (mUpdateView != null && mUpdateView.isShowing()) { + int progress = intent.getIntExtra("progress", 0); + LogUtils.e("当前进度:" + progress); + mUpdateView.setCurrentProgress(progress); + } + } else if (PathConfig.ACTION_UPDATE_SUCCESS.equals(action)) { + //下载成功 + if (mUpdateView != null && mUpdateView.isShowing()) { + mUpdateView.dismiss(); + } + //判断是否可以安装 + File apkFile = (File) intent.getSerializableExtra("apkFile"); + installApk(apkFile); } } + } + + /** + * 安装Apk + * + * @param file + */ + private void installApk(File file) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && Build.VERSION.SDK_INT < Build.VERSION_CODES.R) { + boolean b = getPackageManager().canRequestPackageInstalls(); + if (b) { + ApkUtils.installAPk(mActivity, file); + } else { + //申请权限 + mApkFile = file; + Uri packageURI = Uri.parse("package:" + mActivity.getPackageName()); + Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, packageURI); + mInstallLauncher.launch(intent); +// startActivityForResult(intent, 298); + } + } else { + ApkUtils.installAPk(mActivity, file); + } + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (requestCode == 298) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && Build.VERSION.SDK_INT < Build.VERSION_CODES.R) { + boolean b = getPackageManager().canRequestPackageInstalls(); + if (b) { + installApk(mApkFile); + } else { + ToastUtils.showLong("您未授权\"安装未知应用\"权限,导致无法安装软件,请自行前往设置授权。"); + } + } + } } /** diff --git a/mainmodule/src/main/java/com/tengshisoft/mainmodule/base/SplashActivity.java b/mainmodule/src/main/java/com/tengshisoft/mainmodule/base/SplashActivity.java index 61b2f18..c718e34 100644 --- a/mainmodule/src/main/java/com/tengshisoft/mainmodule/base/SplashActivity.java +++ b/mainmodule/src/main/java/com/tengshisoft/mainmodule/base/SplashActivity.java @@ -5,7 +5,7 @@ import android.view.View; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import com.gyf.immersionbar.ImmersionBar; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.constant.LionActions; import com.tenlionsoft.baselib.constant.PathConfig; import com.tenlionsoft.baselib.constant.PermissionConstants; diff --git a/modulemap/src/main/java/com/tengshisoft/modulemap/activitys/SelPointActivity.java b/modulemap/src/main/java/com/tengshisoft/modulemap/activitys/SelPointActivity.java index 32afed4..9bd2506 100644 --- a/modulemap/src/main/java/com/tengshisoft/modulemap/activitys/SelPointActivity.java +++ b/modulemap/src/main/java/com/tengshisoft/modulemap/activitys/SelPointActivity.java @@ -27,7 +27,7 @@ import com.baidu.mapapi.search.geocode.GeoCoder; import com.baidu.mapapi.search.geocode.OnGetGeoCoderResultListener; import com.baidu.mapapi.search.geocode.ReverseGeoCodeOption; import com.baidu.mapapi.search.geocode.ReverseGeoCodeResult; -import com.hjq.toast.ToastUtils; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tengshisoft.modulemap.R; import com.tengshisoft.modulemap.R2; import com.tengshisoft.modulemap.common.Location84; @@ -35,6 +35,7 @@ import com.tengshisoft.modulemap.common.PointUtils; import com.tenlionsoft.baselib.app.BaseAppContext; import com.tenlionsoft.baselib.constant.PathConfig; import com.tenlionsoft.baselib.core.widget.base.BaseActivity; +import com.tenlionsoft.baselib.utils.ToastUtils; import com.tenlionsoft.baselib.utils.UIUtil; import butterknife.BindView;