Commit ee74c27b85a61f3a478ebfbecee6b122a391f6dd

Authored by 韩亚云
2 parents ba34a038 67a0c3c5

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

moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/presenter/ALLScoreDetailFragmentPresenter.java
1 package com.cnlive.moudle.pedometer.frame.presenter; 1 package com.cnlive.moudle.pedometer.frame.presenter;
2 2
  3 +import android.app.Activity;
  4 +import android.text.TextUtils;
  5 +import android.widget.Toast;
  6 +
  7 +import com.baidu.mapapi.model.LatLng;
  8 +import com.baidu.trace.LBSTraceClient;
  9 +import com.baidu.trace.model.SortType;
  10 +import com.cnlive.moudle.pedometer.commonInfo.CommonInfo;
3 import com.cnlive.moudle.pedometer.frame.view.ALLScoreDetailFragmentView; 11 import com.cnlive.moudle.pedometer.frame.view.ALLScoreDetailFragmentView;
  12 +import com.cnlive.moudle.pedometer.model.Constant;
  13 +import com.cnlive.moudle.pedometer.model.RunningFinishBean;
  14 +import com.cnlive.moudle.pedometer.sql.entity.FailedEntity;
  15 +import com.cnlive.moudle.pedometer.ui.widget.SelectDialog;
  16 +import com.cnlive.moudle.pedometer.utils.GsonUtil;
  17 +import com.cnlive.moudle.pedometer.utils.MyMapUtil;
  18 +import com.cnlive.moudle.pedometer.utils.QMUITipDialogUtil;
  19 +import com.example.moudle_pedometer.R;
4 import com.hannesdorfmann.mosby3.mvp.MvpBasePresenter; 20 import com.hannesdorfmann.mosby3.mvp.MvpBasePresenter;
5 21
  22 +import java.util.List;
  23 +
