Commit 4009eb8abd179c7c5b66ef7e066d9b52f8dfbfac
1 parent
bf5783f5
1 增加,详情页面,地图根据卡片进行缩放功能
2 修复用户进入详情页面,围栏id为空时,闪退的问题
Showing
6 changed files
with
249 additions
and
249 deletions
moudle_pedometer/src/main/java/com/cnlive/moudle/collectionTrace/frame/view/CollRunRaceDetailFragmentView.java
| @@ -8,6 +8,7 @@ import android.hardware.SensorEvent; | @@ -8,6 +8,7 @@ import android.hardware.SensorEvent; | ||
| 8 | import android.hardware.SensorEventListener; | 8 | import android.hardware.SensorEventListener; |
| 9 | import android.hardware.SensorManager; | 9 | import android.hardware.SensorManager; |
| 10 | import android.text.TextUtils; | 10 | import android.text.TextUtils; |
| 11 | +import android.util.Log; | ||
| 11 | import android.view.View; | 12 | import android.view.View; |
| 12 | import android.view.ViewTreeObserver; | 13 | import android.view.ViewTreeObserver; |
| 13 | import android.widget.Toast; | 14 | import android.widget.Toast; |
| @@ -20,6 +21,7 @@ import com.baidu.mapapi.map.BaiduMap; | @@ -20,6 +21,7 @@ import com.baidu.mapapi.map.BaiduMap; | ||
| 20 | import com.baidu.mapapi.map.BitmapDescriptor; | 21 | import com.baidu.mapapi.map.BitmapDescriptor; |
| 21 | import com.baidu.mapapi.map.BitmapDescriptorFactory; | 22 | import com.baidu.mapapi.map.BitmapDescriptorFactory; |
| 22 | import com.baidu.mapapi.map.MapStatus; | 23 | import com.baidu.mapapi.map.MapStatus; |
| 24 | +import com.baidu.mapapi.map.MapStatusUpdate; | ||
| 23 | import com.baidu.mapapi.map.MapStatusUpdateFactory; | 25 | import com.baidu.mapapi.map.MapStatusUpdateFactory; |
| 24 | import com.baidu.mapapi.map.MapView; | 26 | import com.baidu.mapapi.map.MapView; |
| 25 | import com.baidu.mapapi.map.MarkerOptions; | 27 | import com.baidu.mapapi.map.MarkerOptions; |
| @@ -44,7 +46,6 @@ import com.baidu.mapapi.search.route.WalkingRouteResult; | @@ -44,7 +46,6 @@ import com.baidu.mapapi.search.route.WalkingRouteResult; | ||
| 44 | import com.baidu.trace.LBSTraceClient; | 46 | import com.baidu.trace.LBSTraceClient; |
| 45 | import com.baidu.trace.model.SortType; | 47 | import com.baidu.trace.model.SortType; |
| 46 | import com.cnlive.moudle.collectionTrace.ui.activity.RaceNameListActivity; | 48 | import com.cnlive.moudle.collectionTrace.ui.activity.RaceNameListActivity; |
| 47 | -import com.cnlive.moudle.collectionTrace.ui.activity.StartCollectTraceActivity; | ||
| 48 | import com.cnlive.moudle.collectionTrace.ui.fragment.CollRunRaceDetailFragment; | 49 | import com.cnlive.moudle.collectionTrace.ui.fragment.CollRunRaceDetailFragment; |
| 49 | import com.cnlive.moudle.collectionTrace.commonInfo.CollCommonInfo; | 50 | import com.cnlive.moudle.collectionTrace.commonInfo.CollCommonInfo; |
| 50 | import com.cnlive.moudle.pedometer.model.Constant; | 51 | import com.cnlive.moudle.pedometer.model.Constant; |
| @@ -91,14 +92,15 @@ public class CollRunRaceDetailFragmentView implements MvpView, SensorEventListen | @@ -91,14 +92,15 @@ public class CollRunRaceDetailFragmentView implements MvpView, SensorEventListen | ||
| 91 | private final int DEFULT_ZOOM = 17; | 92 | private final int DEFULT_ZOOM = 17; |
| 92 | private RoutePlanSearch routePlanSearch = null; // 路线规划 | 93 | private RoutePlanSearch routePlanSearch = null; // 路线规划 |
| 93 | private LatLng endLatLng; | 94 | private LatLng endLatLng; |
| 94 | - private final int START_MARK = 0;//起始点 | ||
| 95 | - private final int END_MARK = 1;//终止点 | ||
| 96 | private String test = "[{\"latitude\":39.933889208848,\"latitudeE6\":3.9933889208848E7,\"longitude\":116.30900265517,\"longitudeE6\":1.1630900265517001E8},{\"latitude\":39.933868507347,\"latitudeE6\":3.9933868507347E7,\"longitude\":116.30865416508,\"longitudeE6\":1.1630865416508E8},{\"latitude\":39.934756505077,\"latitudeE6\":3.9934756505077E7,\"longitude\":116.30860516469,\"longitudeE6\":1.1630860516468999E8},{\"latitude\":39.934781620502,\"latitudeE6\":3.9934781620502E7,\"longitude\":116.30961013007,\"longitudeE6\":1.1630961013007E8},{\"latitude\":39.934881620374,\"latitudeE6\":3.9934881620374E7,\"longitude\":116.30960513008,\"longitudeE6\":1.1630960513008E8},{\"latitude\":39.934077623132,\"latitudeE6\":3.9934077623132E7,\"longitude\":116.30965812942,\"longitudeE6\":1.1630965812942E8},{\"latitude\":39.933972618463,\"latitudeE6\":3.9933972618463E7,\"longitude\":116.30962113087,\"longitudeE6\":1.1630962113087E8},{\"latitude\":39.933932608856,\"latitudeE6\":3.9933932608856E7,\"longitude\":116.30953913383,\"longitudeE6\":1.1630953913383E8}]"; | 95 | private String test = "[{\"latitude\":39.933889208848,\"latitudeE6\":3.9933889208848E7,\"longitude\":116.30900265517,\"longitudeE6\":1.1630900265517001E8},{\"latitude\":39.933868507347,\"latitudeE6\":3.9933868507347E7,\"longitude\":116.30865416508,\"longitudeE6\":1.1630865416508E8},{\"latitude\":39.934756505077,\"latitudeE6\":3.9934756505077E7,\"longitude\":116.30860516469,\"longitudeE6\":1.1630860516468999E8},{\"latitude\":39.934781620502,\"latitudeE6\":3.9934781620502E7,\"longitude\":116.30961013007,\"longitudeE6\":1.1630961013007E8},{\"latitude\":39.934881620374,\"latitudeE6\":3.9934881620374E7,\"longitude\":116.30960513008,\"longitudeE6\":1.1630960513008E8},{\"latitude\":39.934077623132,\"latitudeE6\":3.9934077623132E7,\"longitude\":116.30965812942,\"longitudeE6\":1.1630965812942E8},{\"latitude\":39.933972618463,\"latitudeE6\":3.9933972618463E7,\"longitude\":116.30962113087,\"longitudeE6\":1.1630962113087E8},{\"latitude\":39.933932608856,\"latitudeE6\":3.9933932608856E7,\"longitude\":116.30953913383,\"longitudeE6\":1.1630953913383E8}]"; |
| 97 | private LinkedList<LatLng> importLatLngs;//关键点 | 96 | private LinkedList<LatLng> importLatLngs;//关键点 |
| 98 | - private LatLng startLatLng = new LatLng(39.934733, 116.308646);//起始点 | ||
| 99 | - private List<LatLng> trackPoints; | ||
| 100 | public RunRaceDetailInfo runRaceDetailInfo; | 97 | public RunRaceDetailInfo runRaceDetailInfo; |
| 101 | private LBSTraceClient mClient = null; | 98 | private LBSTraceClient mClient = null; |
| 99 | + private List<LatLng> queryResultPoints;//查询到的历史轨迹 | ||
| 100 | + private boolean isChangeMapState = true;//上滑卡片是否缩放地图与倾斜 | ||
| 101 | + private float initZoom = 0; | ||
| 102 | + private final float INIT_MAP_OVERLOOK = -40f;//地图倾斜角度 | ||
| 103 | + private final float DEFAULT_MAP_AUTO_ZOOM = -0.8f;//根据点位,自动缩放的比例 | ||
| 102 | 104 | ||
| 103 | public CollRunRaceDetailFragmentView(CollRunRaceDetailFragment fragment) { | 105 | public CollRunRaceDetailFragmentView(CollRunRaceDetailFragment fragment) { |
| 104 | this.fragment = fragment; | 106 | this.fragment = fragment; |
| @@ -110,6 +112,7 @@ public class CollRunRaceDetailFragmentView implements MvpView, SensorEventListen | @@ -110,6 +112,7 @@ public class CollRunRaceDetailFragmentView implements MvpView, SensorEventListen | ||
| 110 | 112 | ||
| 111 | 113 | ||
| 112 | public void initView(RunRaceDetailInfo runRaceDetailInfo, String uid) { | 114 | public void initView(RunRaceDetailInfo runRaceDetailInfo, String uid) { |
| 115 | + queryResultPoints = new ArrayList<>(); | ||
| 113 | if (fragment.getActivity() == null) { | 116 | if (fragment.getActivity() == null) { |
| 114 | return; | 117 | return; |
| 115 | } | 118 | } |
| @@ -126,6 +129,7 @@ public class CollRunRaceDetailFragmentView implements MvpView, SensorEventListen | @@ -126,6 +129,7 @@ public class CollRunRaceDetailFragmentView implements MvpView, SensorEventListen | ||
| 126 | fragment.binding.emptyLayout.setVisibility(View.GONE); | 129 | fragment.binding.emptyLayout.setVisibility(View.GONE); |
| 127 | //设置底部卡片第一次可滑动的位置 | 130 | //设置底部卡片第一次可滑动的位置 |
| 128 | fragment.binding.slidingLayout.setAnchorPoint(0.6f); | 131 | fragment.binding.slidingLayout.setAnchorPoint(0.6f); |
| 132 | + | ||
| 129 | fragment.binding.slidingLayout.addPanelSlideListener(new SlidingUpPanelLayout.PanelSlideListener() { | 133 | fragment.binding.slidingLayout.addPanelSlideListener(new SlidingUpPanelLayout.PanelSlideListener() { |
| 130 | @Override | 134 | @Override |
| 131 | public void onPanelSlide(View panel, float slideOffset) { | 135 | public void onPanelSlide(View panel, float slideOffset) { |
| @@ -133,23 +137,39 @@ public class CollRunRaceDetailFragmentView implements MvpView, SensorEventListen | @@ -133,23 +137,39 @@ public class CollRunRaceDetailFragmentView implements MvpView, SensorEventListen | ||
| 133 | 137 | ||
| 134 | @Override | 138 | @Override |
| 135 | public void onPanelStateChanged(View panel, SlidingUpPanelLayout.PanelState previousState, SlidingUpPanelLayout.PanelState newState) { | 139 | public void onPanelStateChanged(View panel, SlidingUpPanelLayout.PanelState previousState, SlidingUpPanelLayout.PanelState newState) { |
| 140 | + if (newState == SlidingUpPanelLayout.PanelState.ANCHORED) { | ||
| 141 | + if (isChangeMapState) { | ||
| 142 | + if (null != baiduMap) { | ||
| 143 | + if (null != baiduMap.getMapStatus()) { | ||
| 144 | + MapStatus mapStatus = new MapStatus | ||
| 145 | + .Builder(baiduMap.getMapStatus()) | ||
| 146 | + .overlook(0) | ||
| 147 | + .zoom((float) (baiduMap.getMapStatus().zoom - 1.5)).build(); | ||
| 148 | + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mapStatus); | ||
| 149 | + baiduMap.animateMapStatus(mapStatusUpdate); | ||
| 150 | + } | ||
| 151 | + } | ||
| 152 | + } | ||
| 153 | + isChangeMapState = false; | ||
| 154 | + } else if (newState == SlidingUpPanelLayout.PanelState.COLLAPSED) { | ||
| 155 | + | ||
| 156 | + if (null != baiduMap) { | ||
| 157 | + if (0 == initZoom) { | ||
| 158 | + initZoom = DEFULT_ZOOM; | ||
| 159 | + } | ||
| 160 | + MapStatus mapStatus = new MapStatus | ||
| 161 | + .Builder(baiduMap.getMapStatus()) | ||
| 162 | + .overlook(INIT_MAP_OVERLOOK) | ||
| 163 | + .zoom(initZoom) | ||
| 164 | + .build(); | ||
| 165 | + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mapStatus); | ||
| 166 | + baiduMap.animateMapStatus(mapStatusUpdate); | ||
| 167 | + isChangeMapState = true; | ||
| 168 | + } | ||
| 169 | + } | ||
| 136 | } | 170 | } |
| 137 | }); | 171 | }); |
| 138 | /*************************设置相关页面数据***************************/ | 172 | /*************************设置相关页面数据***************************/ |
| 139 | - //获取轨迹开始时间 | ||
| 140 | - if (!TextUtils.isEmpty(runRaceDetailInfo.getStartTime()) && !TextUtils.isEmpty(runRaceDetailInfo.getEndTime()) && !TextUtils.isEmpty(runRaceDetailInfo.getEntityName())) { | ||
| 141 | - long startTime = Long.parseLong(runRaceDetailInfo.getStartTime()); | ||
| 142 | - long endTime = Long.parseLong(runRaceDetailInfo.getEndTime()); | ||
| 143 | - String entityName = runRaceDetailInfo.getEntityName(); | ||
| 144 | - MyMapUtil.queryHistoryTrace(getContext(), mClient, entityName, startTime, endTime, new MyMapUtil.CallBack() { | ||
| 145 | - @Override | ||
| 146 | - public void success(List<LatLng> resultPoints) { | ||
| 147 | - if (null != resultPoints) { | ||
| 148 | - MyMapUtil.drawHistoryTrack(getContext(), baiduMap, resultPoints, SortType.asc, R.color.green_round, R.drawable.icon_start, R.drawable.icon_end); | ||
| 149 | - } | ||
| 150 | - } | ||
| 151 | - }); | ||
| 152 | - } | ||
| 153 | //设置标题 | 173 | //设置标题 |
| 154 | if (!TextUtils.isEmpty(runRaceDetailInfo.getTitle())) { | 174 | if (!TextUtils.isEmpty(runRaceDetailInfo.getTitle())) { |
| 155 | fragment.binding.includeStreet.tvRaceTitle.setText(runRaceDetailInfo.getTitle()); | 175 | fragment.binding.includeStreet.tvRaceTitle.setText(runRaceDetailInfo.getTitle()); |
| @@ -213,8 +233,10 @@ public class CollRunRaceDetailFragmentView implements MvpView, SensorEventListen | @@ -213,8 +233,10 @@ public class CollRunRaceDetailFragmentView implements MvpView, SensorEventListen | ||
| 213 | @Override | 233 | @Override |
| 214 | public void success(List<LatLng> resultPoints) { | 234 | public void success(List<LatLng> resultPoints) { |
| 215 | if (null != resultPoints && resultPoints.size() > 1) { | 235 | if (null != resultPoints && resultPoints.size() > 1) { |
| 236 | + queryResultPoints.clear(); | ||
| 237 | + queryResultPoints.addAll(resultPoints); | ||
| 216 | MyMapUtil.drawHistoryTrack(getContext(), baiduMap, resultPoints, SortType.asc, R.color.green_round, R.drawable.icon_start, R.drawable.icon_end); | 238 | MyMapUtil.drawHistoryTrack(getContext(), baiduMap, resultPoints, SortType.asc, R.color.green_round, R.drawable.icon_start, R.drawable.icon_end); |
| 217 | - MyMapUtil.setMapAutoZoom(baiduMap, resultPoints, -1.5f); | 239 | + initZoom = MyMapUtil.setMapAutoZoom(baiduMap, resultPoints, DEFAULT_MAP_AUTO_ZOOM); |
| 218 | } | 240 | } |
| 219 | } | 241 | } |
| 220 | }); | 242 | }); |
| @@ -287,12 +309,15 @@ public class CollRunRaceDetailFragmentView implements MvpView, SensorEventListen | @@ -287,12 +309,15 @@ public class CollRunRaceDetailFragmentView implements MvpView, SensorEventListen | ||
| 287 | if (baiduMap == null) { | 309 | if (baiduMap == null) { |
| 288 | baiduMap = mMapView.getMap(); | 310 | baiduMap = mMapView.getMap(); |
| 289 | } | 311 | } |
| 290 | - if (routePlanSearch == null) { | ||
| 291 | - routePlanSearch = RoutePlanSearch.newInstance(); | ||
| 292 | - } | ||
| 293 | if (mUiSettings == null) { | 312 | if (mUiSettings == null) { |
| 294 | mUiSettings = baiduMap.getUiSettings(); | 313 | mUiSettings = baiduMap.getUiSettings(); |
| 295 | } | 314 | } |
| 315 | + MapStatus mapStatus = new MapStatus | ||
| 316 | + .Builder(baiduMap.getMapStatus()) | ||
| 317 | + .overlook(INIT_MAP_OVERLOOK) | ||
| 318 | + .build(); | ||
| 319 | + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mapStatus); | ||
| 320 | + baiduMap.animateMapStatus(mapStatusUpdate); | ||
| 296 | //设置定位模式, 默认为 LocationMode.NORMAL 普通态 | 321 | //设置定位模式, 默认为 LocationMode.NORMAL 普通态 |
| 297 | mCurrentMode = MyLocationConfiguration.LocationMode.NORMAL; | 322 | mCurrentMode = MyLocationConfiguration.LocationMode.NORMAL; |
| 298 | // 设置定位图标修改为自定义marker | 323 | // 设置定位图标修改为自定义marker |
| @@ -646,19 +671,9 @@ public class CollRunRaceDetailFragmentView implements MvpView, SensorEventListen | @@ -646,19 +671,9 @@ public class CollRunRaceDetailFragmentView implements MvpView, SensorEventListen | ||
| 646 | } | 671 | } |
| 647 | 672 | ||
| 648 | MapStatus.Builder builder = new MapStatus.Builder(); | 673 | MapStatus.Builder builder = new MapStatus.Builder(); |
| 649 | - | ||
| 650 | -// if (isFirstLoc) { | ||
| 651 | -// isFirstLoc = false; | ||
| 652 | firstLatLng = new LatLng(location.getLatitude(), | 674 | firstLatLng = new LatLng(location.getLatitude(), |
| 653 | location.getLongitude()); | 675 | location.getLongitude()); |
| 654 | baiduMap.setMyLocationData(followMyLocation); | 676 | baiduMap.setMyLocationData(followMyLocation); |
| 655 | -// builder.target(firstLatLng).zoom(DEFULT_ZOOM); | ||
| 656 | -// baiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build())); | ||
| 657 | - | ||
| 658 | -// //显示当前位置图标 | ||
| 659 | -// Bitmap pointBitmap = BitmapUtil.getBitmapFromDp(getContext(), BitmapFactory.decodeResource(getContext().getResources(), R.drawable.rt_ic_location), 40, 40); | ||
| 660 | -// currentMark = new MarkerOptions().position(firstLatLng).icon(BitmapDescriptorFactory.fromBitmap(pointBitmap)); | ||
| 661 | -// baiduMap.addOverlay(currentMark); | ||
| 662 | 677 | ||
| 663 | //根据几个关键点进行步行路径规划 | 678 | //根据几个关键点进行步行路径规划 |
| 664 | // if (importLatLngs != null) { | 679 | // if (importLatLngs != null) { |
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/commonInfo/CommonInfo.java
| @@ -279,26 +279,26 @@ public class CommonInfo { | @@ -279,26 +279,26 @@ public class CommonInfo { | ||
| 279 | } | 279 | } |
| 280 | 280 | ||
| 281 | 281 | ||
| 282 | - /** | ||
| 283 | - * 设置赛事标题 | ||
| 284 | - * | ||
| 285 | - * @param context | ||
| 286 | - * @param streetTitle | ||
| 287 | - */ | ||
| 288 | - public static void setStreetTitle(Context context, String streetTitle) { | ||
| 289 | - MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).putString("runStreetTitle", streetTitle); | ||
| 290 | - | ||
| 291 | - } | ||
| 292 | - | ||
| 293 | - /** | ||
| 294 | - * 获取赛事标题 | ||
| 295 | - * | ||
| 296 | - * @param context | ||
| 297 | - */ | ||
| 298 | - public static String getStreetTitle(Context context) { | ||
| 299 | - return MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).getString("runStreetTitle", ""); | ||
| 300 | - | ||
| 301 | - } | 282 | +// /** |
| 283 | +// * 设置赛事标题 | ||
| 284 | +// * | ||
| 285 | +// * @param context | ||
| 286 | +// * @param streetTitle | ||
| 287 | +// */ | ||
| 288 | +// public static void setStreetTitle(Context context, String streetTitle) { | ||
| 289 | +// MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).putString("runStreetTitle", streetTitle); | ||
| 290 | +// | ||
| 291 | +// } | ||
| 292 | +// | ||
| 293 | +// /** | ||
| 294 | +// * 获取赛事标题 | ||
| 295 | +// * | ||
| 296 | +// * @param context | ||
| 297 | +// */ | ||
| 298 | +// public static String getStreetTitle(Context context) { | ||
| 299 | +// return MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).getString("runStreetTitle", ""); | ||
| 300 | +// | ||
| 301 | +// } | ||
| 302 | 302 | ||
| 303 | // /** | 303 | // /** |
| 304 | // * 设置起点经纬度 | 304 | // * 设置起点经纬度 |
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/RunRaceDetailFragmentView.java
| @@ -26,6 +26,7 @@ import com.baidu.mapapi.map.BaiduMap; | @@ -26,6 +26,7 @@ import com.baidu.mapapi.map.BaiduMap; | ||
| 26 | import com.baidu.mapapi.map.BitmapDescriptor; | 26 | import com.baidu.mapapi.map.BitmapDescriptor; |
| 27 | import com.baidu.mapapi.map.BitmapDescriptorFactory; | 27 | import com.baidu.mapapi.map.BitmapDescriptorFactory; |
| 28 | import com.baidu.mapapi.map.MapStatus; | 28 | import com.baidu.mapapi.map.MapStatus; |
| 29 | +import com.baidu.mapapi.map.MapStatusUpdate; | ||
| 29 | import com.baidu.mapapi.map.MapStatusUpdateFactory; | 30 | import com.baidu.mapapi.map.MapStatusUpdateFactory; |
| 30 | import com.baidu.mapapi.map.MapView; | 31 | import com.baidu.mapapi.map.MapView; |
| 31 | import com.baidu.mapapi.map.MarkerOptions; | 32 | import com.baidu.mapapi.map.MarkerOptions; |
| @@ -105,6 +106,11 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { | @@ -105,6 +106,11 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { | ||
| 105 | private boolean isDifferentStreet = false; | 106 | private boolean isDifferentStreet = false; |
| 106 | private LBSTraceClient mClient = null; | 107 | private LBSTraceClient mClient = null; |
| 107 | public LatLng endLatLng;//用于终点判断 | 108 | public LatLng endLatLng;//用于终点判断 |
| 109 | + private boolean isChangeMapState = true;//上滑卡片是否缩放地图与倾斜 | ||
| 110 | + private float initZoom = 0; | ||
| 111 | + private final float INIT_MAP_OVERLOOK = -40f;//地图倾斜角度 | ||
| 112 | + private final float DEFAULT_MAP_AUTO_ZOOM = -0.8f;//根据点位,自动缩放的比例 | ||
| 113 | + private List<LatLng> queryResultPoints;//查询到的历史轨迹 | ||
| 108 | 114 | ||
| 109 | public RunRaceDetailFragmentView(RunRaceDetailFragment fragment) { | 115 | public RunRaceDetailFragmentView(RunRaceDetailFragment fragment) { |
| 110 | this.fragment = fragment; | 116 | this.fragment = fragment; |
| @@ -116,57 +122,10 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { | @@ -116,57 +122,10 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { | ||
| 116 | 122 | ||
| 117 | 123 | ||
| 118 | public void initView(RunRaceDetailInfo runRaceDetailInfo) { | 124 | public void initView(RunRaceDetailInfo runRaceDetailInfo) { |
| 119 | - Log.e(TAG, "initView: " + TimeUtil.getNowTimeStamp()); | ||
| 120 | -// new Handler().postDelayed(new Runnable() { | ||
| 121 | -// @Override | ||
| 122 | -// public void run() { | ||
| 123 | -// baiduMap.snapshot(new BaiduMap.SnapshotReadyCallback() { | ||
| 124 | -// @Override | ||
| 125 | -// public void onSnapshotReady(Bitmap bitmap) { | ||
| 126 | -// SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); | ||
| 127 | -// if (null == bitmap) { | ||
| 128 | -// return; | ||
| 129 | -// } | ||
| 130 | -// QMUITipDialogUtil.loadingDialog(getContext(), "上传", false); | ||
| 131 | -// //开始保存截屏 | ||
| 132 | -// try { | ||
| 133 | -// File image = new File(getContext().getExternalCacheDir() + "/location_screenshot_" + sdf.format(new Date()) + ".jpeg"); | ||
| 134 | -// FileOutputStream fos = new FileOutputStream(image); | ||
| 135 | -// boolean b = bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos); | ||
| 136 | -// fos.flush(); | ||
| 137 | -// fos.close(); | ||
| 138 | -// List<String> imagePaths = new ArrayList<>(); | ||
| 139 | -// imagePaths.add(image.getAbsolutePath()); | ||
| 140 | -// Log.e(TAG, "onSnapshotReady: "+image.getAbsolutePath() ); | ||
| 141 | -// | ||
| 142 | -// UploadLogic.uploadAddressPicInfo(getContext(), imagePaths, new Event<String>() | ||
| 143 | -// .setFailureCallback(new FailureCallback() { | ||
| 144 | -// @Override | ||
| 145 | -// public void onFailure(int i, String s) { | ||
| 146 | -// QMUITipDialogUtil.dismessDialog(); | ||
| 147 | -// Log.e(TAG, "onFailure: " + s); | ||
| 148 | -// } | ||
| 149 | -// }) | ||
| 150 | -// .setSuccessCallback(new SuccessCallback<String>() { | ||
| 151 | -// @Override | ||
| 152 | -// public void onSuccess(String data) { | ||
| 153 | -// QMUITipDialogUtil.dismessDialog(); | ||
| 154 | -// Log.e(TAG, "onSuccess: " + data); | ||
| 155 | -// } | ||
| 156 | -// }) | ||
| 157 | -// ); | ||
| 158 | -// } catch (Exception e) { | ||
| 159 | -// e.printStackTrace(); | ||
| 160 | -// } | ||
| 161 | -// } | ||
| 162 | -// }); | ||
| 163 | -// // | ||
| 164 | -// } | ||
| 165 | -// },2000); | ||
| 166 | - | ||
| 167 | if (fragment.getActivity() == null) { | 125 | if (fragment.getActivity() == null) { |
| 168 | return; | 126 | return; |
| 169 | } | 127 | } |
| 128 | + queryResultPoints = new ArrayList<>(); | ||
| 170 | this.runRaceDetailInfo = runRaceDetailInfo; | 129 | this.runRaceDetailInfo = runRaceDetailInfo; |
| 171 | //轨迹开始时间 | 130 | //轨迹开始时间 |
| 172 | long startTime = 0; | 131 | long startTime = 0; |
| @@ -184,17 +143,14 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { | @@ -184,17 +143,14 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { | ||
| 184 | @Override | 143 | @Override |
| 185 | public void success(List<LatLng> resultPoints) { | 144 | public void success(List<LatLng> resultPoints) { |
| 186 | if (resultPoints != null && resultPoints.size() > 1) { | 145 | if (resultPoints != null && resultPoints.size() > 1) { |
| 146 | + queryResultPoints.clear(); | ||
| 147 | + queryResultPoints.addAll(resultPoints); | ||
| 187 | startLatLng = resultPoints.get(0); | 148 | startLatLng = resultPoints.get(0); |
| 188 | endLatLng = resultPoints.get(resultPoints.size() - 1); | 149 | endLatLng = resultPoints.get(resultPoints.size() - 1); |
| 189 | MyMapUtil.drawServerLineTrack(getContext(), baiduMap, resultPoints, SortType.asc, R.color.green_round, R.drawable.icon_start, R.drawable.icon_end); | 150 | MyMapUtil.drawServerLineTrack(getContext(), baiduMap, resultPoints, SortType.asc, R.color.green_round, R.drawable.icon_start, R.drawable.icon_end); |
| 190 | // //自动计算地图缩放 | 151 | // //自动计算地图缩放 |
| 191 | -// MapStatus.Builder builder = new MapStatus.Builder(); | ||
| 192 | -// builder.target(MyMapUtil.getCenterZoomPosition(resultPoints)); | ||
| 193 | -// builder.zoom(MyMapUtil.getZoom(resultPoints)); | ||
| 194 | -// baiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build())); | ||
| 195 | - | ||
| 196 | //设置地图自动缩放 | 152 | //设置地图自动缩放 |
| 197 | - MyMapUtil.setMapAutoZoom(baiduMap, resultPoints, -1.5f); | 153 | + initZoom = MyMapUtil.setMapAutoZoom(baiduMap, resultPoints, -1.5f); |
| 198 | 154 | ||
| 199 | } | 155 | } |
| 200 | } | 156 | } |
| @@ -258,23 +214,10 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { | @@ -258,23 +214,10 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { | ||
| 258 | 214 | ||
| 259 | } | 215 | } |
| 260 | 216 | ||
| 261 | -// if (slideOffset == 0) { | ||
| 262 | -// //在初始位置 | ||
| 263 | -// if (fragment.binding.includeStreet.rlStartBtn.getVisibility() == View.GONE) { | ||
| 264 | -// fragment.binding.includeStreet.rlStartBtn.setVisibility(View.VISIBLE); | ||
| 265 | -// } | ||
| 266 | -// | ||
| 267 | -// } else { | ||
| 268 | -// //用户进行滑动 | ||
| 269 | -// if (fragment.binding.includeStreet.rlStartBtn.getVisibility() == View.VISIBLE) { | ||
| 270 | -// fragment.binding.includeStreet.rlStartBtn.setVisibility(View.GONE); | ||
| 271 | -// } | ||
| 272 | -// } | ||
| 273 | } | 217 | } |
| 274 | 218 | ||
| 275 | @Override | 219 | @Override |
| 276 | public void onPanelStateChanged(View panel, SlidingUpPanelLayout.PanelState previousState, SlidingUpPanelLayout.PanelState newState) { | 220 | public void onPanelStateChanged(View panel, SlidingUpPanelLayout.PanelState previousState, SlidingUpPanelLayout.PanelState newState) { |
| 277 | -// Log.e(TAG, "previousState: " + previousState + ",newState:" + newState); | ||
| 278 | if (previousState == SlidingUpPanelLayout.PanelState.ANCHORED && newState == SlidingUpPanelLayout.PanelState.DRAGGING) { | 221 | if (previousState == SlidingUpPanelLayout.PanelState.ANCHORED && newState == SlidingUpPanelLayout.PanelState.DRAGGING) { |
| 279 | if (fragment.binding.flTop.getVisibility() != View.VISIBLE) { | 222 | if (fragment.binding.flTop.getVisibility() != View.VISIBLE) { |
| 280 | QMUIStatusBarHelper.setStatusBarDarkMode(fragment.getActivity()); | 223 | QMUIStatusBarHelper.setStatusBarDarkMode(fragment.getActivity()); |
| @@ -303,6 +246,39 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { | @@ -303,6 +246,39 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { | ||
| 303 | fragment.binding.flTop.setVisibility(View.GONE); | 246 | fragment.binding.flTop.setVisibility(View.GONE); |
| 304 | } | 247 | } |
| 305 | } | 248 | } |
| 249 | + //设置地图缩放 | ||
| 250 | + if (newState == SlidingUpPanelLayout.PanelState.ANCHORED) { | ||
| 251 | + if (isChangeMapState) { | ||
| 252 | + if (null != baiduMap) { | ||
| 253 | + if (null != baiduMap.getMapStatus()) { | ||
| 254 | + MapStatus mapStatus = new MapStatus | ||
| 255 | + .Builder(baiduMap.getMapStatus()) | ||
| 256 | + .overlook(0) | ||
| 257 | + .zoom((float) (baiduMap.getMapStatus().zoom - 1.5)).build(); | ||
| 258 | + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mapStatus); | ||
| 259 | + baiduMap.animateMapStatus(mapStatusUpdate); | ||
| 260 | + } | ||
| 261 | + } | ||
| 262 | + } | ||
| 263 | + isChangeMapState = false; | ||
| 264 | + } else if (newState == SlidingUpPanelLayout.PanelState.COLLAPSED) { | ||
| 265 | + | ||
| 266 | + if (null != baiduMap) { | ||
| 267 | + if (0 == initZoom) { | ||
| 268 | + initZoom = DEFULT_ZOOM; | ||
| 269 | + } | ||
| 270 | + MapStatus mapStatus = new MapStatus | ||
| 271 | + .Builder(baiduMap.getMapStatus()) | ||
| 272 | + .overlook(INIT_MAP_OVERLOOK) | ||
| 273 | + .zoom(initZoom) | ||
| 274 | + .build(); | ||
| 275 | + MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mapStatus); | ||
| 276 | + baiduMap.animateMapStatus(mapStatusUpdate); | ||
| 277 | + isChangeMapState = true; | ||
| 278 | + } | ||
| 279 | + } | ||
| 280 | + | ||
| 281 | + // | ||
| 306 | 282 | ||
| 307 | } | 283 | } |
| 308 | }); | 284 | }); |
| @@ -317,13 +293,12 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { | @@ -317,13 +293,12 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { | ||
| 317 | } | 293 | } |
| 318 | }); | 294 | }); |
| 319 | /*************************设置相关页面数据***************************/ | 295 | /*************************设置相关页面数据***************************/ |
| 320 | - if (runRaceDetailInfo.getFenceId() != null&&!TextUtils.isEmpty(runRaceDetailInfo.getFenceId())) { | 296 | + if (runRaceDetailInfo.getFenceId() != null && !TextUtils.isEmpty(runRaceDetailInfo.getFenceId())) { |
| 321 | //设置围栏ID | 297 | //设置围栏ID |
| 322 | CommonInfo.setFenceId(getContext(), Integer.parseInt(runRaceDetailInfo.getFenceId())); | 298 | CommonInfo.setFenceId(getContext(), Integer.parseInt(runRaceDetailInfo.getFenceId())); |
| 323 | } | 299 | } |
| 324 | //设置标题 | 300 | //设置标题 |
| 325 | if (!TextUtils.isEmpty(runRaceDetailInfo.getTitle())) { | 301 | if (!TextUtils.isEmpty(runRaceDetailInfo.getTitle())) { |
| 326 | - CommonInfo.setStreetTitle(getContext(),runRaceDetailInfo.getTitle()); | ||
| 327 | fragment.binding.includeStreet.tvRaceTitle.setText(runRaceDetailInfo.getTitle()); | 302 | fragment.binding.includeStreet.tvRaceTitle.setText(runRaceDetailInfo.getTitle()); |
| 328 | fragment.binding.includeStreet.tvRaceTitle.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { | 303 | fragment.binding.includeStreet.tvRaceTitle.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { |
| 329 | @Override | 304 | @Override |
| @@ -356,7 +331,7 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { | @@ -356,7 +331,7 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { | ||
| 356 | fragment.binding.includeStreet.tvAddress.setText(runRaceDetailInfo.getAddress()); | 331 | fragment.binding.includeStreet.tvAddress.setText(runRaceDetailInfo.getAddress()); |
| 357 | //设置活动距离 | 332 | //设置活动距离 |
| 358 | if (!TextUtils.isEmpty(runRaceDetailInfo.getMileage())) { | 333 | if (!TextUtils.isEmpty(runRaceDetailInfo.getMileage())) { |
| 359 | - fragment.binding.includeStreet.tvAddress.append("\t\t全长" + runRaceDetailInfo.getMileage()+"公里"); | 334 | + fragment.binding.includeStreet.tvAddress.append("\t\t全长" + runRaceDetailInfo.getMileage() + "公里"); |
| 360 | } | 335 | } |
| 361 | } | 336 | } |
| 362 | 337 | ||
| @@ -444,7 +419,7 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { | @@ -444,7 +419,7 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { | ||
| 444 | fragment.binding.includeRank.tvKingNickName.setText(runRaceDetailInfo.getFirstName()); | 419 | fragment.binding.includeRank.tvKingNickName.setText(runRaceDetailInfo.getFirstName()); |
| 445 | } | 420 | } |
| 446 | //第一名用时 | 421 | //第一名用时 |
| 447 | - if (!TextUtils.isEmpty(runRaceDetailInfo.getFirstEmployTime())){ | 422 | + if (!TextUtils.isEmpty(runRaceDetailInfo.getFirstEmployTime())) { |
| 448 | fragment.binding.includeRank.tvFirstTime.setText(TimeUtil.stampToChronometer(Long.parseLong(runRaceDetailInfo.getFirstEmployTime()))); | 423 | fragment.binding.includeRank.tvFirstTime.setText(TimeUtil.stampToChronometer(Long.parseLong(runRaceDetailInfo.getFirstEmployTime()))); |
| 449 | } | 424 | } |
| 450 | } else { | 425 | } else { |
| @@ -1132,6 +1107,7 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { | @@ -1132,6 +1107,7 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { | ||
| 1132 | if (location.getRadius() > Constant.LOCA_ACCURACY) { | 1107 | if (location.getRadius() > Constant.LOCA_ACCURACY) { |
| 1133 | Toast.makeText(getContext(), "当前定位精度为:" + location.getRadius() + "米,请您移动至空旷地带!", Toast.LENGTH_SHORT).show(); | 1108 | Toast.makeText(getContext(), "当前定位精度为:" + location.getRadius() + "米,请您移动至空旷地带!", Toast.LENGTH_SHORT).show(); |
| 1134 | } | 1109 | } |
| 1110 | + | ||
| 1135 | } else { | 1111 | } else { |
| 1136 | //过滤定位精度 | 1112 | //过滤定位精度 |
| 1137 | if (location.getRadius() > Constant.LOCA_ACCURACY) { | 1113 | if (location.getRadius() > Constant.LOCA_ACCURACY) { |
| @@ -1148,14 +1124,15 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { | @@ -1148,14 +1124,15 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { | ||
| 1148 | } | 1124 | } |
| 1149 | 1125 | ||
| 1150 | MapStatus.Builder builder = new MapStatus.Builder(); | 1126 | MapStatus.Builder builder = new MapStatus.Builder(); |
| 1151 | - | ||
| 1152 | -// if (isFirstLoc) { | ||
| 1153 | -// isFirstLoc = false; | ||
| 1154 | firstLatLng = new LatLng(location.getLatitude(), | 1127 | firstLatLng = new LatLng(location.getLatitude(), |
| 1155 | location.getLongitude()); | 1128 | location.getLongitude()); |
| 1156 | baiduMap.setMyLocationData(followMyLocation); | 1129 | baiduMap.setMyLocationData(followMyLocation); |
| 1157 | -// builder.target(firstLatLng).zoom(DEFULT_ZOOM); | ||
| 1158 | -// baiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build())); | 1130 | + //没有获取到轨迹 |
| 1131 | + if (0 == initZoom && null != firstLatLng) { | ||
| 1132 | + builder.target(firstLatLng).zoom(DEFULT_ZOOM); | ||
| 1133 | + baiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build())); | ||
| 1134 | + } | ||
| 1135 | +// | ||
| 1159 | 1136 | ||
| 1160 | // //显示当前位置图标 | 1137 | // //显示当前位置图标 |
| 1161 | // Bitmap pointBitmap = BitmapUtil.getBitmapFromDp(getContext(), BitmapFactory.decodeResource(getContext().getResources(), R.drawable.rt_ic_location), 40, 40); | 1138 | // Bitmap pointBitmap = BitmapUtil.getBitmapFromDp(getContext(), BitmapFactory.decodeResource(getContext().getResources(), R.drawable.rt_ic_location), 40, 40); |
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/service/StepService.java
| @@ -372,7 +372,7 @@ public class StepService extends Service implements SensorEventListener { | @@ -372,7 +372,7 @@ public class StepService extends Service implements SensorEventListener { | ||
| 372 | if (null == userStepEntity) { | 372 | if (null == userStepEntity) { |
| 373 | return; | 373 | return; |
| 374 | } | 374 | } |
| 375 | - if (alarmPushInfo.getFenceId() == userStepEntity.getFenceId() && alarmPushInfo.getFenceName().equals(userStepEntity.getStreetTitle())) { | 375 | + if (alarmPushInfo.getFenceId() == userStepEntity.getFenceId()) { |
| 376 | //超出范围 | 376 | //超出范围 |
| 377 | if (alarmPushInfo.getMonitoredAction() == MonitoredAction.exit) { | 377 | if (alarmPushInfo.getMonitoredAction() == MonitoredAction.exit) { |
| 378 | EventBus.getDefault().post(new MessageEvent(Constant.EXIT_RANGE, "")); | 378 | EventBus.getDefault().post(new MessageEvent(Constant.EXIT_RANGE, "")); |
| @@ -530,9 +530,6 @@ public class StepService extends Service implements SensorEventListener { | @@ -530,9 +530,6 @@ public class StepService extends Service implements SensorEventListener { | ||
| 530 | Log.e(TAG, "onStartTraceCallback: 保存的围栏id" + fenceId); | 530 | Log.e(TAG, "onStartTraceCallback: 保存的围栏id" + fenceId); |
| 531 | //设置围栏id | 531 | //设置围栏id |
| 532 | StepUtil.setFenceId(getApplicationContext(), CommonInfo.getUserId(getApplicationContext()), fenceId); | 532 | StepUtil.setFenceId(getApplicationContext(), CommonInfo.getUserId(getApplicationContext()), fenceId); |
| 533 | - //设置赛事标题 | ||
| 534 | - String streetTitle = CommonInfo.getStreetTitle(getApplicationContext()); | ||
| 535 | - StepUtil.setStreetTitle(getApplicationContext(), CommonInfo.getUserId(getApplicationContext()), streetTitle); | ||
| 536 | } | 533 | } |
| 537 | entityName = userId; | 534 | entityName = userId; |
| 538 | initTodayData(userId); | 535 | initTodayData(userId); |
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/utils/MyMapUtil.java
| @@ -150,7 +150,7 @@ public class MyMapUtil { | @@ -150,7 +150,7 @@ public class MyMapUtil { | ||
| 150 | * @param trackPoints | 150 | * @param trackPoints |
| 151 | * @param zoomBy | 151 | * @param zoomBy |
| 152 | */ | 152 | */ |
| 153 | - public static void setMapAutoZoom(BaiduMap baiduMap, List<LatLng> trackPoints, float zoomBy) { | 153 | + public static float setMapAutoZoom(BaiduMap baiduMap, List<LatLng> trackPoints, float zoomBy) { |
| 154 | LatLngBounds.Builder builder = new LatLngBounds.Builder(); | 154 | LatLngBounds.Builder builder = new LatLngBounds.Builder(); |
| 155 | for (LatLng latLng : trackPoints) { | 155 | for (LatLng latLng : trackPoints) { |
| 156 | builder.include(latLng); | 156 | builder.include(latLng); |
| @@ -158,7 +158,11 @@ public class MyMapUtil { | @@ -158,7 +158,11 @@ public class MyMapUtil { | ||
| 158 | MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newLatLngBounds(builder.build()); | 158 | MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newLatLngBounds(builder.build()); |
| 159 | baiduMap.setMapStatus(mapStatusUpdate); | 159 | baiduMap.setMapStatus(mapStatusUpdate); |
| 160 | MapStatusUpdate msu = MapStatusUpdateFactory.zoomBy(zoomBy); | 160 | MapStatusUpdate msu = MapStatusUpdateFactory.zoomBy(zoomBy); |
| 161 | - baiduMap.setMapStatus(msu); | 161 | + baiduMap.animateMapStatus(msu); |
| 162 | + if (null != baiduMap.getMapStatus()) { | ||
| 163 | + return baiduMap.getMapStatus().zoom; | ||
| 164 | + } | ||
| 165 | + return 0; | ||
| 162 | //自动计算地图缩放 | 166 | //自动计算地图缩放 |
| 163 | // MapStatus.Builder builder = new MapStatus.Builder(); | 167 | // MapStatus.Builder builder = new MapStatus.Builder(); |
| 164 | // builder.target(MyMapUtil.getCenterZoomPosition(trackPoints)); | 168 | // builder.target(MyMapUtil.getCenterZoomPosition(trackPoints)); |
moudle_pedometer/src/main/res/layout/fragment_collect_run_race_detail.xml
| @@ -2,139 +2,146 @@ | @@ -2,139 +2,146 @@ | ||
| 2 | <layout xmlns:android="http://schemas.android.com/apk/res/android" | 2 | <layout xmlns:android="http://schemas.android.com/apk/res/android" |
| 3 | xmlns:app="http://schemas.android.com/apk/res-auto"> | 3 | xmlns:app="http://schemas.android.com/apk/res-auto"> |
| 4 | 4 | ||
| 5 | - <FrameLayout | 5 | + <LinearLayout |
| 6 | android:layout_width="match_parent" | 6 | android:layout_width="match_parent" |
| 7 | - android:layout_height="match_parent"> | 7 | + android:layout_height="match_parent" |
| 8 | + android:orientation="vertical"> | ||
| 8 | 9 | ||
| 9 | - <com.sothree.slidinguppanel.SlidingUpPanelLayout xmlns:sothree="http://schemas.android.com/apk/res-auto" | ||
| 10 | - android:id="@+id/sliding_layout" | 10 | + <com.qmuiteam.qmui.widget.QMUITopBar |
| 11 | + android:id="@+id/topbar" | ||
| 11 | android:layout_width="match_parent" | 12 | android:layout_width="match_parent" |
| 12 | - android:layout_height="match_parent" | ||
| 13 | - android:gravity="bottom" | ||
| 14 | - sothree:umanoDragView="@+id/dragView" | ||
| 15 | - sothree:umanoFadeColor="@color/black_20" | ||
| 16 | - sothree:umanoOverlay="true" | ||
| 17 | - sothree:umanoParallaxOffset="250dp" | ||
| 18 | - sothree:umanoScrollableView="@+id/scrollView" | ||
| 19 | - sothree:umanoShadowHeight="0dp"> | ||
| 20 | - | ||
| 21 | - <!-- MAIN CONTENT --> | ||
| 22 | - <LinearLayout | 13 | + android:layout_height="?attr/qmui_topbar_height" |
| 14 | + app:qmui_topbar_text_btn_color_state_list="@color/text_black" /> | ||
| 15 | + | ||
| 16 | + <FrameLayout | ||
| 17 | + android:layout_width="match_parent" | ||
| 18 | + android:layout_height="match_parent"> | ||
| 19 | + | ||
| 20 | + <com.sothree.slidinguppanel.SlidingUpPanelLayout xmlns:sothree="http://schemas.android.com/apk/res-auto" | ||
| 21 | + android:id="@+id/sliding_layout" | ||
| 23 | android:layout_width="match_parent" | 22 | android:layout_width="match_parent" |
| 24 | android:layout_height="match_parent" | 23 | android:layout_height="match_parent" |
| 25 | - android:orientation="vertical"> | ||
| 26 | - | ||
| 27 | - <com.qmuiteam.qmui.widget.QMUITopBar | ||
| 28 | - android:id="@+id/topbar" | 24 | + android:gravity="bottom" |
| 25 | + sothree:umanoDragView="@+id/dragView" | ||
| 26 | + sothree:umanoFadeColor="@color/black_20" | ||
| 27 | + sothree:umanoOverlay="true" | ||
| 28 | + sothree:umanoParallaxOffset="300dp" | ||
| 29 | + sothree:umanoScrollableView="@+id/scrollView" | ||
| 30 | + sothree:umanoShadowHeight="0dp"> | ||
| 31 | + | ||
| 32 | + <!-- MAIN CONTENT --> | ||
| 33 | + <LinearLayout | ||
| 29 | android:layout_width="match_parent" | 34 | android:layout_width="match_parent" |
| 30 | - android:layout_height="?attr/qmui_topbar_height" | ||
| 31 | - app:qmui_topbar_text_btn_color_state_list="@color/text_black" /> | 35 | + android:layout_height="match_parent" |
| 36 | + android:orientation="vertical"> | ||
| 32 | 37 | ||
| 33 | - <FrameLayout | ||
| 34 | - android:id="@+id/fl_root" | ||
| 35 | - android:layout_width="match_parent" | ||
| 36 | - android:layout_height="match_parent"> | ||
| 37 | 38 | ||
| 38 | - <com.baidu.mapapi.map.MapView | ||
| 39 | - android:id="@+id/mapView" | 39 | + <FrameLayout |
| 40 | + android:id="@+id/fl_root" | ||
| 40 | android:layout_width="match_parent" | 41 | android:layout_width="match_parent" |
| 41 | - android:layout_height="match_parent"></com.baidu.mapapi.map.MapView> | 42 | + android:layout_height="match_parent"> |
| 42 | 43 | ||
| 43 | - <!--地图上面加一层类似于全透明黑色蒙版--> | ||
| 44 | - <LinearLayout | ||
| 45 | - android:layout_width="match_parent" | ||
| 46 | - android:layout_height="match_parent" | ||
| 47 | - android:background="#0D000000" | ||
| 48 | - android:clickable="false" | ||
| 49 | - android:focusable="false" | ||
| 50 | - android:focusableInTouchMode="false"></LinearLayout> | 44 | + <com.baidu.mapapi.map.MapView |
| 45 | + android:id="@+id/mapView" | ||
| 46 | + android:layout_width="match_parent" | ||
| 47 | + android:layout_height="match_parent"></com.baidu.mapapi.map.MapView> | ||
| 51 | 48 | ||
| 52 | - <!----> | 49 | + <!--地图上面加一层类似于全透明黑色蒙版--> |
| 50 | + <LinearLayout | ||
| 51 | + android:layout_width="match_parent" | ||
| 52 | + android:layout_height="match_parent" | ||
| 53 | + android:background="#0D000000" | ||
| 54 | + android:clickable="false" | ||
| 55 | + android:focusable="false" | ||
| 56 | + android:focusableInTouchMode="false"></LinearLayout> | ||
| 53 | 57 | ||
| 58 | + <!----> | ||
| 54 | 59 | ||
| 55 | - </FrameLayout> | ||
| 56 | - </LinearLayout> | ||
| 57 | - <!-- SLIDING LAYOUT --> | ||
| 58 | - <FrameLayout | ||
| 59 | - android:id="@+id/dragView" | ||
| 60 | - android:layout_width="match_parent" | ||
| 61 | - android:layout_height="match_parent" | ||
| 62 | - android:background="@color/white" | ||
| 63 | - android:clickable="false" | ||
| 64 | - android:focusable="false"> | ||
| 65 | 60 | ||
| 66 | - <ScrollView | ||
| 67 | - android:id="@+id/scrollView" | 61 | + </FrameLayout> |
| 62 | + </LinearLayout> | ||
| 63 | + <!-- SLIDING LAYOUT --> | ||
| 64 | + <FrameLayout | ||
| 65 | + android:id="@+id/dragView" | ||
| 68 | android:layout_width="match_parent" | 66 | android:layout_width="match_parent" |
| 69 | android:layout_height="match_parent" | 67 | android:layout_height="match_parent" |
| 70 | - android:scrollbars="none"> | 68 | + android:background="@color/white" |
| 69 | + android:clickable="false" | ||
| 70 | + android:focusable="false"> | ||
| 71 | 71 | ||
| 72 | - <LinearLayout | ||
| 73 | - android:id="@+id/ll_root" | 72 | + <ScrollView |
| 73 | + android:id="@+id/scrollView" | ||
| 74 | android:layout_width="match_parent" | 74 | android:layout_width="match_parent" |
| 75 | - android:layout_height="wrap_content" | ||
| 76 | - android:orientation="vertical"> | ||
| 77 | - <!--跑道--> | ||
| 78 | - <include | ||
| 79 | - android:id="@+id/include_street" | ||
| 80 | - layout="@layout/layout_collect_run_detail_street" /> | ||
| 81 | - <!----> | ||
| 82 | - <View | 75 | + android:layout_height="match_parent" |
| 76 | + android:scrollbars="none"> | ||
| 77 | + | ||
| 78 | + <LinearLayout | ||
| 79 | + android:id="@+id/ll_root" | ||
| 83 | android:layout_width="match_parent" | 80 | android:layout_width="match_parent" |
| 84 | - android:layout_height="10dp" | ||
| 85 | - android:background="#F4F4F4" /> | ||
| 86 | - <!--路线介绍--> | ||
| 87 | - <include | ||
| 88 | - android:id="@+id/include_street_introduce" | ||
| 89 | - layout="@layout/layout_run_detail_street_introduce" /> | ||
| 90 | - </LinearLayout> | ||
| 91 | - | ||
| 92 | - </ScrollView> | ||
| 93 | - </FrameLayout> | ||
| 94 | - </com.sothree.slidinguppanel.SlidingUpPanelLayout> | ||
| 95 | - <!--按钮--> | ||
| 96 | - <RelativeLayout | ||
| 97 | - android:id="@+id/rl_scrollView_add_trace" | ||
| 98 | - android:layout_width="match_parent" | ||
| 99 | - android:layout_height="40sp" | ||
| 100 | - android:layout_gravity="bottom" | ||
| 101 | - android:background="@color/green_round" | ||
| 102 | - android:tag="0"> | ||
| 103 | - | ||
| 104 | - <TextView | ||
| 105 | - android:id="@+id/tv_run_now" | ||
| 106 | - android:layout_width="wrap_content" | ||
| 107 | - android:layout_height="wrap_content" | ||
| 108 | - android:layout_centerInParent="true" | ||
| 109 | - android:tag="0" | ||
| 110 | - android:text="@string/layout_collect_bind_trace" | ||
| 111 | - android:textColor="@color/white" | ||
| 112 | - android:textSize="18sp" /> | ||
| 113 | - | ||
| 114 | - <TextView | ||
| 115 | - android:id="@+id/tv_go_tip" | ||
| 116 | - android:layout_width="wrap_content" | ||
| 117 | - android:layout_height="wrap_content" | ||
| 118 | - android:layout_alignParentRight="true" | ||
| 119 | - android:layout_centerInParent="true" | ||
| 120 | - android:layout_centerVertical="true" | ||
| 121 | - android:layout_marginRight="10dp" | ||
| 122 | - android:text="Go!" | ||
| 123 | - android:textColor="@color/white" | ||
| 124 | - android:textSize="18sp" | 81 | + android:layout_height="wrap_content" |
| 82 | + android:orientation="vertical"> | ||
| 83 | + <!--跑道--> | ||
| 84 | + <include | ||
| 85 | + android:id="@+id/include_street" | ||
| 86 | + layout="@layout/layout_collect_run_detail_street" /> | ||
| 87 | + <!----> | ||
| 88 | + <View | ||
| 89 | + android:layout_width="match_parent" | ||
| 90 | + android:layout_height="10dp" | ||
| 91 | + android:background="#F4F4F4" /> | ||
| 92 | + <!--路线介绍--> | ||
| 93 | + <include | ||
| 94 | + android:id="@+id/include_street_introduce" | ||
| 95 | + layout="@layout/layout_run_detail_street_introduce" /> | ||
| 96 | + </LinearLayout> | ||
| 97 | + | ||
| 98 | + </ScrollView> | ||
| 99 | + </FrameLayout> | ||
| 100 | + </com.sothree.slidinguppanel.SlidingUpPanelLayout> | ||
| 101 | + <!--按钮--> | ||
| 102 | + <RelativeLayout | ||
| 103 | + android:id="@+id/rl_scrollView_add_trace" | ||
| 104 | + android:layout_width="match_parent" | ||
| 105 | + android:layout_height="40sp" | ||
| 106 | + android:layout_gravity="bottom" | ||
| 107 | + android:background="@color/green_round" | ||
| 108 | + android:tag="0"> | ||
| 109 | + | ||
| 110 | + <TextView | ||
| 111 | + android:id="@+id/tv_run_now" | ||
| 112 | + android:layout_width="wrap_content" | ||
| 113 | + android:layout_height="wrap_content" | ||
| 114 | + android:layout_centerInParent="true" | ||
| 115 | + android:tag="0" | ||
| 116 | + android:text="@string/layout_collect_bind_trace" | ||
| 117 | + android:textColor="@color/white" | ||
| 118 | + android:textSize="18sp" /> | ||
| 119 | + | ||
| 120 | + <TextView | ||
| 121 | + android:id="@+id/tv_go_tip" | ||
| 122 | + android:layout_width="wrap_content" | ||
| 123 | + android:layout_height="wrap_content" | ||
| 124 | + android:layout_alignParentRight="true" | ||
| 125 | + android:layout_centerInParent="true" | ||
| 126 | + android:layout_centerVertical="true" | ||
| 127 | + android:layout_marginRight="10dp" | ||
| 128 | + android:text="Go!" | ||
| 129 | + android:textColor="@color/white" | ||
| 130 | + android:textSize="18sp" | ||
| 131 | + android:visibility="gone" /> | ||
| 132 | + | ||
| 133 | + </RelativeLayout> | ||
| 134 | + | ||
| 135 | + | ||
| 136 | + <com.cnlive.strike.ui.widget.UIEmptyView | ||
| 137 | + android:id="@+id/empty_layout" | ||
| 138 | + android:layout_width="match_parent" | ||
| 139 | + android:layout_height="match_parent" | ||
| 140 | + android:background="@color/color_fff" | ||
| 141 | + android:focusable="true" | ||
| 142 | + android:focusableInTouchMode="true" | ||
| 125 | android:visibility="gone" /> | 143 | android:visibility="gone" /> |
| 126 | - | ||
| 127 | - </RelativeLayout> | ||
| 128 | - | ||
| 129 | - <com.cnlive.strike.ui.widget.UIEmptyView | ||
| 130 | - android:id="@+id/empty_layout" | ||
| 131 | - android:layout_width="match_parent" | ||
| 132 | - android:layout_height="match_parent" | ||
| 133 | - android:background="@color/color_fff" | ||
| 134 | - android:focusable="true" | ||
| 135 | - android:focusableInTouchMode="true" | ||
| 136 | - android:visibility="gone" /> | ||
| 137 | - </FrameLayout> | ||
| 138 | - | 144 | + </FrameLayout> |
| 145 | + </LinearLayout> | ||
| 139 | 146 | ||
| 140 | </layout> | 147 | </layout> |
| 141 | \ No newline at end of file | 148 | \ No newline at end of file |