Commit 8b47b0b74bb2e8d40dd6d668d5f71f3583aa1ded

Authored by 韩亚云
2 parents 304ac9a7 27acc1f9

Merge branch 'master' of bj.gitlab.cnlive.com:cnlive-team/ModulePedometer

moudle_pedometer/src/main/AndroidManifest.xml
@@ -135,12 +135,15 @@ @@ -135,12 +135,15 @@
135 android:process=":step" /> 135 android:process=":step" />
136 <activity 136 <activity
137 android:name="com.cnlive.moudle.pedometer.ui.activity.UploadFailDetailActivity" 137 android:name="com.cnlive.moudle.pedometer.ui.activity.UploadFailDetailActivity"
138 - android:launchMode="singleTask"  
139 - /> 138 + android:launchMode="singleTask" />
140 <!--全部成绩详情页--> 139 <!--全部成绩详情页-->
141 <activity 140 <activity
142 android:name="com.cnlive.moudle.pedometer.ui.activity.ALLScoreDetailActivity" 141 android:name="com.cnlive.moudle.pedometer.ui.activity.ALLScoreDetailActivity"
143 android:launchMode="singleTask" /> 142 android:launchMode="singleTask" />
  143 + <!--进行中的活动-->
  144 + <activity
  145 + android:name="com.cnlive.moudle.pedometer.ui.activity.OnGoingActivity"
  146 + android:launchMode="singleTask" />
144 <!--************************************************路径工具**********************************************--> 147 <!--************************************************路径工具**********************************************-->
145 <service 148 <service
146 android:name="com.cnlive.moudle.collectionTrace.service.CollKeepLiveService" 149 android:name="com.cnlive.moudle.collectionTrace.service.CollKeepLiveService"
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/presenter/ALLScoreDetailFragmentPresenter.java
@@ -19,6 +19,7 @@ import com.cnlive.moudle.pedometer.utils.QMUITipDialogUtil; @@ -19,6 +19,7 @@ import com.cnlive.moudle.pedometer.utils.QMUITipDialogUtil;
19 import com.example.moudle_pedometer.R; 19 import com.example.moudle_pedometer.R;
20 import com.hannesdorfmann.mosby3.mvp.MvpBasePresenter; 20 import com.hannesdorfmann.mosby3.mvp.MvpBasePresenter;
21 21
  22 +import java.util.ArrayList;