6 public class ALLScoreDetailFragmentPresenter extends MvpBasePresenter<ALLScoreDetailFragmentView> { 24 public class ALLScoreDetailFragmentPresenter extends MvpBasePresenter<ALLScoreDetailFragmentView> {
  25 + private LBSTraceClient mClient = null;
  26 + private SelectDialog uploadFailDialog;
  27 + private SelectDialog failTraceDialog;
  28 +
  29 + /**
  30 + * 查询当前用户历史轨迹
  31 + */
  32 + public void queryHistoryTrace(Activity context, RunningFinishBean runningFinishBean) {
  33 + QMUITipDialogUtil.loadingDialog(context, "正在获取轨迹信息,请稍后", false);
  34 + //查询当前用户的历史轨迹
  35 + long startTime = 0;
  36 + if (!TextUtils.isEmpty(runningFinishBean.getUserStartTime())) {
  37 + startTime = Long.parseLong(runningFinishBean.getUserStartTime());
  38 + }
  39 + //获取当前的时间戳(秒)
  40 + long endTime = 0;
  41 + if (!TextUtils.isEmpty(runningFinishBean.getUserFinishTime())){
  42 + endTime = Long.parseLong(runningFinishBean.getUserFinishTime());
  43 + }
  44 + //获取当前的实体名称
  45 + String entityName = CommonInfo.getUserId(context);
  46 + if (mClient == null) {
  47 + mClient = new LBSTraceClient(context);
  48 + }
  49 + MyMapUtil.queryHistoryTrace(context, mClient, entityName, startTime, endTime, new MyMapUtil.CallBack() {
  50 + @Override
  51 + public void success(List<LatLng> resultPoints) {
  52 + if (resultPoints != null) {
  53 + if (getView() != null) {
  54 + QMUITipDialogUtil.dismessDialog();
  55 + if (resultPoints.size() > 1) {
  56 + MyMapUtil.drawHistoryTrack(context, getView().baiduMap, resultPoints, SortType.asc, R.color.red, R.drawable.icon_start, R.drawable.icon_end);
  57 + //设置地图自动缩放
  58 + MyMapUtil.setMapAutoZoom(getView().baiduMap, resultPoints, -2f);
  59 + }
  60 +
  61 + }
  62 + }
  63 + //查询失败
  64 + else {
  65 + if (getView() == null) {
  66 + return;
  67 + }
  68 + QMUITipDialogUtil.dismessDialog();
  69 +
  70 + if (failTraceDialog == null) {
  71 + failTraceDialog = new SelectDialog(context, "获取轨迹失败,是否重试?", "重试", new SelectDialog.DialogInterface() {
  72 + @Override
  73 + public void onClick(SelectDialog dialog) {
  74 + dialog.dismiss();
  75 + queryHistoryTrace(context, runningFinishBean);
  76 + }
  77 + }, "取消", new SelectDialog.DialogInterface() {
  78 + @Override
  79 + public void onClick(SelectDialog dialog) {
  80 + dialog.dismiss();
  81 +
  82 + }
  83 + });
  84 + failTraceDialog.setCanceledOnTouchOutside(false);
  85 + failTraceDialog.setCancelable(false);
  86 + if (!failTraceDialog.isShowing()) {
  87 + failTraceDialog.show();
  88 + }
  89 +
  90 + } else {
  91 + if (!failTraceDialog.isShowing()) {
  92 + failTraceDialog.show();
  93 + }
  94 + }
  95 + }
  96 + }
  97 + });
  98 +
  99 + }
7 } 100 }
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/presenter/RunningFinishFragmetPresenter.java
@@ -81,7 +81,9 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis @@ -81,7 +81,9 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis
81 //配速 81 //配速
82 String pace = ""; 82 String pace = "";
83 if ("--".equals(runningFinishBean.getSpeed())) { 83 if ("--".equals(runningFinishBean.getSpeed())) {
84 - pace = "0"; 84 +// pace = "0";
  85 + //开始计算配速
  86 + pace = StepUtil.getPaceSpeed(Double.parseDouble(employTime), Double.parseDouble(mileage));
85 } else { 87 } else {
86 pace = runningFinishBean.getSpeed(); 88 pace = runningFinishBean.getSpeed();
87 } 89 }
@@ -125,7 +127,6 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis @@ -125,7 +127,6 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis
125 paramsMap.put("step", step); 127 paramsMap.put("step", step);
126 128
127 129
128 -  
129 Logic.create(paramsMap).action(new Logic.Action<Map<String, String>, BaseInfo>() { 130 Logic.create(paramsMap).action(new Logic.Action<Map<String, String>, BaseInfo>() {
130 @Override 131 @Override
131 public Disposable action(Map<String, String> stringStringMap, DataCallback<BaseInfo> dataCallback) { 132 public Disposable action(Map<String, String> stringStringMap, DataCallback<BaseInfo> dataCallback) {
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/ALLScoreDetailFragmentView.java
@@ -10,6 +10,7 @@ import com.baidu.mapapi.map.UiSettings; @@ -10,6 +10,7 @@ import com.baidu.mapapi.map.UiSettings;
10 import com.cnlive.moudle.pedometer.model.RunningFinishBean; 10 import com.cnlive.moudle.pedometer.model.RunningFinishBean;
11 import com.cnlive.moudle.pedometer.ui.fragment.ALLScoreDetailFragment; 11 import com.cnlive.moudle.pedometer.ui.fragment.ALLScoreDetailFragment;
12 import com.cnlive.moudle.pedometer.utils.TimeUtil; 12 import com.cnlive.moudle.pedometer.utils.TimeUtil;
  13 +import com.example.moudle_pedometer.R;
13 import com.hannesdorfmann.mosby3.mvp.MvpView; 14 import com.hannesdorfmann.mosby3.mvp.MvpView;
14 15
15 /** 16 /**
@@ -50,6 +51,25 @@ public class ALLScoreDetailFragmentView implements MvpView { @@ -50,6 +51,25 @@ public class ALLScoreDetailFragmentView implements MvpView {
50 51
51 fragment.binding.includeFinishRunRoute.tvTimer.setText(TimeUtil.stampToChronometer(Long.parseLong(runningFinishBean.getEmployTime()))); 52 fragment.binding.includeFinishRunRoute.tvTimer.setText(TimeUtil.stampToChronometer(Long.parseLong(runningFinishBean.getEmployTime())));
52 } 53 }
  54 + //设置完成时间
  55 + if (!TextUtils.isEmpty(runningFinishBean.getUserFinishTime())) {
  56 + fragment.binding.includeFinishUserInfo.tvDate.setText(TimeUtil.getStampToTime(Long.parseLong(runningFinishBean.getUserFinishTime())*1000, "yyyy/MM/dd HH:mm"));
  57 + }
  58 + //设置起点
  59 + fragment.binding.includeFinishRunRoute.tvStartPoint.setText(runningFinishBean.getStartPoint());
  60 + //设置终点
  61 + fragment.binding.includeFinishRunRoute.tvEndPoint.setText(runningFinishBean.getEndPoint());
  62 + //设置是否完成
  63 + //未完成
  64 + if ("1".equals(runningFinishBean.getIsFinish())) {
  65 + fragment.binding.includeFinishRunRoute.tvFinishState.setText("路线完成");
  66 + fragment.binding.includeFinishRunRoute.tvFinishState.setTextColor(getContext().getResources().getColor(R.color.green_round));
  67 + }
  68 + //完成
  69 + else if ("0".equals(runningFinishBean.getIsFinish())){
  70 + fragment.binding.includeFinishRunRoute.tvFinishState.setText("路线未完成");
  71 + fragment.binding.includeFinishRunRoute.tvFinishState.setTextColor(getContext().getResources().getColor(R.color.red));
  72 + }
53 //设置日期 73 //设置日期
54 //点击返回按钮 74 //点击返回按钮
55 fragment.binding.flBack.setOnClickListener(new View.OnClickListener() { 75 fragment.binding.flBack.setOnClickListener(new View.OnClickListener() {
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/RaceRecorView.java
@@ -86,8 +86,19 @@ public class RaceRecorView implements MvpView { @@ -86,8 +86,19 @@ public class RaceRecorView implements MvpView {
86 runningFinishBean.setRunDistance(bean.getMileage()); 86 runningFinishBean.setRunDistance(bean.getMileage());
87 //设置配速 87 //设置配速
88 runningFinishBean.setSpeed(bean.getPace()); 88 runningFinishBean.setSpeed(bean.getPace());
89 - //设置用 89 + //设置用
90 runningFinishBean.setEmployTime(bean.getEmployTime()); 90 runningFinishBean.setEmployTime(bean.getEmployTime());
  91 + //设置开始位置
  92 + runningFinishBean.setStartPoint(bean.getStartLocation());
  93 + //设置结束位置
  94 + runningFinishBean.setEndPoint(bean.getEndLocation());
  95 + //设置用户轨迹开始时间
  96 + runningFinishBean.setUserStartTime(bean.getStartTime());
  97 + //设置用户轨迹结束时间
  98 + runningFinishBean.setUserFinishTime(bean.getEndTime());
  99 + //设置用户是否完成
  100 + runningFinishBean.setIsFinish(bean.getCompleteStatus() + "");
  101 +
91 //设置起点 102 //设置起点
92 ALLScoreDetailActivity.startActivity(fragment.getActivity(), runningFinishBean); 103 ALLScoreDetailActivity.startActivity(fragment.getActivity(), runningFinishBean);
93 104
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/RunMainFragmentView.java
@@ -237,8 +237,10 @@ public class RunMainFragmentView implements MvpView { @@ -237,8 +237,10 @@ public class RunMainFragmentView implements MvpView {
237 fragment.binding.chronometer.setFormat("00:00:01"); 237 fragment.binding.chronometer.setFormat("00:00:01");
238 fragment.binding.chronometer.setBase(SystemClock.elapsedRealtime()); 238 fragment.binding.chronometer.setBase(SystemClock.elapsedRealtime());
239 } 239 }
240 - //设置继续运动时间  
241 - StepUtil.setContinueTime(getContext(), uid, TimeUtil.getNowTimeStamp()); 240 + if (userStepEntity.getContinueTime() == 0) {
  241 + //设置继续运动时间
  242 + StepUtil.setContinueTime(getContext(), uid, TimeUtil.getNowTimeStamp());
  243 + }
242 //因为进来以后就运动了,所以需要改变状态 244 //因为进来以后就运动了,所以需要改变状态
243 CommonInfo.setIsPauseState(getContext(), false); 245 CommonInfo.setIsPauseState(getContext(), false);
244 //重新设置开始时间 246 //重新设置开始时间
@@ -290,8 +292,10 @@ public class RunMainFragmentView implements MvpView { @@ -290,8 +292,10 @@ public class RunMainFragmentView implements MvpView {
290 fragment.binding.flContinue.setOnClickListener(new View.OnClickListener() { 292 fragment.binding.flContinue.setOnClickListener(new View.OnClickListener() {
291 @Override 293 @Override
292 public void onClick(View view) { 294 public void onClick(View view) {
293 - //设置继续运动时间  
294 - StepUtil.setContinueTime(getContext(), uid, TimeUtil.getNowTimeStamp()); 295 + if (userStepEntity.getContinueTime() == 0) {
  296 + //设置继续运动时间
  297 + StepUtil.setContinueTime(getContext(), uid, TimeUtil.getNowTimeStamp());
  298 + }
295 //设置继续标志 299 //设置继续标志
296 CommonInfo.setIsPauseState(getContext(), false); 300 CommonInfo.setIsPauseState(getContext(), false);
297 //继续记录轨迹 301 //继续记录轨迹
@@ -371,8 +375,17 @@ public class RunMainFragmentView implements MvpView { @@ -371,8 +375,17 @@ public class RunMainFragmentView implements MvpView {
371 runningFinishBean.setStartPoint(userStepEntity.getStartPoint()); 375 runningFinishBean.setStartPoint(userStepEntity.getStartPoint());
372 runningFinishBean.setEndPoint(userStepEntity.getEndPoint()); 376 runningFinishBean.setEndPoint(userStepEntity.getEndPoint());
373 runningFinishBean.setRunDistance(fragment.binding.tvRunDistance.getText().toString()); 377 runningFinishBean.setRunDistance(fragment.binding.tvRunDistance.getText().toString());
374 - runningFinishBean.setSpeed(fragment.binding.tvSpeed.getText().toString());  
375 - runningFinishBean.setStep(fragment.binding.tvStepCount.getText().toString()); 378 + if ("--".equals(fragment.binding.tvSpeed.getText().toString())) {
  379 + String speed = StepUtil.getPaceSpeed(Double.parseDouble(employTime), Double.parseDouble(fragment.binding.tvRunDistance.getText().toString()));
  380 + runningFinishBean.setSpeed(speed);
  381 + } else {
  382 + runningFinishBean.setSpeed(fragment.binding.tvSpeed.getText().toString());
  383 + }
  384 + if ("--".equals(fragment.binding.tvStepCount.getText().toString())) {
  385 + runningFinishBean.setStep("0");
  386 + } else {
  387 + runningFinishBean.setStep(fragment.binding.tvStepCount.getText().toString());
  388 + }
376 runningFinishBean.setTime(fragment.binding.chronometer.getText().toString()); 389 runningFinishBean.setTime(fragment.binding.chronometer.getText().toString());
377 runningFinishBean.setDate(TimeUtil.getStampToTime(userStepEntity.getFinishTimeStamp() * 1000, "yyyy/MM/dd HH:mm")); 390 runningFinishBean.setDate(TimeUtil.getStampToTime(userStepEntity.getFinishTimeStamp() * 1000, "yyyy/MM/dd HH:mm"));
378 runningFinishBean.setStreetTitle(userStepEntity.getStreetTitle()); 391 runningFinishBean.setStreetTitle(userStepEntity.getStreetTitle());
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/RunningFinishFragmentView.java
@@ -17,6 +17,7 @@ import com.cnlive.moudle.pedometer.ui.fragment.RunningFinishFragment; @@ -17,6 +17,7 @@ import com.cnlive.moudle.pedometer.ui.fragment.RunningFinishFragment;
17 import com.cnlive.moudle.pedometer.ui.fragment.RunningMapFragment; 17 import com.cnlive.moudle.pedometer.ui.fragment.RunningMapFragment;
18 import com.cnlive.moudle.pedometer.utils.MyMapUtil; 18 import com.cnlive.moudle.pedometer.utils.MyMapUtil;
19 import com.cnlive.moudle.pedometer.utils.QMUITipDialogUtil; 19 import com.cnlive.moudle.pedometer.utils.QMUITipDialogUtil;
  20 +import com.cnlive.moudle.pedometer.utils.StepUtil;
20 import com.example.moudle_pedometer.R; 21 import com.example.moudle_pedometer.R;
21 import com.hannesdorfmann.mosby3.mvp.MvpView; 22 import com.hannesdorfmann.mosby3.mvp.MvpView;
22 import com.sothree.slidinguppanel.SlidingUpPanelLayout; 23 import com.sothree.slidinguppanel.SlidingUpPanelLayout;
@@ -59,21 +60,13 @@ public class RunningFinishFragmentView implements MvpView { @@ -59,21 +60,13 @@ public class RunningFinishFragmentView implements MvpView {
59 //设置距离 60 //设置距离
60 fragment.binding.includeFinishUserInfo.tvDistance.setText(runningFinishBean.getRunDistance()); 61 fragment.binding.includeFinishUserInfo.tvDistance.setText(runningFinishBean.getRunDistance());
61 //设置配速 62 //设置配速
62 - if ("--".equals(runningFinishBean.getSpeed())) {  
63 - fragment.binding.includeFinishUserInfo.tvSpeed.setText("0");  
64 - } else {  
65 - fragment.binding.includeFinishUserInfo.tvSpeed.setText(runningFinishBean.getSpeed());  
66 - } 63 + fragment.binding.includeFinishUserInfo.tvSpeed.setText(runningFinishBean.getSpeed());
67 //设置用时 64 //设置用时
68 fragment.binding.includeFinishUserInfo.tvTimer.setText(runningFinishBean.getTime()); 65 fragment.binding.includeFinishUserInfo.tvTimer.setText(runningFinishBean.getTime());
69 //设置日期 66 //设置日期
70 fragment.binding.includeFinishUserInfo.tvDate.setText(runningFinishBean.getDate()); 67 fragment.binding.includeFinishUserInfo.tvDate.setText(runningFinishBean.getDate());
71 //设置步数 68 //设置步数
72 - if ("--".equals(runningFinishBean.getStep())) {  
73 - fragment.binding.includeFinishStep.tvStep.setText("0");  
74 - } else {  
75 - fragment.binding.includeFinishStep.tvStep.setText(runningFinishBean.getStep());  
76 - } 69 + fragment.binding.includeFinishStep.tvStep.setText(runningFinishBean.getStep());
77 //设置起点位置 70 //设置起点位置
78 fragment.binding.includeFinishRunRoute.tvStartPoint.setText(runningFinishBean.getStartPoint()); 71 fragment.binding.includeFinishRunRoute.tvStartPoint.setText(runningFinishBean.getStartPoint());
79 //设置终点位置 72 //设置终点位置
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/RunningMapFragmentView.java
@@ -86,6 +86,50 @@ public class RunningMapFragmentView implements MvpView, SensorEventListener { @@ -86,6 +86,50 @@ public class RunningMapFragmentView implements MvpView, SensorEventListener {
86 86
87 public void initView() { 87 public void initView() {
88 currentPoints = new ArrayList<>(); 88 currentPoints = new ArrayList<>();
  89 + initMap();
  90 + //返回键
  91 + fragment.binding.flBack.setOnTouchListener(new View.OnTouchListener() {
  92 + @Override
  93 + public boolean onTouch(View view, MotionEvent motionEvent) {
  94 + if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
  95 + ButtonAnimUtil.setViewZoomIn(fragment.binding.flBack);
  96 + } else if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
  97 + ButtonAnimUtil.setViewZoomOut(fragment.binding.flBack);
  98 + }
  99 + return false;
  100 + }
  101 + });
  102 + //返回键点击事件
  103 + fragment.binding.flBack.setOnClickListener(new View.OnClickListener() {
  104 + @Override
  105 + public void onClick(View view) {
  106 + fragment.getActivity().finish();
  107 + }
  108 + });
  109 + //重新定位
  110 + fragment.binding.flLocation.setOnTouchListener(new View.OnTouchListener() {
  111 + @Override
  112 + public boolean onTouch(View view, MotionEvent motionEvent) {
  113 + if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
  114 + ButtonAnimUtil.setViewZoomIn(fragment.binding.flLocation);
  115 + } else if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
  116 + ButtonAnimUtil.setViewZoomOut(fragment.binding.flLocation);
  117 + }
  118 + return false;
  119 + }
  120 + });
  121 + //重新定位功能
  122 + fragment.binding.flLocation.setOnClickListener(new View.OnClickListener() {
  123 + @Override
  124 + public void onClick(View view) {
  125 + mLocClient.restart();
  126 + isFirstLoc = true;
  127 + }
  128 + });
  129 +
  130 + }
  131 +
  132 + public void initMap() {
89 this.mMapView = fragment.binding.mapView; 133 this.mMapView = fragment.binding.mapView;
90 if (baiduMap == null) { 134 if (baiduMap == null) {
91 baiduMap = mMapView.getMap(); 135 baiduMap = mMapView.getMap();
@@ -158,46 +202,6 @@ public class RunningMapFragmentView implements MvpView, SensorEventListener { @@ -158,46 +202,6 @@ public class RunningMapFragmentView implements MvpView, SensorEventListener {
158 public void onMapLoaded() { 202 public void onMapLoaded() {
159 } 203 }
160 }); 204 });
161 - //返回键  
162 - fragment.binding.flBack.setOnTouchListener(new View.OnTouchListener() {  
163 - @Override  
164 - public boolean onTouch(View view, MotionEvent motionEvent) {  
165 - if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {  
166 - ButtonAnimUtil.setViewZoomIn(fragment.binding.flBack);  
167 - } else if (motionEvent.getAction() == MotionEvent.ACTION_UP) {  
168 - ButtonAnimUtil.setViewZoomOut(fragment.binding.flBack);  
169 - }  
170 - return false;  
171 - }  
172 - });  
173 - //返回键点击事件  
174 - fragment.binding.flBack.setOnClickListener(new View.OnClickListener() {  
175 - @Override  
176 - public void onClick(View view) {  
177 - fragment.getActivity().finish();  
178 - }  
179 - });  
180 - //重新定位  
181 - fragment.binding.flLocation.setOnTouchListener(new View.OnTouchListener() {  
182 - @Override  
183 - public boolean onTouch(View view, MotionEvent motionEvent) {  
184 - if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {  
185 - ButtonAnimUtil.setViewZoomIn(fragment.binding.flLocation);  
186 - } else if (motionEvent.getAction() == MotionEvent.ACTION_UP) {  
187 - ButtonAnimUtil.setViewZoomOut(fragment.binding.flLocation);  
188 - }  
189 - return false;  
190 - }  
191 - });  
192 - //重新定位功能  
193 - fragment.binding.flLocation.setOnClickListener(new View.OnClickListener() {  
194 - @Override  
195 - public void onClick(View view) {  
196 - mLocClient.restart();  
197 - isFirstLoc = true;  
198 - }  
199 - });  
200 -  
201 } 205 }
202 206
203 public void drawServerStreetTrace(List<LatLng> trackPoints) { 207 public void drawServerStreetTrace(List<LatLng> trackPoints) {
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/SelfRecordView.java
@@ -11,6 +11,7 @@ import com.cnlive.moudle.pedometer.model.RunningFinishBean; @@ -11,6 +11,7 @@ import com.cnlive.moudle.pedometer.model.RunningFinishBean;
11 import com.cnlive.moudle.pedometer.net.bean.BaseInfo; 11 import com.cnlive.moudle.pedometer.net.bean.BaseInfo;
12 import com.cnlive.moudle.pedometer.net.bean.EventRouteRecordBeanVoListBean; 12 import com.cnlive.moudle.pedometer.net.bean.EventRouteRecordBeanVoListBean;
13 import com.cnlive.moudle.pedometer.net.bean.SelfRecordInfo; 13 import com.cnlive.moudle.pedometer.net.bean.SelfRecordInfo;
  14 +import com.cnlive.moudle.pedometer.ui.activity.ALLScoreDetailActivity;
14 import com.cnlive.moudle.pedometer.ui.activity.LineUpAgainActivity; 15 import com.cnlive.moudle.pedometer.ui.activity.LineUpAgainActivity;
15 import com.cnlive.moudle.pedometer.ui.activity.RunLineActivity; 16 import com.cnlive.moudle.pedometer.ui.activity.RunLineActivity;
16 import com.cnlive.moudle.pedometer.ui.adapter.RaceRecordAdapter; 17 import com.cnlive.moudle.pedometer.ui.adapter.RaceRecordAdapter;
@@ -66,8 +67,34 @@ public class SelfRecordView implements MvpView { @@ -66,8 +67,34 @@ public class SelfRecordView implements MvpView {
66 adapter.setOnClickListener(new RaceRecordAdapter.OnClickListener() { 67 adapter.setOnClickListener(new RaceRecordAdapter.OnClickListener() {
67 @Override 68 @Override
68 public void onClickListener(EventRouteRecordBeanVoListBean bean, int position) { 69 public void onClickListener(EventRouteRecordBeanVoListBean bean, int position) {
69 - CollRunningFinishActivity.startActivity(fragment.getActivity(), new RunningFinishBean());  
70 - } 70 + if (null != bean) {
  71 + //设置数据
  72 + RunningFinishBean runningFinishBean = new RunningFinishBean();
  73 + //设置赛事标题
  74 + runningFinishBean.setStreetTitle(bean.getEventTitle());
  75 + //设置步数
  76 + runningFinishBean.setStep(bean.getStep());
  77 + //设置距离
  78 + runningFinishBean.setRunDistance(bean.getMileage());
  79 + //设置配速
  80 + runningFinishBean.setSpeed(bean.getPace());
  81 + //设置用时
  82 + runningFinishBean.setEmployTime(bean.getEmployTime());
  83 + //设置开始位置
  84 + runningFinishBean.setStartPoint(bean.getStartLocation());
  85 + //设置结束位置
  86 + runningFinishBean.setEndPoint(bean.getEndLocation());
  87 + //设置用户轨迹开始时间
  88 + runningFinishBean.setUserStartTime(bean.getStartTime());
  89 + //设置用户轨迹结束时间
  90 + runningFinishBean.setUserFinishTime(bean.getEndTime());
  91 + //设置用户是否完成
  92 + runningFinishBean.setIsFinish(bean.getCompleteStatus() + "");
  93 +
  94 + //设置起点
  95 + ALLScoreDetailActivity.startActivity(fragment.getActivity(), runningFinishBean);
  96 +
  97 + } }
71 }); 98 });
72 } else { 99 } else {
73 adapter.notifyDataSetChanged(); 100 adapter.notifyDataSetChanged();
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/model/RunningFinishBean.java
@@ -21,6 +21,24 @@ public class RunningFinishBean implements Serializable { @@ -21,6 +21,24 @@ public class RunningFinishBean implements Serializable {
21 private String isFinish; 21 private String isFinish;
22 private String roadmap; 22 private String roadmap;
23 private String streetTitle; 23 private String streetTitle;
  24 + private String userStartTime;
  25 + private String userFinishTime;
  26 +
  27 + public String getUserStartTime() {
  28 + return userStartTime;
  29 + }
  30 +
  31 + public void setUserStartTime(String userStartTime) {
  32 + this.userStartTime = userStartTime;
  33 + }
  34 +
  35 + public String getUserFinishTime() {
  36 + return userFinishTime;
  37 + }
  38 +
  39 + public void setUserFinishTime(String userFinishTime) {
  40 + this.userFinishTime = userFinishTime;
  41 + }
24 42
25 public String getStreetTitle() { 43 public String getStreetTitle() {
26 return streetTitle; 44 return streetTitle;
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/net/bean/EventRouteRecordBeanVoListBean.java
@@ -25,6 +25,51 @@ public class EventRouteRecordBeanVoListBean { @@ -25,6 +25,51 @@ public class EventRouteRecordBeanVoListBean {
25 private int recordId; 25 private int recordId;
26 private String roadmap; 26 private String roadmap;
27 private String step; 27 private String step;
  28 + private String startTime;
  29 + private String endTime;
  30 + private String startLocation;
  31 + private String endLocation;
  32 + private int completeStatus;
  33 +
  34 + public String getStartTime() {
  35 + return startTime;
  36 + }
  37 +
  38 + public void setStartTime(String startTime) {
  39 + this.startTime = startTime;
  40 + }
  41 +
  42 + public String getEndTime() {
  43 + return endTime;
  44 + }
  45 +
  46 + public void setEndTime(String endTime) {
  47 + this.endTime = endTime;
  48 + }
  49 +
  50 + public String getStartLocation() {
  51 + return startLocation;
  52 + }
  53 +
  54 + public void setStartLocation(String startLocation) {
  55 + this.startLocation = startLocation;
  56 + }
  57 +
  58 + public String getEndLocation() {
  59 + return endLocation;
  60 + }
  61 +
  62 + public void setEndLocation(String endLocation) {
  63 + this.endLocation = endLocation;
  64 + }
  65 +
  66 + public int getCompleteStatus() {
  67 + return completeStatus;
  68 + }
  69 +
  70 + public void setCompleteStatus(int completeStatus) {
  71 + this.completeStatus = completeStatus;
  72 + }
28 73
29 public long getCreateTime() { 74 public long getCreateTime() {
30 return createTime; 75 return createTime;
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/service/StepService.java
@@ -184,6 +184,8 @@ public class StepService extends Service implements SensorEventListener { @@ -184,6 +184,8 @@ public class StepService extends Service implements SensorEventListener {
184 showStartForegroundNotification(); 184 showStartForegroundNotification();
185 } 185 }
186 186
  187 + private static int retryIndex = 0;
  188 +
187 private void initTrace() { 189 private void initTrace() {
188 if (mClient == null) { 190 if (mClient == null) {
189 mClient = new LBSTraceClient(getApplicationContext()); 191 mClient = new LBSTraceClient(getApplicationContext());
@@ -243,6 +245,7 @@ public class StepService extends Service implements SensorEventListener { @@ -243,6 +245,7 @@ public class StepService extends Service implements SensorEventListener {
243 if (StatusCodes.SUCCESS == errorNo || StatusCodes.START_TRACE_NETWORK_CONNECT_FAILED <= errorNo) { 245 if (StatusCodes.SUCCESS == errorNo || StatusCodes.START_TRACE_NETWORK_CONNECT_FAILED <= errorNo) {
244 //开始进行采集 246 //开始进行采集
245 if (mClient != null) { 247 if (mClient != null) {
  248 + retryIndex = 0;
246 mClient.startGather(traceListener); 249 mClient.startGather(traceListener);
247 Toast.makeText(getApplicationContext(), "开启轨迹服务", Toast.LENGTH_LONG).show(); 250 Toast.makeText(getApplicationContext(), "开启轨迹服务", Toast.LENGTH_LONG).show();
248 boolean isFirstSendNotification = CommonInfo.getIsFirstStepSendTraceTip(getApplicationContext()); 251 boolean isFirstSendNotification = CommonInfo.getIsFirstStepSendTraceTip(getApplicationContext());
@@ -262,6 +265,14 @@ public class StepService extends Service implements SensorEventListener { @@ -262,6 +265,14 @@ public class StepService extends Service implements SensorEventListener {
262 CommonInfo.setIsFirstStepSendTraceTip(getApplicationContext(), false); 265 CommonInfo.setIsFirstStepSendTraceTip(getApplicationContext(), false);
263 EventBus.getDefault().post(new MessageEvent(Constant.START_TRACE_GATHER_FAIL, "")); 266 EventBus.getDefault().post(new MessageEvent(Constant.START_TRACE_GATHER_FAIL, ""));
264 } 267 }
  268 + if (retryIndex < 4) {
  269 + //重新开启服务
  270 + if (mClient != null) {
  271 + mClient.startTrace(mTrace, traceListener);
  272 + retryIndex++;
  273 + }
  274 + }
  275 +
265 } 276 }
266 } 277 }
267 278
@@ -300,7 +311,16 @@ public class StepService extends Service implements SensorEventListener { @@ -300,7 +311,16 @@ public class StepService extends Service implements SensorEventListener {
300 @Override 311 @Override
301 public void onStartGatherCallback(int errorNo, String message) { 312 public void onStartGatherCallback(int errorNo, String message) {
302 if (StatusCodes.SUCCESS == errorNo || StatusCodes.GATHER_STARTED == errorNo) { 313 if (StatusCodes.SUCCESS == errorNo || StatusCodes.GATHER_STARTED == errorNo) {
  314 + retryIndex = 0;
303 Toast.makeText(getApplicationContext(), "开始采集", Toast.LENGTH_LONG).show(); 315 Toast.makeText(getApplicationContext(), "开始采集", Toast.LENGTH_LONG).show();
  316 + } else {
  317 + //重新开启采集
  318 + if (retryIndex < 4) {
  319 + if (null != mClient) {
  320 + mClient.startGather(traceListener);
  321 + }
  322 + retryIndex++;
  323 + }
304 } 324 }
305 } 325 }
306 326
@@ -703,7 +723,7 @@ public class StepService extends Service implements SensorEventListener { @@ -703,7 +723,7 @@ public class StepService extends Service implements SensorEventListener {
703 CURRENT_STEP = Integer.parseInt(userStepEntity.getStepCount()); 723 CURRENT_STEP = Integer.parseInt(userStepEntity.getStepCount());
704 } 724 }
705 } 725 }
706 - Log.e(TAG, "initTodayData: 初始化当前步数" + CURRENT_STEP); 726 +// Log.e(TAG, "initTodayData: 初始化当前步数" + CURRENT_STEP);
707 if (mStepCount != null) { 727 if (mStepCount != null) {
708 mStepCount.setSteps(CURRENT_STEP); 728 mStepCount.setSteps(CURRENT_STEP);
709 } 729 }
@@ -711,7 +731,7 @@ public class StepService extends Service implements SensorEventListener { @@ -711,7 +731,7 @@ public class StepService extends Service implements SensorEventListener {
711 } 731 }
712 732
713 private void updateNotification() { 733 private void updateNotification() {
714 - Log.e(TAG, "updateNotification: 当前步数:" + CURRENT_STEP); 734 +// Log.e(TAG, "updateNotification: 当前步数:" + CURRENT_STEP);
715 EventBus.getDefault().post(new MessageEvent(Constant.SERVICE_STEP_COUNT_UPDATE, CURRENT_STEP)); 735 EventBus.getDefault().post(new MessageEvent(Constant.SERVICE_STEP_COUNT_UPDATE, CURRENT_STEP));
716 updateSpeedStepFlag = false; 736 updateSpeedStepFlag = false;
717 // remoteViews = new RemoteViews(getPackageName(), R.layout.custom_step_notification); 737 // remoteViews = new RemoteViews(getPackageName(), R.layout.custom_step_notification);
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/adapter/RaceRecordAdapter.java
@@ -43,14 +43,18 @@ public class RaceRecordAdapter extends RecyclerView.Adapter&lt;RaceRecordAdapter.My @@ -43,14 +43,18 @@ public class RaceRecordAdapter extends RecyclerView.Adapter&lt;RaceRecordAdapter.My
43 @NonNull 43 @NonNull
44 @Override 44 @Override
45 public MyHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { 45 public MyHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
46 - View view = LayoutInflater.from(context).inflate(R.layout.item_race_record,viewGroup,false); 46 + View view = LayoutInflater.from(context).inflate(R.layout.item_race_record, viewGroup, false);
47 return new MyHolder(view); 47 return new MyHolder(view);
48 } 48 }
49 49
50 @Override 50 @Override
51 public void onBindViewHolder(@NonNull MyHolder myHolder, int i) { 51 public void onBindViewHolder(@NonNull MyHolder myHolder, int i) {
52 - myHolder.record_time_day.setText(TimeUtil.getStampToTime(list.get(i).getCreateTime(), "MM月dd日"));  
53 - myHolder.record_time.setText(TimeUtil.getStampToTime(list.get(i).getCreateTime(), "HH:mm")); 52 + if (!TextUtils.isEmpty(list.get(i).getStartTime())) {
  53 + myHolder.record_time_day.setText(TimeUtil.getStampToTime(Long.parseLong(list.get(i).getStartTime()) * 1000, "MM月dd日"));
  54 + }
  55 + if (!TextUtils.isEmpty(list.get(i).getStartTime())) {
  56 + myHolder.record_time.setText(TimeUtil.getStampToTime(Long.parseLong(list.get(i).getStartTime()) * 1000, "HH:mm"));
  57 + }
54 myHolder.item_title.setText(list.get(i).getEventTitle()); 58 myHolder.item_title.setText(list.get(i).getEventTitle());
55 myHolder.record_kli.setText(list.get(i).getMileage()); 59 myHolder.record_kli.setText(list.get(i).getMileage());
56 //设置时间 60 //设置时间
@@ -62,7 +66,8 @@ public class RaceRecordAdapter extends RecyclerView.Adapter&lt;RaceRecordAdapter.My @@ -62,7 +66,8 @@ public class RaceRecordAdapter extends RecyclerView.Adapter&lt;RaceRecordAdapter.My
62 if (onClickListener != null) 66 if (onClickListener != null)
63 myHolder.ry_re.setOnClickListener(v -> onClickListener.onClickListener(list.get(i), i)); 67 myHolder.ry_re.setOnClickListener(v -> onClickListener.onClickListener(list.get(i), i));
64 // Glide.with(context).load(list.get(i).getRoadmap()).into(myHolder.item_img); 68 // Glide.with(context).load(list.get(i).getRoadmap()).into(myHolder.item_img);
65 - if(onClickListener != null) myHolder.ry_re.setOnClickListener(v -> onClickListener.onClickListener(list.get(i),i)); 69 + if (onClickListener != null)
  70 + myHolder.ry_re.setOnClickListener(v -> onClickListener.onClickListener(list.get(i), i));
66 } 71 }
67 72
68 @Override 73 @Override
@@ -70,7 +75,7 @@ public class RaceRecordAdapter extends RecyclerView.Adapter&lt;RaceRecordAdapter.My @@ -70,7 +75,7 @@ public class RaceRecordAdapter extends RecyclerView.Adapter&lt;RaceRecordAdapter.My
70 return list.size(); 75 return list.size();
71 } 76 }
72 77
73 - class MyHolder extends RecyclerView.ViewHolder{ 78 + class MyHolder extends RecyclerView.ViewHolder {
74 79
75 TextView record_time_day; 80 TextView record_time_day;
76 TextView record_time; 81 TextView record_time;
@@ -97,7 +102,7 @@ public class RaceRecordAdapter extends RecyclerView.Adapter&lt;RaceRecordAdapter.My @@ -97,7 +102,7 @@ public class RaceRecordAdapter extends RecyclerView.Adapter&lt;RaceRecordAdapter.My
97 } 102 }
98 103
99 104
100 - public interface OnClickListener{ 105 + public interface OnClickListener {
101 void onClickListener(EventRouteRecordBeanVoListBean bean, int position); 106 void onClickListener(EventRouteRecordBeanVoListBean bean, int position);
102 } 107 }
103 } 108 }
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/fragment/ALLScoreDetailFragment.java
@@ -49,6 +49,9 @@ public class ALLScoreDetailFragment extends QMUIFragment&lt;ALLScoreDetailFragmentV @@ -49,6 +49,9 @@ public class ALLScoreDetailFragment extends QMUIFragment&lt;ALLScoreDetailFragmentV
49 if (getMvpView() != null) { 49 if (getMvpView() != null) {
50 getMvpView().initMap(); 50 getMvpView().initMap();
51 getMvpView().initView(runningFinishBean); 51 getMvpView().initView(runningFinishBean);
  52 + if (getPresenter() != null) {
  53 + getPresenter().queryHistoryTrace(getActivity(), runningFinishBean);
  54 + }
52 } 55 }
53 } 56 }
54 } 57 }
moudle_pedometer/src/main/res/layout/fragment_self_record.xml
@@ -17,29 +17,27 @@ @@ -17,29 +17,27 @@
17 android:layout_height="wrap_content" 17 android:layout_height="wrap_content"
18 android:layout_centerVertical="true" 18 android:layout_centerVertical="true"
19 android:padding="10dp" 19 android:padding="10dp"
20 - android:src="@drawable/top_back_black"/> 20 + android:src="@drawable/top_back_black" />
21 21
22 <TextView 22 <TextView
23 android:layout_width="wrap_content" 23 android:layout_width="wrap_content"
24 android:layout_height="wrap_content" 24 android:layout_height="wrap_content"
25 - android:layout_centerVertical="true"  
26 - android:textColor="#333333"  
27 - android:textSize="18sp"  
28 android:layout_centerInParent="true" 25 android:layout_centerInParent="true"
  26 + android:layout_centerVertical="true"
29 android:text="@string/myrecord" 27 android:text="@string/myrecord"
30 - /> 28 + android:textColor="#333333"
  29 + android:textSize="18sp" />
31 30
32 <TextView 31 <TextView
33 android:id="@+id/again_up" 32 android:id="@+id/again_up"
34 android:layout_width="wrap_content" 33 android:layout_width="wrap_content"
35 android:layout_height="wrap_content" 34 android:layout_height="wrap_content"
  35 + android:layout_alignParentRight="true"
36 android:layout_centerVertical="true" 36 android:layout_centerVertical="true"
37 android:padding="10dp" 37 android:padding="10dp"
38 - android:textColor="#333333"  
39 - android:textSize="15sp"  
40 - android:layout_alignParentRight="true"  
41 android:text="@string/again_up" 38 android:text="@string/again_up"
42 - /> 39 + android:textColor="#333333"
  40 + android:textSize="15sp" />
43 </RelativeLayout> 41 </RelativeLayout>
44 42
45 <RelativeLayout 43 <RelativeLayout
@@ -75,18 +73,17 @@ @@ -75,18 +73,17 @@
75 android:textColor="@color/white" 73 android:textColor="@color/white"
76 android:textSize="50sp" /> 74 android:textSize="50sp" />
77 75
78 - <RelativeLayout 76 + <LinearLayout
79 android:id="@+id/ry_finish" 77 android:id="@+id/ry_finish"
80 android:layout_width="match_parent" 78 android:layout_width="match_parent"
81 android:layout_height="wrap_content" 79 android:layout_height="wrap_content"
82 - android:layout_below="@id/kilometer_num"  
83 - android:layout_marginLeft="20dp"  
84 - android:layout_marginTop="10dp"  
85 - android:layout_marginRight="20dp">  
86 - 80 + android:layout_below="@id/kilometer_num">
  81 + <!---->
87 <LinearLayout 82 <LinearLayout
88 - android:layout_width="wrap_content"  
89 - android:layout_height="wrap_content" 83 + android:layout_width="0dp"
  84 + android:layout_height="match_parent"
  85 + android:layout_weight="1"
  86 + android:gravity="center"
90 android:orientation="vertical"> 87 android:orientation="vertical">
91 88
92 <TextView 89 <TextView
@@ -107,12 +104,11 @@ @@ -107,12 +104,11 @@
107 android:textColor="@color/white" 104 android:textColor="@color/white"
108 android:textSize="20sp" /> 105 android:textSize="20sp" />
109 </LinearLayout> 106 </LinearLayout>
110 -  
111 - 107 + <!---->
112 <LinearLayout 108 <LinearLayout
113 - android:layout_width="wrap_content"  
114 - android:layout_height="wrap_content"  
115 - android:layout_centerInParent="true" 109 + android:layout_width="0dp"
  110 + android:layout_height="match_parent"
  111 + android:layout_weight="1"
116 android:orientation="vertical"> 112 android:orientation="vertical">
117 113
118 <TextView 114 <TextView
@@ -133,11 +129,11 @@ @@ -133,11 +129,11 @@
133 android:textColor="@color/white" 129 android:textColor="@color/white"
134 android:textSize="20sp" /> 130 android:textSize="20sp" />
135 </LinearLayout> 131 </LinearLayout>
136 - 132 + <!---->
137 <LinearLayout 133 <LinearLayout
138 - android:layout_width="wrap_content"  
139 - android:layout_height="wrap_content"  
140 - android:layout_alignParentRight="true" 134 + android:layout_width="0dp"
  135 + android:layout_height="match_parent"
  136 + android:layout_weight="1"
141 android:orientation="vertical"> 137 android:orientation="vertical">
142 138
143 <TextView 139 <TextView
@@ -158,19 +154,21 @@ @@ -158,19 +154,21 @@
158 android:textColor="@color/white" 154 android:textColor="@color/white"
159 android:textSize="20sp" /> 155 android:textSize="20sp" />
160 </LinearLayout> 156 </LinearLayout>
161 - </RelativeLayout>  
162 -  
163 - <RelativeLayout 157 + <!---->
  158 + </LinearLayout>
  159 + <!---->
  160 + <!--未完成-->
  161 + <LinearLayout
164 android:layout_width="match_parent" 162 android:layout_width="match_parent"
165 android:layout_height="wrap_content" 163 android:layout_height="wrap_content"
166 android:layout_below="@id/ry_finish" 164 android:layout_below="@id/ry_finish"
167 - android:layout_marginLeft="20dp"  
168 - android:layout_marginTop="10dp"  
169 - android:layout_marginRight="20dp">  
170 - 165 + android:layout_marginTop="10dp">
  166 + <!---->
171 <LinearLayout 167 <LinearLayout
172 - android:layout_width="wrap_content"  
173 - android:layout_height="wrap_content" 168 + android:layout_width="0dp"
  169 + android:layout_height="match_parent"
  170 + android:layout_weight="1"
  171 + android:gravity="center"
174 android:orientation="vertical"> 172 android:orientation="vertical">
175 173
176 <TextView 174 <TextView
@@ -191,12 +189,11 @@ @@ -191,12 +189,11 @@
191 android:textColor="@color/white" 189 android:textColor="@color/white"
192 android:textSize="20sp" /> 190 android:textSize="20sp" />
193 </LinearLayout> 191 </LinearLayout>
194 -  
195 - 192 + <!---->
196 <LinearLayout 193 <LinearLayout
197 - android:layout_width="wrap_content"  
198 - android:layout_height="wrap_content"  
199 - android:layout_centerInParent="true" 194 + android:layout_width="0dp"
  195 + android:layout_height="match_parent"
  196 + android:layout_weight="1"
200 android:orientation="vertical"> 197 android:orientation="vertical">
201 198
202 <TextView 199 <TextView
@@ -217,11 +214,11 @@ @@ -217,11 +214,11 @@
217 android:textColor="@color/white" 214 android:textColor="@color/white"
218 android:textSize="20sp" /> 215 android:textSize="20sp" />
219 </LinearLayout> 216 </LinearLayout>
220 - 217 + <!---->
221 <LinearLayout 218 <LinearLayout
222 - android:layout_width="wrap_content"  
223 - android:layout_height="wrap_content"  
224 - android:layout_alignParentRight="true" 219 + android:layout_width="0dp"
  220 + android:layout_height="match_parent"
  221 + android:layout_weight="1"
225 android:orientation="vertical"> 222 android:orientation="vertical">
226 223
227 <TextView 224 <TextView
@@ -242,7 +239,8 @@ @@ -242,7 +239,8 @@
242 android:textColor="@color/white" 239 android:textColor="@color/white"
243 android:textSize="20sp" /> 240 android:textSize="20sp" />
244 </LinearLayout> 241 </LinearLayout>
245 - </RelativeLayout> 242 + <!---->
  243 + </LinearLayout>
246 244
247 </RelativeLayout> 245 </RelativeLayout>
248 246
@@ -260,7 +258,7 @@ @@ -260,7 +258,7 @@
260 android:text="@string/has_take_part_line" 258 android:text="@string/has_take_part_line"
261 android:textColor="#333333" 259 android:textColor="#333333"
262 android:textSize="18sp" /> 260 android:textSize="18sp" />
263 - 261 +
264 <LinearLayout 262 <LinearLayout
265 android:layout_width="wrap_content" 263 android:layout_width="wrap_content"
266 android:layout_height="wrap_content" 264 android:layout_height="wrap_content"
@@ -271,19 +269,18 @@ @@ -271,19 +269,18 @@
271 android:id="@+id/has_finish" 269 android:id="@+id/has_finish"
272 android:layout_width="wrap_content" 270 android:layout_width="wrap_content"
273 android:layout_height="wrap_content" 271 android:layout_height="wrap_content"
274 - android:textSize="18sp" 272 + android:text="@string/finish"
275 android:textColor="#36C28D" 273 android:textColor="#36C28D"
276 - android:text="@string/finish" /> 274 + android:textSize="18sp" />
277 275
278 <TextView 276 <TextView
279 android:id="@+id/no_finish" 277 android:id="@+id/no_finish"
280 android:layout_width="wrap_content" 278 android:layout_width="wrap_content"
281 android:layout_height="wrap_content" 279 android:layout_height="wrap_content"
282 - android:text="@string/no_finish"  
283 android:layout_marginLeft="20dp" 280 android:layout_marginLeft="20dp"
  281 + android:text="@string/no_finish"
284 android:textColor="#333333" 282 android:textColor="#333333"
285 - android:textSize="15sp"  
286 - /> 283 + android:textSize="15sp" />
287 </LinearLayout> 284 </LinearLayout>
288 </RelativeLayout> 285 </RelativeLayout>
289 286