22 import java.util.List; 23 import java.util.List;
23 24
24 public class ALLScoreDetailFragmentPresenter extends MvpBasePresenter<ALLScoreDetailFragmentView> { 25 public class ALLScoreDetailFragmentPresenter extends MvpBasePresenter<ALLScoreDetailFragmentView> {
@@ -56,6 +57,7 @@ public class ALLScoreDetailFragmentPresenter extends MvpBasePresenter&lt;ALLScoreDe @@ -56,6 +57,7 @@ public class ALLScoreDetailFragmentPresenter extends MvpBasePresenter&lt;ALLScoreDe
56 if (mClient == null) { 57 if (mClient == null) {
57 mClient = new LBSTraceClient(context); 58 mClient = new LBSTraceClient(context);
58 } 59 }
  60 + List<LatLng> allResultList = new ArrayList<>();
59 MyMapUtil.queryHistoryTrace(context, mClient, entityName, startTime, endTime, new MyMapUtil.CallBack() { 61 MyMapUtil.queryHistoryTrace(context, mClient, entityName, startTime, endTime, new MyMapUtil.CallBack() {
60 @Override 62 @Override
61 public void success(List<LatLng> resultPoints) { 63 public void success(List<LatLng> resultPoints) {
@@ -66,6 +68,7 @@ public class ALLScoreDetailFragmentPresenter extends MvpBasePresenter&lt;ALLScoreDe @@ -66,6 +68,7 @@ public class ALLScoreDetailFragmentPresenter extends MvpBasePresenter&lt;ALLScoreDe
66 //用户暂停了 68 //用户暂停了
67 if (runningFinishBean.isPause()) { 69 if (runningFinishBean.isPause()) {
68 MyMapUtil.drawHistoryTrack(context, getView().baiduMap, resultPoints, SortType.asc, R.color.red, R.drawable.icon_start, 0); 70 MyMapUtil.drawHistoryTrack(context, getView().baiduMap, resultPoints, SortType.asc, R.color.red, R.drawable.icon_start, 0);
  71 + allResultList.addAll(resultPoints);
69 } 72 }
70 //用户没有暂停 73 //用户没有暂停
71 else { 74 else {
@@ -76,6 +79,30 @@ public class ALLScoreDetailFragmentPresenter extends MvpBasePresenter&lt;ALLScoreDe @@ -76,6 +79,30 @@ public class ALLScoreDetailFragmentPresenter extends MvpBasePresenter&lt;ALLScoreDe
76 } 79 }
77 80
78 } 81 }
  82 + //如果用户点击暂停按钮,进行分段查询
  83 + if (runningFinishBean.isPause()) {
  84 + long continueTime = 0;
  85 + if (!TextUtils.isEmpty(runningFinishBean.getUserContinueTime())) {
  86 + continueTime = Long.parseLong(runningFinishBean.getUserContinueTime());
  87 + }
  88 + long userFinishTime = 0;
  89 + if (!TextUtils.isEmpty(runningFinishBean.getUserFinishTime())) {
  90 + userFinishTime = Long.parseLong(runningFinishBean.getUserFinishTime());
  91 + }
  92 + //开始进行轨迹查询
  93 + MyMapUtil.queryHistoryTrace(context, mClient, entityName, continueTime, userFinishTime, new MyMapUtil.CallBack() {
  94 + @Override
  95 + public void success(List<LatLng> resultPoints) {
  96 + if (null != resultPoints && resultPoints.size() > 1) {
  97 + MyMapUtil.drawHistoryTrack(context, getView().baiduMap, resultPoints, SortType.asc, R.color.red, 0, R.drawable.icon_end);
  98 + //设置地图自动缩放
  99 + allResultList.addAll(resultPoints);
  100 + MyMapUtil.setMapAutoZoom(getView().baiduMap, allResultList, -2f);
  101 + }
  102 + }
  103 + });
  104 +//
  105 + }
79 } 106 }
80 //查询失败 107 //查询失败
81 else { 108 else {
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/presenter/OnGoingFragmentPresenter.java 0 → 100644
  1 +package com.cnlive.moudle.pedometer.frame.presenter;
  2 +
  3 +import com.cnlive.moudle.pedometer.frame.view.OnGoingFragmentView;
  4 +import com.hannesdorfmann.mosby3.mvp.MvpBasePresenter;
  5 +
  6 +public class OnGoingFragmentPresenter extends MvpBasePresenter<OnGoingFragmentView> {
  7 +}
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/OnGoingFragmentView.java 0 → 100644
  1 +package com.cnlive.moudle.pedometer.frame.view;
  2 +
  3 +import android.app.Activity;
  4 +import android.content.Context;
  5 +import android.text.TextUtils;
  6 +import android.util.Log;
  7 +import android.view.View;
  8 +import android.widget.LinearLayout;
  9 +
  10 +import com.alibaba.android.arouter.launcher.ARouter;
  11 +import com.baidu.mapapi.map.BaiduMap;
  12 +import com.baidu.mapapi.map.MapView;
  13 +import com.baidu.mapapi.map.UiSettings;
  14 +import com.baidu.mapapi.model.LatLng;
  15 +import com.baidu.mapapi.utils.DistanceUtil;
  16 +import com.baidu.trace.LBSTraceClient;
  17 +import com.baidu.trace.model.SortType;
  18 +import com.cnlive.libs.base.util.StatusBarUtil2;
  19 +import com.cnlive.moudle.pedometer.commonInfo.CommonInfo;
  20 +import com.cnlive.moudle.pedometer.model.Constant;
  21 +import com.cnlive.moudle.pedometer.net.bean.RunRaceDetailInfo;
  22 +import com.cnlive.moudle.pedometer.ui.activity.RaceRecordActivity;
  23 +import com.cnlive.moudle.pedometer.ui.activity.RegistrationInfoActivity;
  24 +import com.cnlive.moudle.pedometer.ui.activity.TakePartActivity;
  25 +import com.cnlive.moudle.pedometer.ui.fragment.OnGoingFragment;
  26 +import com.cnlive.moudle.pedometer.ui.widget.SelectDialog;
  27 +import com.cnlive.moudle.pedometer.ui.widget.TipDialog;
  28 +import com.cnlive.moudle.pedometer.utils.GsonUtil;
  29 +import com.cnlive.moudle.pedometer.utils.MyMapUtil;
  30 +import com.cnlive.moudle.pedometer.utils.QMUITipDialogUtil;
  31 +import com.cnlive.moudle.pedometer.utils.ScreenUtil;
  32 +import com.cnlive.moudle.pedometer.utils.StepUtil;
  33 +import com.cnlive.moudle.pedometer.utils.TimeUtil;
  34 +import com.cnlive.strike.application.GlideApp;
  35 +import com.example.moudle_pedometer.R;
  36 +import com.hannesdorfmann.mosby3.mvp.MvpView;
  37 +import com.qmuiteam.qmui.util.QMUIStatusBarHelper;
  38 +import com.sothree.slidinguppanel.SlidingUpPanelLayout;
  39 +
  40 +import java.util.List;
  41 +
  42 +public class OnGoingFragmentView implements MvpView {
  43 + private OnGoingFragment fragment;
  44 + private BaiduMap baiduMap;
  45 + private MapView mMapView;
  46 + private UiSettings mUiSettings;
  47 + public RunRaceDetailInfo runRaceDetailInfo;
  48 +
  49 + public OnGoingFragmentView(OnGoingFragment fragment) {
  50 + this.fragment = fragment;
  51 + }
  52 +
  53 + public Activity getContext() {
  54 + return fragment == null ? null : fragment.getActivity();
  55 + }
  56 +
  57 + public void initView(RunRaceDetailInfo runRaceDetailInfo) {
  58 +
  59 + if (fragment.getActivity() == null) {
  60 + return;
  61 + }
  62 + this.runRaceDetailInfo = runRaceDetailInfo;
  63 + //轨迹开始时间
  64 + long startTime = 0;
  65 + //轨迹结束时间
  66 + long endTime = 0;
  67 + if (!TextUtils.isEmpty(runRaceDetailInfo.getStartTime()) && !TextUtils.isEmpty(runRaceDetailInfo.getEndTime()) && !TextUtils.isEmpty(runRaceDetailInfo.getEntityName())) {
  68 + startTime = Long.parseLong(runRaceDetailInfo.getStartTime());
  69 + endTime = Long.parseLong(runRaceDetailInfo.getEndTime());
  70 + //todo 注意后续查询历史轨迹的时候,必须查数据库中的时间,因为涉及到历史运动恢复,所以不能用这个sp文件中的,这里设置,只是为了在服务启动成功后,
  71 +
  72 + //显示地图
  73 + fragment.binding.mapView.setVisibility(View.VISIBLE);
  74 + //显示底部滑动卡片
  75 +// fragment.binding.slidingLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED);
  76 + //隐藏空视图
  77 + fragment.binding.emptyLayout.setVisibility(View.GONE);
  78 + //显示立即报名按钮
  79 +// fragment.binding.includeStreet.rlStartBtn.setVisibility(View.VISIBLE);
  80 + //设置底部卡片第一次可滑动的位置
  81 + fragment.binding.slidingLayout.setAnchorPoint(0.6f);
  82 + fragment.binding.slidingLayout.addPanelSlideListener(new SlidingUpPanelLayout.PanelSlideListener() {
  83 + @Override
  84 + public void onPanelSlide(View panel, float slideOffset) {
  85 + //设置顶层卡片特效
  86 +// if (slideOffset > 0.6) {
  87 +// fragment.binding.llTop.setVisibility(View.VISIBLE);
  88 +//// ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) fragment.binding.scrollView.getLayoutParams();
  89 +//// params.topMargin = ScreenUtil.dip2px(getContext(), 50);
  90 +//// fragment.binding.scrollView.setLayoutParams(params);
  91 +// } else {
  92 +// fragment.binding.llTop.setVisibility(View.GONE);
  93 +// }
  94 + if (slideOffset <= 0.6) {
  95 + if (fragment.binding.flTop.getVisibility() == View.VISIBLE) {
  96 + QMUIStatusBarHelper.setStatusBarLightMode(fragment.getActivity());
  97 + StatusBarUtil2.setColor(fragment.getActivity(), getContext().getResources().getColor(R.color.white), 0);
  98 + fragment.binding.flTop.setVisibility(View.GONE);
  99 + }
  100 + }
  101 + //设置卡片缩放特效
  102 + if (slideOffset >= 0 && slideOffset <= 1) {
  103 + int leakWidth = (int) (ScreenUtil.dip2px(getContext(), 15) / 0.6);
  104 + LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
  105 + int current = (int) (leakWidth * slideOffset);
  106 +// Log.e(TAG, "current: " + current + ",leakWidth:" + leakWidth + ",ScreenUtil:" + ScreenUtil.dip2px(getContext(), 15));
  107 + if (slideOffset == 0) {
  108 + layoutParams.setMargins(ScreenUtil.dip2px(getContext(), 15), 0, ScreenUtil.dip2px(getContext(), 15), 0);
  109 + fragment.binding.includeStreet.llFirstPanelRoot.setLayoutParams(layoutParams);
  110 + fragment.binding.includeStreet.llBottomPanel.setLayoutParams(layoutParams);
  111 + }
  112 + if (leakWidth - ScreenUtil.dip2px(getContext(), current) <= ScreenUtil.dip2px(getContext(), 15)) {
  113 + if (leakWidth - ScreenUtil.dip2px(getContext(), current) >= 0) {
  114 + layoutParams.setMargins(leakWidth - ScreenUtil.dip2px(getContext(), current), 0, leakWidth - ScreenUtil.dip2px(getContext(), current), 0);
  115 + } else {
  116 + layoutParams.setMargins(0, 0, 0, 0);
  117 + }
  118 +
  119 + fragment.binding.includeStreet.llFirstPanelRoot.setLayoutParams(layoutParams);
  120 + fragment.binding.includeStreet.llBottomPanel.setLayoutParams(layoutParams);
  121 + }
  122 +
  123 + }
  124 +
  125 +// if (slideOffset == 0) {
  126 +// //在初始位置
  127 +// if (fragment.binding.includeStreet.rlStartBtn.getVisibility() == View.GONE) {
  128 +// fragment.binding.includeStreet.rlStartBtn.setVisibility(View.VISIBLE);
  129 +// }
  130 +//
  131 +// } else {
  132 +// //用户进行滑动
  133 +// if (fragment.binding.includeStreet.rlStartBtn.getVisibility() == View.VISIBLE) {
  134 +// fragment.binding.includeStreet.rlStartBtn.setVisibility(View.GONE);
  135 +// }
  136 +// }
  137 + }
  138 +
  139 + @Override
  140 + public void onPanelStateChanged(View panel, SlidingUpPanelLayout.PanelState previousState, SlidingUpPanelLayout.PanelState newState) {
  141 +// Log.e(TAG, "previousState: " + previousState + ",newState:" + newState);
  142 + if (previousState == SlidingUpPanelLayout.PanelState.ANCHORED && newState == SlidingUpPanelLayout.PanelState.DRAGGING) {
  143 + if (fragment.binding.flTop.getVisibility() != View.VISIBLE) {
  144 + QMUIStatusBarHelper.setStatusBarDarkMode(fragment.getActivity());
  145 + StatusBarUtil2.setColor(fragment.getActivity(), getContext().getResources().getColor(R.color.run_main_bg), 0);
  146 + fragment.binding.flTop.setVisibility(View.VISIBLE);
  147 +
  148 + }
  149 + } else if (previousState == SlidingUpPanelLayout.PanelState.DRAGGING && newState == SlidingUpPanelLayout.PanelState.EXPANDED) {
  150 + if (fragment.binding.flTop.getVisibility() != View.VISIBLE) {
  151 + QMUIStatusBarHelper.setStatusBarDarkMode(fragment.getActivity());
  152 + StatusBarUtil2.setColor(fragment.getActivity(), getContext().getResources().getColor(R.color.run_main_bg), 0);
  153 + fragment.binding.flTop.setVisibility(View.VISIBLE);
  154 +
  155 + }
  156 + } else if (previousState == SlidingUpPanelLayout.PanelState.EXPANDED && newState == SlidingUpPanelLayout.PanelState.DRAGGING) {
  157 + QMUIStatusBarHelper.setStatusBarLightMode(fragment.getActivity());
  158 + StatusBarUtil2.setColor(fragment.getActivity(), getContext().getResources().getColor(R.color.white), 0);
  159 +
  160 + if (fragment.binding.flTop.getVisibility() != View.GONE) {
  161 + fragment.binding.flTop.setVisibility(View.GONE);
  162 + }
  163 + } else if (previousState == SlidingUpPanelLayout.PanelState.DRAGGING && newState == SlidingUpPanelLayout.PanelState.ANCHORED) {
  164 + QMUIStatusBarHelper.setStatusBarLightMode(fragment.getActivity());
  165 + StatusBarUtil2.setColor(fragment.getActivity(), getContext().getResources().getColor(R.color.white), 0);
  166 +
  167 + if (fragment.binding.flTop.getVisibility() != View.GONE) {
  168 + fragment.binding.flTop.setVisibility(View.GONE);
  169 + }
  170 + }
  171 +
  172 + }
  173 + });
  174 + //卡片滑动上层标题
  175 + fragment.binding.llTopBack.setOnClickListener(new View.OnClickListener() {
  176 + @Override
  177 + public void onClick(View view) {
  178 + if (getContext() == null) {
  179 + return;
  180 + }
  181 + fragment.getActivity().finish();
  182 + }
  183 + });
  184 + /*************************设置相关页面数据***************************/
  185 + if (runRaceDetailInfo.getFenceId() != null) {
  186 + //设置围栏ID
  187 + CommonInfo.setFenceId(getContext(), Integer.parseInt(runRaceDetailInfo.getFenceId()));
  188 + }
  189 + //设置标题
  190 + if (!TextUtils.isEmpty(runRaceDetailInfo.getTitle())) {
  191 + fragment.binding.includeStreet.tvRaceTitle.setText(runRaceDetailInfo.getTitle());
  192 + //根据标题字数动态设置卡片高度
  193 + if (runRaceDetailInfo.getTitle().length() > 19) {
  194 + fragment.binding.slidingLayout.setPanelHeight(ScreenUtil.dip2px(getContext(), 200));
  195 + } else {
  196 + fragment.binding.slidingLayout.setPanelHeight(ScreenUtil.dip2px(getContext(), 181));
  197 + }
  198 + fragment.binding.slidingLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED);
  199 + }
  200 + //设置活动地点
  201 + if (!TextUtils.isEmpty(runRaceDetailInfo.getAddress())) {
  202 + fragment.binding.includeStreet.tvAddress.setText(runRaceDetailInfo.getAddress());
  203 + //设置活动距离
  204 + if (!TextUtils.isEmpty(runRaceDetailInfo.getMileage())) {
  205 + fragment.binding.includeStreet.tvAddress.append("\t\t" + runRaceDetailInfo.getMileage());
  206 + }
  207 + }
  208 +
  209 + //设置起点
  210 + if (!TextUtils.isEmpty(runRaceDetailInfo.getStartLocation())) {
  211 + fragment.binding.includeStreet.tvStartAddr.setText(runRaceDetailInfo.getStartLocation());
  212 + }
  213 + //设置终点
  214 + if (!TextUtils.isEmpty(runRaceDetailInfo.getEndLocation())) {
  215 + fragment.binding.includeStreet.tvEndAddr.setText(runRaceDetailInfo.getEndLocation());
  216 + }
  217 + //设置起始报名时间
  218 + if (!TextUtils.isEmpty(TimeUtil.getStampToTime(runRaceDetailInfo.getSign_up_start_time(), "yyyy.MM.dd"))) {
  219 + fragment.binding.includeStreet.tvSignUpStartTime.setText(TimeUtil.getStampToTime(runRaceDetailInfo.getSign_up_start_time(), "yyyy.MM.dd"));
  220 +
  221 + }
  222 + //设置终止报名时间
  223 + if (!TextUtils.isEmpty(TimeUtil.getStampToTime(runRaceDetailInfo.getSign_up_end_time(), "yyyy.MM.dd"))) {
  224 + fragment.binding.includeStreet.tvSignUpEndTime.setText(TimeUtil.getStampToTime(runRaceDetailInfo.getSign_up_end_time(), "yyyy.MM.dd"));
  225 + }
  226 + //设置活动开始时间
  227 + if (!TextUtils.isEmpty(TimeUtil.getStampToTime(runRaceDetailInfo.getStart_time(), "yyyy.MM.dd"))) {
  228 + fragment.binding.includeStreet.tvActiveStartTime.setText(TimeUtil.getStampToTime(runRaceDetailInfo.getStart_time(), "yyyy.MM.dd"));
  229 + }
  230 + //设置活动结束时间
  231 + if (!TextUtils.isEmpty(TimeUtil.getStampToTime(runRaceDetailInfo.getEnd_time(), "yyyy.MM.dd"))) {
  232 + fragment.binding.includeStreet.tvActiveEndTime.setText(TimeUtil.getStampToTime(runRaceDetailInfo.getEnd_time(), "yyyy.MM.dd"));
  233 + }
  234 + //设置活动类型
  235 + if (!TextUtils.isEmpty(runRaceDetailInfo.getEventType())) {
  236 + fragment.binding.includeStreet.tvEventType.setText(runRaceDetailInfo.getEventType());
  237 + }
  238 + //设置参加人数
  239 + fragment.binding.includeStreet.tvSignPerson.setText(runRaceDetailInfo.getSignupNum() + "");
  240 + //设置报名完成的头像
  241 + List<String> joinFaceIcon = runRaceDetailInfo.getFaceUrl();
  242 + if (joinFaceIcon != null && joinFaceIcon.size() > 0) {
  243 + fragment.binding.includeStreet.fiveJoinPerson.setVisibility(View.VISIBLE);
  244 + //设置头像数据
  245 + fragment.binding.includeStreet.fiveJoinPerson.initIconData(joinFaceIcon);
  246 + } else {
  247 + fragment.binding.includeStreet.fiveJoinPerson.setVisibility(View.INVISIBLE);
  248 + }
  249 +
  250 + //判断是否显示个人排行榜
  251 + if (runRaceDetailInfo.isIndividualAchievement()) {
  252 + //显示
  253 + fragment.binding.includePersonScore.llPersonScoreRoot.setVisibility(View.VISIBLE);
  254 + //设置完成人数
  255 + if (!TextUtils.isEmpty(runRaceDetailInfo.getFinishNum())) {
  256 + fragment.binding.includeRank.tvFinishPerson.setText(runRaceDetailInfo.getFinishNum());
  257 + }
  258 + //设置个人行走距离
  259 + if (!TextUtils.isEmpty(runRaceDetailInfo.getUserMileage())) {
  260 + fragment.binding.includePersonScore.tvUserDistance.setText(runRaceDetailInfo.getUserMileage());
  261 + }
  262 + //设置行走步数
  263 + if (!TextUtils.isEmpty(runRaceDetailInfo.getStep())) {
  264 + fragment.binding.includePersonScore.tvStep.setText(runRaceDetailInfo.getStep());
  265 + }
  266 + //设置用时
  267 + if (!TextUtils.isEmpty(runRaceDetailInfo.getEmployTime())) {
  268 + fragment.binding.includePersonScore.tvEmployTime.setText(runRaceDetailInfo.getEmployTime());
  269 + }
  270 + //设置配速
  271 + if (!TextUtils.isEmpty(runRaceDetailInfo.getPace())) {
  272 + fragment.binding.includePersonScore.tvSpeed.setText(runRaceDetailInfo.getPace());
  273 + }
  274 + } else {
  275 + //隐藏
  276 + fragment.binding.includePersonScore.llPersonScoreRoot.setVisibility(View.GONE);
  277 + }
  278 + //设置是否显示排行榜
  279 + if (runRaceDetailInfo.isRanking()) {
  280 + fragment.binding.includeRank.llRankRoot.setVisibility(View.VISIBLE);
  281 + //设置第一名头像
  282 + GlideApp.with(getContext()).load(runRaceDetailInfo.getFirstFaceUrl()).into(fragment.binding.includeRank.ivFirstPersonUrl);
  283 + //设置排行榜头像
  284 + List<String> finishFaceUrl = runRaceDetailInfo.getFinishFaceUrl();
  285 + if (finishFaceUrl != null && finishFaceUrl.size() > 0) {
  286 + fragment.binding.includeRank.fiveRankPerson.initIconData(finishFaceUrl);
  287 + }
  288 + //设置第一名昵称
  289 + if (!TextUtils.isEmpty(runRaceDetailInfo.getFirstName())) {
  290 + fragment.binding.includeRank.tvKingNickName.setText(runRaceDetailInfo.getFirstName());
  291 + }
  292 + } else {
  293 + fragment.binding.includeRank.llRankRoot.setVisibility(View.GONE);
  294 +
  295 + }
  296 + //设置路线描述
  297 + if (!TextUtils.isEmpty(runRaceDetailInfo.getDescription())) {
  298 + fragment.binding.includeStreetIntroduce.tvStreetIntroduce.setText(runRaceDetailInfo.getDescription());
  299 + }
  300 + //设置路线介绍的图片
  301 + if (!TextUtils.isEmpty(runRaceDetailInfo.getRoadmap())) {
  302 + //设置路线图
  303 + GlideApp.with(getContext()).load(runRaceDetailInfo.getRoadmap()).into(fragment.binding.includeStreetIntroduce.ivRoadMao);
  304 +
  305 + }
  306 +
  307 + //开始按钮点击事件(用户进行滑动滑动)
  308 + fragment.binding.rlScrollViewStartBtn.setVisibility(View.GONE);
  309 + //查看全部成绩点击事件
  310 + fragment.binding.includePersonScore.checkAllCord.setOnClickListener(v -> {
  311 + RaceRecordActivity.newInstance(fragment.getActivity(), runRaceDetailInfo.getTitle());
  312 + });
  313 +
  314 + fragment.binding.includeStreet.fiveJoinPerson.setOnClickListener(v -> {
  315 + TakePartActivity.newInstance(fragment.getActivity());
  316 + });
  317 + //返回按钮
  318 + fragment.binding.ivBack.setOnClickListener(new View.OnClickListener() {
  319 + @Override
  320 + public void onClick(View view) {
  321 + if (fragment.getActivity() == null) {
  322 + return;
  323 + }
  324 + fragment.getActivity().finish();
  325 + }
  326 + });
  327 + //todo 查看排行榜点击
  328 + fragment.binding.includeRank.tvCatAllRank.setOnClickListener(new View.OnClickListener() {
  329 + @Override
  330 + public void onClick(View view) {
  331 + ARouter.getInstance().build("/web/WebViewColorActivity")
  332 + .withString("url", "http://wjjh5test.cnlive.com/cnSportList.html" + "?sid=" + CommonInfo.getUserId(fragment.getActivity()) + "&eventId=" + CommonInfo.getStreetId(fragment.getActivity()))
  333 + .withString("title", "排行榜")
  334 + .navigation(fragment.getActivity());
  335 + }
  336 + });
  337 + }
  338 + }
  339 +}
0 \ No newline at end of file 340 \ No newline at end of file
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/RunRaceDetailFragmentView.java
@@ -14,6 +14,7 @@ import android.support.v4.content.ContextCompat; @@ -14,6 +14,7 @@ import android.support.v4.content.ContextCompat;
14 import android.text.TextUtils; 14 import android.text.TextUtils;
15 import android.util.Log; 15 import android.util.Log;
16 import android.view.View; 16 import android.view.View;
  17 +import android.view.ViewGroup;
17 import android.widget.LinearLayout; 18 import android.widget.LinearLayout;
18 import android.widget.Toast; 19 import android.widget.Toast;
19 20
@@ -57,6 +58,7 @@ import com.baidu.trace.model.SortType; @@ -57,6 +58,7 @@ import com.baidu.trace.model.SortType;
57 import com.cnlive.libs.base.logic.Event; 58 import com.cnlive.libs.base.logic.Event;
58 import com.cnlive.libs.base.logic.callback.FailureCallback; 59 import com.cnlive.libs.base.logic.callback.FailureCallback;
59 import com.cnlive.libs.base.logic.callback.SuccessCallback; 60 import com.cnlive.libs.base.logic.callback.SuccessCallback;
  61 +import com.cnlive.libs.base.util.StatusBarUtil2;
60 import com.cnlive.moudle.pedometer.commonInfo.CollCommonInfo; 62 import com.cnlive.moudle.pedometer.commonInfo.CollCommonInfo;
61 import com.cnlive.moudle.pedometer.commonInfo.CommonInfo; 63 import com.cnlive.moudle.pedometer.commonInfo.CommonInfo;
62 import com.cnlive.moudle.pedometer.model.Constant; 64 import com.cnlive.moudle.pedometer.model.Constant;
@@ -83,6 +85,7 @@ import com.cnlive.moudle.pedometer.utils.TimeUtil; @@ -83,6 +85,7 @@ import com.cnlive.moudle.pedometer.utils.TimeUtil;
83 import com.cnlive.strike.application.GlideApp; 85 import com.cnlive.strike.application.GlideApp;
84 import com.example.moudle_pedometer.R; 86 import com.example.moudle_pedometer.R;
85 import com.hannesdorfmann.mosby3.mvp.MvpView; 87 import com.hannesdorfmann.mosby3.mvp.MvpView;
  88 +import com.qmuiteam.qmui.util.QMUIStatusBarHelper;
86 import com.sothree.slidinguppanel.SlidingUpPanelLayout; 89 import com.sothree.slidinguppanel.SlidingUpPanelLayout;
87 90
88 import java.io.File; 91 import java.io.File;
@@ -242,6 +245,24 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { @@ -242,6 +245,24 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener {
242 fragment.binding.slidingLayout.addPanelSlideListener(new SlidingUpPanelLayout.PanelSlideListener() { 245 fragment.binding.slidingLayout.addPanelSlideListener(new SlidingUpPanelLayout.PanelSlideListener() {
243 @Override 246 @Override
244 public void onPanelSlide(View panel, float slideOffset) { 247 public void onPanelSlide(View panel, float slideOffset) {
  248 + //设置顶层卡片特效
  249 + if (slideOffset > 0.7) {
  250 + double alpha = (255 / (1 - 0.6)) * (slideOffset - 0.6);
  251 + if (alpha > 60) {
  252 + fragment.binding.flTop.getBackground().setAlpha((int) alpha);
  253 + fragment.binding.flTop.setVisibility(View.VISIBLE);
  254 + QMUIStatusBarHelper.setStatusBarDarkMode(fragment.getActivity());
  255 + StatusBarUtil2.setColor(fragment.getActivity(), getContext().getResources().getColor(R.color.run_main_bg), 0);
  256 +
  257 + }
  258 + } else {
  259 + if (fragment.binding.flTop.getVisibility() == View.VISIBLE) {
  260 + QMUIStatusBarHelper.setStatusBarLightMode(fragment.getActivity());
  261 + StatusBarUtil2.setColor(fragment.getActivity(), getContext().getResources().getColor(R.color.white), 0);
  262 + fragment.binding.flTop.setVisibility(View.GONE);
  263 + }
  264 + }
  265 + //设置卡片缩放特效
245 if (slideOffset >= 0 && slideOffset <= 1) { 266 if (slideOffset >= 0 && slideOffset <= 1) {
246 int leakWidth = (int) (ScreenUtil.dip2px(getContext(), 15) / 0.6); 267 int leakWidth = (int) (ScreenUtil.dip2px(getContext(), 15) / 0.6);
247 LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 268 LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
@@ -281,6 +302,46 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { @@ -281,6 +302,46 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener {
281 302
282 @Override 303 @Override
283 public void onPanelStateChanged(View panel, SlidingUpPanelLayout.PanelState previousState, SlidingUpPanelLayout.PanelState newState) { 304 public void onPanelStateChanged(View panel, SlidingUpPanelLayout.PanelState previousState, SlidingUpPanelLayout.PanelState newState) {
  305 +// Log.e(TAG, "previousState: " + previousState + ",newState:" + newState);
  306 + if (previousState == SlidingUpPanelLayout.PanelState.ANCHORED && newState == SlidingUpPanelLayout.PanelState.DRAGGING) {
  307 + if (fragment.binding.flTop.getVisibility() != View.VISIBLE) {
  308 + QMUIStatusBarHelper.setStatusBarDarkMode(fragment.getActivity());
  309 + StatusBarUtil2.setColor(fragment.getActivity(), getContext().getResources().getColor(R.color.run_main_bg), 0);
  310 + fragment.binding.flTop.setVisibility(View.VISIBLE);
  311 +
  312 + }
  313 + } else if (previousState == SlidingUpPanelLayout.PanelState.DRAGGING && newState == SlidingUpPanelLayout.PanelState.EXPANDED) {
  314 +
  315 + if (fragment.binding.flTop.getVisibility() != View.VISIBLE) {
  316 + QMUIStatusBarHelper.setStatusBarDarkMode(fragment.getActivity());
  317 + StatusBarUtil2.setColor(fragment.getActivity(), getContext().getResources().getColor(R.color.run_main_bg), 0);
  318 + fragment.binding.flTop.setVisibility(View.VISIBLE);
  319 +
  320 + }
  321 + } else if (previousState == SlidingUpPanelLayout.PanelState.EXPANDED && newState == SlidingUpPanelLayout.PanelState.DRAGGING) {
  322 + QMUIStatusBarHelper.setStatusBarLightMode(fragment.getActivity());
  323 + StatusBarUtil2.setColor(fragment.getActivity(), getContext().getResources().getColor(R.color.white), 0);
  324 + if (fragment.binding.flTop.getVisibility() != View.GONE) {
  325 + fragment.binding.flTop.setVisibility(View.GONE);
  326 + }
  327 + } else if (previousState == SlidingUpPanelLayout.PanelState.DRAGGING && newState == SlidingUpPanelLayout.PanelState.ANCHORED) {
  328 + QMUIStatusBarHelper.setStatusBarLightMode(fragment.getActivity());
  329 + StatusBarUtil2.setColor(fragment.getActivity(), getContext().getResources().getColor(R.color.white), 0);
  330 + if (fragment.binding.flTop.getVisibility() != View.GONE) {
  331 + fragment.binding.flTop.setVisibility(View.GONE);
  332 + }
  333 + }
  334 +
  335 + }
  336 + });
  337 + //卡片滑动上层标题
  338 + fragment.binding.llTopBack.setOnClickListener(new View.OnClickListener() {
  339 + @Override
  340 + public void onClick(View view) {
  341 + if (getContext() == null) {
  342 + return;
  343 + }
  344 + fragment.getActivity().finish();
284 } 345 }
285 }); 346 });
286 /*************************设置相关页面数据***************************/ 347 /*************************设置相关页面数据***************************/
@@ -293,9 +354,9 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { @@ -293,9 +354,9 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener {
293 fragment.binding.includeStreet.tvRaceTitle.setText(runRaceDetailInfo.getTitle()); 354 fragment.binding.includeStreet.tvRaceTitle.setText(runRaceDetailInfo.getTitle());
294 //根据标题字数动态设置卡片高度 355 //根据标题字数动态设置卡片高度
295 if (runRaceDetailInfo.getTitle().length() > 19) { 356 if (runRaceDetailInfo.getTitle().length() > 19) {
296 - fragment.binding.slidingLayout.setPanelHeight(ScreenUtil.dip2px(getContext(), 149)); 357 + fragment.binding.slidingLayout.setPanelHeight(ScreenUtil.dip2px(getContext(), 200));
297 } else { 358 } else {
298 - fragment.binding.slidingLayout.setPanelHeight(ScreenUtil.dip2px(getContext(), 141)); 359 + fragment.binding.slidingLayout.setPanelHeight(ScreenUtil.dip2px(getContext(), 181));
299 } 360 }
300 fragment.binding.slidingLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); 361 fragment.binding.slidingLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED);
301 } 362 }
@@ -317,21 +378,21 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { @@ -317,21 +378,21 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener {
317 fragment.binding.includeStreet.tvEndAddr.setText(runRaceDetailInfo.getEndLocation()); 378 fragment.binding.includeStreet.tvEndAddr.setText(runRaceDetailInfo.getEndLocation());
318 } 379 }
319 //设置起始报名时间 380 //设置起始报名时间
320 - if (!TextUtils.isEmpty(TimeUtil.getStampToTime(runRaceDetailInfo.getSign_up_start_time(), "yyyy-MM-dd"))) {  
321 - fragment.binding.includeStreet.tvSignUpStartTime.setText(TimeUtil.getStampToTime(runRaceDetailInfo.getSign_up_start_time(), "yyyy-MM-dd")); 381 + if (!TextUtils.isEmpty(TimeUtil.getStampToTime(runRaceDetailInfo.getSign_up_start_time(), "yyyy.MM.dd"))) {
  382 + fragment.binding.includeStreet.tvSignUpStartTime.setText(TimeUtil.getStampToTime(runRaceDetailInfo.getSign_up_start_time(), "yyyy.MM.dd"));
322 383
323 } 384 }
324 //设置终止报名时间 385 //设置终止报名时间
325 - if (!TextUtils.isEmpty(TimeUtil.getStampToTime(runRaceDetailInfo.getSign_up_end_time(), "yyyy-MM-dd"))) {  
326 - fragment.binding.includeStreet.tvSignUpEndTime.setText(TimeUtil.getStampToTime(runRaceDetailInfo.getSign_up_end_time(), "yyyy-MM-dd")); 386 + if (!TextUtils.isEmpty(TimeUtil.getStampToTime(runRaceDetailInfo.getSign_up_end_time(), "yyyy.MM.dd"))) {
  387 + fragment.binding.includeStreet.tvSignUpEndTime.setText(TimeUtil.getStampToTime(runRaceDetailInfo.getSign_up_end_time(), "yyyy.MM.dd"));
327 } 388 }
328 //设置活动开始时间 389 //设置活动开始时间
329 - if (!TextUtils.isEmpty(TimeUtil.getStampToTime(runRaceDetailInfo.getStart_time(), "yyyy-MM-dd"))) {  
330 - fragment.binding.includeStreet.tvActiveStartTime.setText(TimeUtil.getStampToTime(runRaceDetailInfo.getStart_time(), "yyyy-MM-dd")); 390 + if (!TextUtils.isEmpty(TimeUtil.getStampToTime(runRaceDetailInfo.getStart_time(), "yyyy.MM.dd"))) {
  391 + fragment.binding.includeStreet.tvActiveStartTime.setText(TimeUtil.getStampToTime(runRaceDetailInfo.getStart_time(), "yyyy.MM.dd"));
331 } 392 }
332 //设置活动结束时间 393 //设置活动结束时间
333 - if (!TextUtils.isEmpty(TimeUtil.getStampToTime(runRaceDetailInfo.getEnd_time(), "yyyy-MM-dd"))) {  
334 - fragment.binding.includeStreet.tvActiveEndTime.setText(TimeUtil.getStampToTime(runRaceDetailInfo.getEnd_time(), "yyyy-MM-dd")); 394 + if (!TextUtils.isEmpty(TimeUtil.getStampToTime(runRaceDetailInfo.getEnd_time(), "yyyy.MM.dd"))) {
  395 + fragment.binding.includeStreet.tvActiveEndTime.setText(TimeUtil.getStampToTime(runRaceDetailInfo.getEnd_time(), "yyyy.MM.dd"));
335 } 396 }
336 //设置活动类型 397 //设置活动类型
337 if (!TextUtils.isEmpty(runRaceDetailInfo.getEventType())) { 398 if (!TextUtils.isEmpty(runRaceDetailInfo.getEventType())) {
@@ -582,7 +643,7 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { @@ -582,7 +643,7 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener {
582 @Override 643 @Override
583 public void onClick(View view) { 644 public void onClick(View view) {
584 ARouter.getInstance().build("/web/WebViewColorActivity") 645 ARouter.getInstance().build("/web/WebViewColorActivity")
585 - .withString("url", "http://wjjh5test.cnlive.com/cnSportList.html"+"?sid="+CommonInfo.getUserId(fragment.getActivity())+"&eventId="+CommonInfo.getStreetId(fragment.getActivity())) 646 + .withString("url", "http://wjjh5test.cnlive.com/cnSportList.html" + "?sid=" + CommonInfo.getUserId(fragment.getActivity()) + "&eventId=" + CommonInfo.getStreetId(fragment.getActivity()))
586 .withString("title", "排行榜") 647 .withString("title", "排行榜")
587 .navigation(fragment.getActivity()); 648 .navigation(fragment.getActivity());
588 } 649 }
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/activity/OnGoingActivity.java 0 → 100644
  1 +package com.cnlive.moudle.pedometer.ui.activity;
  2 +
  3 +import com.cnlive.libs.base.ui.QMUIFragmentActivity;
  4 +import com.example.moudle_pedometer.R;
  5 +
  6 +/**
  7 + * 进行中的活动点击事件
  8 + */
  9 +public class OnGoingActivity extends QMUIFragmentActivity {
  10 + @Override
  11 + protected int getContextViewId() {
  12 + return R.id.fragment_ongoing;
  13 + }
  14 +}
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/fragment/OnGoingFragment.java 0 → 100644
  1 +package com.cnlive.moudle.pedometer.ui.fragment;
  2 +
  3 +import android.os.Bundle;
  4 +import android.support.annotation.Nullable;
  5 +import android.view.View;
  6 +
  7 +import com.cnlive.libs.base.ui.QMUIFragment;
  8 +import com.cnlive.moudle.pedometer.frame.presenter.OnGoingFragmentPresenter;
  9 +import com.cnlive.moudle.pedometer.frame.view.OnGoingFragmentView;
  10 +import com.example.moudle_pedometer.databinding.FragmentRunRaceDetailBinding;
  11 +
  12 +public class OnGoingFragment extends QMUIFragment<OnGoingFragmentView, OnGoingFragmentPresenter, FragmentRunRaceDetailBinding> {
  13 + @Override
  14 + protected int getToolbarId() {
  15 + return 0;
  16 + }
  17 +
  18 + @Override
  19 + public String getTitle() {
  20 + return null;
  21 + }
  22 +
  23 + @Override
  24 + protected int getLayoutId() {
  25 + return 0;
  26 + }
  27 +
  28 + @Override
  29 + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
  30 + super.onViewCreated(view, savedInstanceState);
  31 + }
  32 +}
moudle_pedometer/src/main/res/drawable-hdpi/icon_run_white_back.png 0 → 100644

542 Bytes

moudle_pedometer/src/main/res/drawable-xhdpi/icon_run_white_back.png 0 → 100644

705 Bytes

moudle_pedometer/src/main/res/drawable-xxhdpi/icon_run_white_back.png 0 → 100644

1.17 KB

moudle_pedometer/src/main/res/layout/fragment_run_race_detail.xml
@@ -72,6 +72,7 @@ @@ -72,6 +72,7 @@
72 android:id="@+id/scrollView" 72 android:id="@+id/scrollView"
73 android:layout_width="match_parent" 73 android:layout_width="match_parent"
74 android:layout_height="match_parent" 74 android:layout_height="match_parent"
  75 + android:layout_marginTop="40dp"
75 android:scrollbars="none"> 76 android:scrollbars="none">
76 77
77 <LinearLayout 78 <LinearLayout
@@ -141,6 +142,40 @@ @@ -141,6 +142,40 @@
141 android:visibility="gone" /> 142 android:visibility="gone" />
142 143
143 </RelativeLayout> 144 </RelativeLayout>
  145 +
  146 + <FrameLayout
  147 + android:id="@+id/fl_top"
  148 + android:layout_width="match_parent"
  149 + android:layout_height="40dp"
  150 + android:layout_gravity="top"
  151 + android:background="@color/run_main_bg"
  152 + android:gravity="center"
  153 + android:visibility="gone">
  154 +
  155 + <LinearLayout
  156 + android:id="@+id/ll_top_back"
  157 + android:layout_width="wrap_content"
  158 + android:layout_height="match_parent"
  159 + android:layout_gravity="center_vertical"
  160 + android:gravity="center"
  161 + android:padding="10dp">
  162 +
  163 + <ImageView
  164 + android:layout_width="12dp"
  165 + android:layout_height="20dp"
  166 + android:background="@drawable/icon_run_white_back" />
  167 + </LinearLayout>
  168 +
  169 + <TextView
  170 + android:layout_width="wrap_content"
  171 + android:layout_height="wrap_content"
  172 + android:layout_gravity="center"
  173 + android:text="路线详情"
  174 + android:textColor="@color/white"
  175 + android:textSize="18sp"
  176 + />
  177 + </FrameLayout>
  178 +
144 <com.cnlive.strike.ui.widget.UIEmptyView 179 <com.cnlive.strike.ui.widget.UIEmptyView
145 android:id="@+id/empty_layout" 180 android:id="@+id/empty_layout"
146 android:layout_width="match_parent" 181 android:layout_width="match_parent"
moudle_pedometer/src/main/res/layout/layout_finish_running_route.xml
@@ -174,6 +174,7 @@ @@ -174,6 +174,7 @@
174 android:layout_height="wrap_content" 174 android:layout_height="wrap_content"
175 android:layout_marginLeft="10dp" 175 android:layout_marginLeft="10dp"
176 android:text="--" 176 android:text="--"
  177 + android:textStyle="bold"
177 android:textColor="@color/text_gray" 178 android:textColor="@color/text_gray"
178 android:textSize="11sp" /> 179 android:textSize="11sp" />
179 </LinearLayout> 180 </LinearLayout>
moudle_pedometer/src/main/res/layout/layout_finish_user_info.xml
@@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
8 8
9 <LinearLayout 9 <LinearLayout
10 android:layout_width="match_parent" 10 android:layout_width="match_parent"
11 - android:layout_height="190dp" 11 + android:layout_height="195dp"
12 android:layout_marginTop="30dp" 12 android:layout_marginTop="30dp"
13 android:background="@drawable/shape_10dp_white_raduis_bg" 13 android:background="@drawable/shape_10dp_white_raduis_bg"
14 android:orientation="vertical"> 14 android:orientation="vertical">
moudle_pedometer/src/main/res/layout/layout_run_detail_street.xml
@@ -3,8 +3,7 @@ @@ -3,8 +3,7 @@
3 3
4 <LinearLayout xmlns:FivePersonIconView="http://schemas.android.com/apk/res-auto" 4 <LinearLayout xmlns:FivePersonIconView="http://schemas.android.com/apk/res-auto"
5 android:layout_width="match_parent" 5 android:layout_width="match_parent"
6 - android:layout_height="wrap_content"  
7 - android:background="@color/white"> 6 + android:layout_height="wrap_content">
8 7
9 <LinearLayout 8 <LinearLayout
10 android:id="@+id/ll_run_detail_street_root" 9 android:id="@+id/ll_run_detail_street_root"
@@ -25,7 +24,7 @@ @@ -25,7 +24,7 @@
25 android:layout_height="wrap_content" 24 android:layout_height="wrap_content"
26 android:layout_marginLeft="15dp" 25 android:layout_marginLeft="15dp"
27 android:layout_marginRight="15dp" 26 android:layout_marginRight="15dp"
28 - android:background="@drawable/shape_left_right_10dp_white_raduis_bg" 27 + android:background="@color/white"
29 android:orientation="vertical"> 28 android:orientation="vertical">
30 <!--活动标题--> 29 <!--活动标题-->
31 <TextView 30 <TextView
@@ -33,7 +32,7 @@ @@ -33,7 +32,7 @@
33 android:layout_width="wrap_content" 32 android:layout_width="wrap_content"
34 android:layout_height="wrap_content" 33 android:layout_height="wrap_content"
35 android:layout_marginLeft="10dp" 34 android:layout_marginLeft="10dp"
36 - android:layout_marginTop="10dp" 35 + android:layout_marginTop="15dp"
37 android:text="--" 36 android:text="--"
38 android:textColor="@color/text_black" 37 android:textColor="@color/text_black"
39 android:textSize="18sp" 38 android:textSize="18sp"
@@ -78,15 +77,18 @@ @@ -78,15 +77,18 @@
78 android:textSize="15sp" /> 77 android:textSize="15sp" />
79 78
80 </LinearLayout> 79 </LinearLayout>
  80 +
  81 + <View
  82 + android:layout_width="match_parent"
  83 + android:layout_height="1dp"
  84 + android:layout_marginLeft="35dp"
  85 + android:layout_marginTop="-5dp"
  86 + android:layout_marginRight="35dp"
  87 + android:layout_marginBottom="5dp"
  88 + android:background="@color/line" />
81 </LinearLayout> 89 </LinearLayout>
82 90
83 - <View  
84 - android:layout_width="match_parent"  
85 - android:layout_height="1dp"  
86 - android:layout_marginLeft="35dp"  
87 - android:layout_marginRight="35dp"  
88 - android:layout_marginBottom="5dp"  
89 - android:background="@color/line" /> 91 +
90 <!--按钮--> 92 <!--按钮-->
91 <RelativeLayout 93 <RelativeLayout
92 android:id="@+id/rl_start_btn" 94 android:id="@+id/rl_start_btn"
@@ -129,6 +131,8 @@ @@ -129,6 +131,8 @@
129 android:layout_marginRight="15dp" 131 android:layout_marginRight="15dp"
130 android:background="@color/white" 132 android:background="@color/white"
131 android:orientation="vertical"> 133 android:orientation="vertical">
  134 +
  135 +
132 <!--起点--> 136 <!--起点-->
133 <LinearLayout 137 <LinearLayout
134 android:layout_width="match_parent" 138 android:layout_width="match_parent"
@@ -242,7 +246,7 @@ @@ -242,7 +246,7 @@
242 android:layout_width="wrap_content" 246 android:layout_width="wrap_content"
243 android:layout_height="match_parent" 247 android:layout_height="match_parent"
244 android:layout_marginLeft="5dp" 248 android:layout_marginLeft="5dp"
245 - android:text="——" 249 + android:text=""
246 android:textColor="@color/text_black" 250 android:textColor="@color/text_black"
247 android:textSize="15sp" /> 251 android:textSize="15sp" />
248 252
@@ -304,7 +308,7 @@ @@ -304,7 +308,7 @@
304 android:layout_width="wrap_content" 308 android:layout_width="wrap_content"
305 android:layout_height="match_parent" 309 android:layout_height="match_parent"
306 android:layout_marginLeft="5dp" 310 android:layout_marginLeft="5dp"
307 - android:text="——" 311 + android:text=""
308 android:textColor="@color/text_black" 312 android:textColor="@color/text_black"
309 android:textSize="15sp" /> 313 android:textSize="15sp" />
310 314
moudle_pedometer/src/main/res/values/ids.xml
@@ -12,5 +12,7 @@ @@ -12,5 +12,7 @@
12 <item name="fragment_upload_fail" type="id" /> 12 <item name="fragment_upload_fail" type="id" />
13 <!--全部成绩详情页--> 13 <!--全部成绩详情页-->
14 <item name="fragment_all_score_detail" type="id" /> 14 <item name="fragment_all_score_detail" type="id" />
  15 + <!--进行中的活动-->
  16 + <item name="fragment_ongoing" type="id" />
15 17
16 </resources> 18 </resources>