From 7be6a463f2ceeec9874962f8111b9b2a00a6a219 Mon Sep 17 00:00:00 2001 From: wds Date: Fri, 18 Jun 2021 20:55:05 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AD=9B=E9=80=89=E9=A1=B5=E9=9D=A2=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- .../outdoor/adapter/FilterAdapter.java | 17 +- .../outdoor/adapter/PoiRecycleAdapter.java | 1 + .../com/navinfo/outdoor/api/Constant.java | 6 + .../outdoor/base/BaseDrawerFragment.java | 58 +- .../fragment/EventPrefectureFragment.java | 3 + .../outdoor/fragment/FilterFragment.java | 74 +- .../outdoor/fragment/GatherGetFragment.java | 106 ++ .../navinfo/outdoor/fragment/PoiFragment.java | 70 +- .../outdoor/fragment/RoadFragment.java | 17 + .../outdoor/fragment/TreasureFragment.java | 138 ++- .../com/navinfo/outdoor/room/PoiEntity.java | 5 +- app/src/main/res/layout/filter_header.xml | 34 + app/src/main/res/layout/fragment_filter.xml | 133 +-- .../main/res/layout/fragment_gather_get.xml | 90 ++ app/src/main/res/layout/fragment_road.xml | 49 +- app/src/main/res/layout/poi_fragment.xml | 918 ++++++++---------- app/src/main/res/layout/poi_header.xml | 58 ++ app/src/main/res/layout/road_header.xml | 54 ++ app/src/main/res/layout/treasure_fragment.xml | 34 +- 20 files changed, 1137 insertions(+), 730 deletions(-) create mode 100644 app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java create mode 100644 app/src/main/res/layout/filter_header.xml create mode 100644 app/src/main/res/layout/fragment_gather_get.xml create mode 100644 app/src/main/res/layout/poi_header.xml create mode 100644 app/src/main/res/layout/road_header.xml diff --git a/app/build.gradle b/app/build.gradle index b48ec2e..c297aae 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,7 +3,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 29 buildToolsVersion "29.0.0" - ndkVersion '23.0.7123448' + //ndkVersion '23.0.7123448' defaultConfig { applicationId "com.navinfo.outdoor" diff --git a/app/src/main/java/com/navinfo/outdoor/adapter/FilterAdapter.java b/app/src/main/java/com/navinfo/outdoor/adapter/FilterAdapter.java index c0b696c..40adbfd 100644 --- a/app/src/main/java/com/navinfo/outdoor/adapter/FilterAdapter.java +++ b/app/src/main/java/com/navinfo/outdoor/adapter/FilterAdapter.java @@ -54,11 +54,20 @@ public class FilterAdapter extends RecyclerView.Adapter poiEntities; - private TextView tvTitle; - public static FilterFragment newInstance(Bundle bundle) { @@ -50,6 +43,31 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi return fragment; } + @Override + public void onHiddenChanged(boolean hidden) { + super.onHiddenChanged(hidden); + if (!hidden) { + View header = LayoutInflater.from(getActivity()).inflate(R.layout.filter_header, null); + Message obtain = Message.obtain(); + obtain.what = Constant.MAIN_HEADER; + obtain.obj = header; + EventBus.getDefault().post(obtain); + } + } + + @Override + public void onResume() { + super.onResume(); + View header = LayoutInflater.from(getActivity()).inflate(R.layout.filter_header, null); + Message obtain = Message.obtain(); + obtain.what = Constant.MAIN_HEADER; + obtain.obj = header; + EventBus.getDefault().post(obtain); + } + + + + @Override protected int getLayout() { return R.layout.fragment_filter; @@ -58,6 +76,9 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi @Override protected void initView() { super.initView(); + clNumber = findViewById(R.id.cl_number); + clNumber.setOnClickListener(this::onClick); + tvNumber = findViewById(R.id.tv_number); clPhotograph = findViewById(R.id.cl_photograph); clPhotograph.setOnClickListener(this::onClick); tvPhotograph = findViewById(R.id.tv_photograph); @@ -67,13 +88,8 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi clType = findViewById(R.id.cl_type); clType.setOnClickListener(this::onClick); tvType = findViewById(R.id.tv_type); - - tvTitle = findViewById(R.id.tv_title); - tvTitle.setOnClickListener(this::onClick); btnFilter = findViewById(R.id.btn_filter); btnFilter.setOnClickListener(this::onClick); - ivFilter = findViewById(R.id.iv_filter); - ivFilter.setOnClickListener(this); recyclerFilter = findViewById(R.id.recycler_filter); //设置下划线 recyclerFilter.setLayoutManager(new LinearLayoutManager(getActivity())); @@ -85,6 +101,7 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi recyclerFilter.setLoadingMoreEnabled(false); filterAdapter = new FilterAdapter(getContext()); recyclerFilter.setAdapter(filterAdapter); + recyclerFilter.getDefaultFootView().setNoMoreHint("成功加载完毕"); recyclerFilter.setLoadingListener(new XRecyclerView.LoadingListener() { @Override @@ -107,6 +124,7 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi } + @Override protected void initData() { super.initData(); @@ -122,8 +140,9 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi @Override public void run() { Log.d("TAG", "run: " + allPoi.toString()); + poiEntities.clear(); poiEntities.addAll(allPoi); - filterAdapter.setAllPoi(allPoi); + filterAdapter.setAllPoi(poiEntities); } }); } @@ -133,25 +152,22 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi @Override public void onClick(View v) { switch (v.getId()) { - case R.id.tv_title: - BottomMenu.show((AppCompatActivity) getContext(), new String[]{"200", "500","1000"}, new OnMenuItemClickListener() { - @Override - public void onClick(String text, int index) { - tvTitle.setText("共"+text+"条"); - } - }); - break; case R.id.btn_filter: Message obtain = Message.obtain(); obtain.what = Constant.FILTER_LIST; obtain.obj = poiEntities; EventBus.getDefault().post(obtain); break; - case R.id.iv_filter: - getActivity().finish(); + case R.id.cl_number: + BottomMenu.show((AppCompatActivity) getContext(), new String[]{"200", "500","1000"}, new OnMenuItemClickListener() { + @Override + public void onClick(String text, int index) { + tvNumber.setText(text); + } + }); break; case R.id.cl_photograph: - BottomMenu.show((AppCompatActivity) getContext(), new String[]{"录像", "拍照"}, new OnMenuItemClickListener() { + BottomMenu.show((AppCompatActivity) getContext(), new String[]{"全部","专属任务", "普通任务"}, new OnMenuItemClickListener() { @Override public void onClick(String text, int index) { tvPhotograph.setText(text); @@ -160,7 +176,7 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi }); break; case R.id.cl_exclusive: - BottomMenu.show((AppCompatActivity) getContext(), new String[]{"poi", "道路", "充电站", "其他"}, new OnMenuItemClickListener() { + BottomMenu.show((AppCompatActivity) getContext(), new String[]{"全部","poi", "道路", "充电站", "其他"}, new OnMenuItemClickListener() { @Override public void onClick(String text, int index) { tvExclusive.setText(text); @@ -168,7 +184,7 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi }); break; case R.id.cl_type: - BottomMenu.show((AppCompatActivity) getContext(), new String[]{"专属", "普通"}, new OnMenuItemClickListener() { + BottomMenu.show((AppCompatActivity) getContext(), new String[]{"全部","已领取", "待提交","未领取"}, new OnMenuItemClickListener() { @Override public void onClick(String text, int index) { tvType.setText(text); diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java new file mode 100644 index 0000000..d219209 --- /dev/null +++ b/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java @@ -0,0 +1,106 @@ +package com.navinfo.outdoor.fragment; + +import android.os.Bundle; +import android.os.Message; +import android.view.View; +import android.widget.Button; +import android.widget.TextView; +import android.widget.Toast; + +import com.navinfo.outdoor.R; +import com.navinfo.outdoor.api.Constant; +import com.navinfo.outdoor.base.BaseFragment; +import com.navinfo.outdoor.room.PoiEntity; + +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; + +/** + * 领取采集的fragment + */ +public class GatherGetFragment extends BaseFragment implements View.OnClickListener { + + private Button btnBank; + private TextView tvTitle, tvMoney, tvTime, tvLength, tvDistance, tvDescribe; + private PoiEntity poiEntity; + + public static GatherGetFragment newInstance(Bundle bundle) { + GatherGetFragment fragment = new GatherGetFragment(); + fragment.setArguments(bundle); + return fragment; + } + + @Override + public void onStart() { + super.onStart(); + if (!EventBus.getDefault().isRegistered(this)) {//加上判断 + EventBus.getDefault().register(this); + } + + } + + @Subscribe + public void onEvent(Message data) { + if (data.what == Constant.TREASURE_GATHER_GET_WORD) { + PoiEntity poiEntity = (PoiEntity) data.obj; + tvTitle.setText(poiEntity.getName()); + tvMoney.setText("3.5元"); + tvTime.setText("到期时间:" + poiEntity.getCreateTime()); + tvLength.setText("长度:" + poiEntity.getDetail()); + tvDescribe.setText("任务描述:" + poiEntity.getDescribe()); + tvDistance.setText("距离:" + poiEntity.getX()); + } + } + + @Override + protected int getLayout() { + return R.layout.fragment_gather_get; + } + + @Override + protected void initView() { + super.initView(); + tvTitle = findViewById(R.id.tv_title); + tvMoney = findViewById(R.id.tv_money); + tvTime = findViewById(R.id.tv_time); + tvLength = findViewById(R.id.tv_length); + tvDistance = findViewById(R.id.tv_distance); + tvDescribe = findViewById(R.id.tv_describe); + btnBank = findViewById(R.id.btn_bank); + btnBank.setOnClickListener(this); + Bundle arguments = getArguments(); + if (arguments!=null) { + poiEntity = (PoiEntity) arguments.getSerializable("PoiEntity"); + tvTitle.setText(poiEntity.getName()); + tvMoney.setText("3.5元"); + tvTime.setText("到期时间:" + poiEntity.getCreateTime()); + tvLength.setText("长度:" + poiEntity.getDetail()); + tvDescribe.setText("任务描述:" + poiEntity.getDescribe()); + tvDistance.setText("距离:" ); + } + + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.btn_bank: + if (poiEntity!=null){ + Message obtain = Message.obtain(); + obtain.what = Constant.GATHER_GET; + obtain.obj = poiEntity; + EventBus.getDefault().post(obtain); + }else { + Toast.makeText(getContext(), "无法采集", Toast.LENGTH_SHORT).show(); + } + break; + } + } + + @Override + public void onDestroy() { + if (EventBus.getDefault().isRegistered(this))//加上判断 + EventBus.getDefault().unregister(this); + super.onDestroy(); + } +} diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java index f73fe52..c0d2ff8 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java @@ -12,6 +12,7 @@ import android.os.Bundle; import android.os.Message; import android.util.Log; import android.view.KeyEvent; +import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.CheckBox; @@ -28,6 +29,7 @@ import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.hjq.permissions.OnPermissionCallback; import com.hjq.permissions.Permission; import com.hjq.permissions.XXPermissions; @@ -52,7 +54,11 @@ import com.navinfo.outdoor.util.ToastUtil; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; +import java.io.Serializable; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Calendar; import java.util.List; import static android.app.Activity.RESULT_OK; @@ -65,7 +71,6 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe private EditText editDescribe; private RelativeLayout rlPanorama, rlName, rlInternalPhotos, rlCard, rlElse; - private TextView tvExplain; private ImageView ivPanorama, ivName, ivInternal, ivCard, ivElse; private TextView tvExamine; private EditText editNameContent, editSiteContent; @@ -84,9 +89,12 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe private boolean bBoolean = false; private CheckBox checkBoxLife; private CheckBox checkBoxRight; + private String phone; + private PoiEntity showPoiEntity; public static PoiFragment newInstance(Bundle bundle) { PoiFragment fragment = new PoiFragment(); + fragment.setArguments(bundle); return fragment; } @@ -101,6 +109,11 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe if (!EventBus.getDefault().isRegistered(this)) {//加上判断 EventBus.getDefault().register(this); } + View header = LayoutInflater.from(getActivity()).inflate(R.layout.poi_header, null); + Message obtain = Message.obtain(); + obtain.what = Constant.MAIN_HEADER; + obtain.obj = header; + EventBus.getDefault().post(obtain); } @@ -130,13 +143,11 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe tvExamine = findViewById(R.id.tv_examine); tvExamine.setOnClickListener(this::onClick); editDescribe = findViewById(R.id.edit_describe); - tvExplain = findViewById(R.id.tv_explain); ivPanorama = findViewById(R.id.iv_panorama); ivName = findViewById(R.id.iv_name); ivInternal = findViewById(R.id.iv_internal); ivCard = findViewById(R.id.iv_card); ivElse = findViewById(R.id.iv_else); - tvExplain.setOnClickListener(this::onClick); rlPanorama = findViewById(R.id.rl_panorama); rlPanorama.setOnClickListener(this::onClick); rlName = findViewById(R.id.rl_name); @@ -148,24 +159,41 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe rlElse = findViewById(R.id.rl_else); rlElse.setOnClickListener(this::onClick); recyclerPhone = findViewById(R.id.recycler_phone); + // 添加信息: + showPoiEntity = (PoiEntity) getArguments().getSerializable("PoiEntity"); + if (showPoiEntity !=null){ + editNameContent.setText(showPoiEntity.getName()); + inode= showPoiEntity.getX()+","+ showPoiEntity.getY(); + editSiteContent.setText(showPoiEntity.getAddress()); + editDescribe.setText(showPoiEntity.getDescribe()); + phoneData.add(showPoiEntity.getTelPhone()); + phone= showPoiEntity.getTelPhone(); + if (showPoiEntity.getPhotoInfo()!=null){ + if (showPoiEntity.getPhotoInfo().get(0).getPhoto()!=null){ + Glide.with(getActivity()).load(showPoiEntity.getPhotoInfo().get(0).getPhoto()).into(ivPanorama); + } + if (showPoiEntity.getPhotoInfo().get(1).getPhoto()!=null){ + Glide.with(getActivity()).load(showPoiEntity.getPhotoInfo().get(1).getPhoto()).into(ivName); + } + + } + } recyclerPhone.setLayoutManager(new LinearLayoutManager(getContext())); recyclerPhone.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL)); - poiBeans.add(new PoiBean("电话*", "1000000", R.drawable.icon_add_bg)); + poiBeans.add(new PoiBean("电话*", phone, R.drawable.icon_add_bg)); poiRecycleAdapter = new PoiRecycleAdapter(getContext(), poiBeans); recyclerPhone.setAdapter(poiRecycleAdapter); poiRecycleAdapter.setInitPoiClick(new PoiRecycleAdapter.initPoiClick() { @Override public void item(int aInt) { if (aInt == 0) { - poiRecycleAdapter.addData(new PoiBean("", "100000", R.drawable.icon_del_bg)); + poiRecycleAdapter.addData(new PoiBean("", null, R.drawable.icon_del_bg)); } else { poiRecycleAdapter.removeData(aInt); if (phoneData.size() > 0) { phoneData.remove(aInt); Log.d("TAG", "initView: " + phoneData.toString()); } - - } } }); @@ -183,7 +211,8 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe } }); //禁用所有可操作控件 - // disables(); + //disables(); + } //禁用所有可操作性控件 private void disables() { @@ -212,10 +241,7 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe photoBean = new ArrayList<>(); } - @Override - public void onResume() { - super.onResume(); - } + @Subscribe @@ -272,7 +298,7 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe Toast.makeText(getActivity(), "请输入手机号", Toast.LENGTH_SHORT).show(); return; } else { - poiEntity.setPhoto(phoneData.get(0)); + poiEntity.setTelPhone(phoneData.get(0)); } if (photoBean.size() < 0) { Toast.makeText(getActivity(), "请拍照", Toast.LENGTH_SHORT).show(); @@ -288,12 +314,22 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe Toast.makeText(getActivity(), "请拍照 名称", Toast.LENGTH_SHORT).show(); return; } + DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(System.currentTimeMillis()); + String format = formatter.format(calendar.getTime()); + poiEntity.setCreateTime(format); poiEntity.setType(0); poiEntity.setTaskStatus(0); new Thread(new Runnable() { @Override public void run() { - poiDao.insertPoiEntity(poiEntity); + if (showPoiEntity!=null){ + poiDao.updatePoiEntity(poiEntity); + }else { + poiDao.insertPoiEntity(poiEntity); + } + } }).start(); Message obtains = Message.obtain(); @@ -326,11 +362,7 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe case R.id.tv_examine: Toast.makeText(getContext(), editNameContent.getText().toString(), Toast.LENGTH_SHORT).show(); break; - case R.id.tv_explain: - Intent intentExplain = new Intent(getActivity(), FragmentManagement.class); - intentExplain.putExtra("tag", 7); - startActivity(intentExplain); - break; + case R.id.rl_panorama: Intent intentPanorama = new Intent("android.media.action.IMAGE_CAPTURE"); startActivityForResult(intentPanorama, 101); diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/RoadFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/RoadFragment.java index 7937a99..57cf282 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/RoadFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/RoadFragment.java @@ -4,6 +4,8 @@ import android.content.Intent; import android.graphics.Bitmap; import android.media.MediaMetadataRetriever; import android.os.Bundle; +import android.os.Message; +import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.EditText; @@ -20,6 +22,7 @@ import com.hjq.permissions.Permission; import com.hjq.permissions.XXPermissions; import com.navinfo.outdoor.R; import com.navinfo.outdoor.activity.PictureActivity; +import com.navinfo.outdoor.api.Constant; import com.navinfo.outdoor.base.BaseDrawerFragment; import com.navinfo.outdoor.base.BaseFragment; import com.navinfo.outdoor.bean.Info; @@ -29,6 +32,8 @@ import com.navinfo.outdoor.room.PoiDao; import com.navinfo.outdoor.room.PoiDatabase; import com.navinfo.outdoor.room.PoiEntity; +import org.greenrobot.eventbus.EventBus; + import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -65,6 +70,18 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList return R.layout.fragment_road; } + @Override + public void onStart() { + super.onStart(); + View header = LayoutInflater.from(getActivity()).inflate(R.layout.road_header, null); + Message obtain = Message.obtain(); + obtain.what = Constant.MAIN_HEADER; + obtain.obj = header; + EventBus.getDefault().post(obtain); + } + + + @Override protected void initView() { super.initView(); diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java index edec542..693cb1f 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java @@ -9,13 +9,18 @@ import android.os.Bundle; import android.os.Looper; import android.os.Message; import android.util.Log; +import android.view.LayoutInflater; import android.view.View; import android.widget.CheckBox; import android.widget.CompoundButton; +import android.widget.FrameLayout; import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.ScrollView; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; +import androidx.core.widget.NestedScrollView; import androidx.fragment.app.FragmentTransaction; import com.google.gson.Gson; @@ -35,6 +40,7 @@ import com.navinfo.outdoor.base.BaseFragment; import com.navinfo.outdoor.room.PoiEntity; import com.navinfo.outdoor.util.NetWorkUtils; import com.navinfo.outdoor.util.ToastUtil; +import com.sothree.slidinguppanel.ScrollableViewHelper; import com.sothree.slidinguppanel.SlidingUpPanelLayout; import com.tencent.map.geolocation.TencentLocation; import com.tencent.map.geolocation.TencentLocationListener; @@ -79,15 +85,13 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen private ImageView ivRefish; private SlidingUpPanelLayout sliding_layout; private FragmentTransaction fragmentTransaction; - private PoiFragment poiFragment;//poi - private RoadFragment roadFragment;//道路 - private FilterFragment filterFragment;//筛选 private Marker marker; - private CheckBox cbFootType; private ImageView ivFilter; private Point screenPosition; //marker的屏幕坐标 - private BaseDrawerFragment simulateFragments; + private FrameLayout frameLayout; + private GatherGetFragment gatherGetFragment; + private LinearLayout dragView; public static TreasureFragment newInstance(Bundle bundle) { TreasureFragment fragment = new TreasureFragment(); @@ -108,6 +112,8 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen //fragment 管理器 supportFragmentManager = getActivity().getSupportFragmentManager(); sliding_layout = findViewById(R.id.sliding_layout); + dragView = findViewById(R.id.dragView); + frameLayout = findViewById(R.id.frame_layout); ivRefish = findViewById(R.id.iv_refrish); ivRefish.setOnClickListener(this::onClick); ivFilter = findViewById(R.id.iv_filter); @@ -118,6 +124,7 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen tencentMap = treasureMap.getMap(); cbMapType = (CheckBox) findViewById(R.id.cb_map_type); cbFootType = (CheckBox) findViewById(R.id.cb_foot_type); +// sliding_layout.setScrollableViewHelper(new NestedScrollableViewHelper()); //地图转换 cbMapType.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override @@ -153,65 +160,82 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen @Subscribe public void onEvent(Message data) { - if (data.what == Constant.FILTER_LIST_ITEM) { + if (data.what == Constant.FILTER_LIST_ITEM) { // 点击筛选的item PoiEntity poiEntity = (PoiEntity) data.obj; LatLng position = new LatLng(Double.valueOf(poiEntity.getX()), Double.valueOf(poiEntity.getY())); tencentMap.addMarker(new MarkerOptions(position)); sliding_layout.setPanelHeight(0); sliding_layout.setPanelState(SlidingUpPanelLayout.PanelState.HIDDEN); - DialogSettings.style=DialogSettings.STYLE.STYLE_MIUI; - MessageDialog.show((AppCompatActivity) getActivity(), "提示", "位置信息", "采集").setOnOkButtonClickListener(new OnDialogButtonClickListener() { - @Override - public boolean onClick(BaseDialog baseDialog, View v) { - switch (poiEntity.getType()){ - case 0: - PoiFragment poiFragment = PoiFragment.newInstance(new Bundle()); - showSlidingFragment(poiFragment); - break; - case 1: - RoadFragment roadFragment = RoadFragment.newInstance(new Bundle()); - showSlidingFragment(roadFragment); - break; - case 2: - break; - case 3: - break; - } - return false; - } - }); - } else if (data.what == Constant.FILTER_LIST) { + frameLayout.setVisibility(View.VISIBLE); + fragmentTransaction = supportFragmentManager.beginTransaction(); + Bundle bundle = new Bundle(); + bundle.putSerializable("PoiEntity", poiEntity); + gatherGetFragment = GatherGetFragment.newInstance(bundle); + fragmentTransaction.replace(R.id.frame_layout, gatherGetFragment); + fragmentTransaction.commit(); + } else if (data.what == Constant.GATHER_GET) { // 点击开始采集 + PoiEntity poiEntity = (PoiEntity) data.obj; + Bundle bundle = new Bundle(); + bundle.putBoolean("isSliding", false); // 通知抽屉不收回 + bundle.putSerializable("PoiEntity",poiEntity); + frameLayout.setVisibility(View.GONE); + fragmentTransaction.remove(gatherGetFragment); + switch (poiEntity.getType()) { + case 0: + PoiFragment poiFragment = PoiFragment.newInstance(bundle); + showSlidingFragment(poiFragment); + break; + case 1: + RoadFragment roadFragment = RoadFragment.newInstance(bundle); + showSlidingFragment(roadFragment); + break; + case 2: + break; + case 3: + break; + } + } else if (data.what == Constant.FILTER_LIST) { // 筛选列表所有数据地图显示 List poiEntities = (List) data.obj; initFilterMarker(poiEntities); - } else if (data.what == Constant.TREASURE_WORD_0) { + } else if (data.what == Constant.TREASURE_WORD_0) { // POI采集-移动位置 initPoiMarker(Boolean.valueOf((Boolean) data.obj)); } else if (data.what == Constant.TREASURE_FRAGMENT) { - if ((boolean) data.obj) { - ivZoomAdd.setVisibility(View.GONE); - ivZoomDel.setVisibility(View.GONE); - ivLocation.setVisibility(View.GONE); - ivRefish.setVisibility(View.GONE); - cbMapType.setVisibility(View.GONE); - cbFootType.setVisibility(View.GONE); - ivSubmit.setVisibility(View.GONE); - ivFilter.setVisibility(View.GONE); - } else { - ivZoomAdd.setVisibility(View.VISIBLE); - ivZoomDel.setVisibility(View.VISIBLE); - ivLocation.setVisibility(View.VISIBLE); - ivRefish.setVisibility(View.VISIBLE); - cbMapType.setVisibility(View.VISIBLE); - cbFootType.setVisibility(View.VISIBLE); - ivSubmit.setVisibility(View.VISIBLE); - ivFilter.setVisibility(View.VISIBLE); + if ((boolean) data.obj == true) { + frameLayout.setVisibility(View.GONE); sliding_layout.setPanelHeight(0); sliding_layout.setPanelState(SlidingUpPanelLayout.PanelState.HIDDEN); if (marker != null) { marker.remove(); } } + } else if (data.what == Constant.MAIN_BUTTON_VISIABLE) { + setMainButtonVisiable((Integer) data.obj); + }else if (data.what==Constant.MAIN_HEADER){ + View view = (View) data.obj; + initHeader(view); + }else if (data.what==Constant.MAIN_REMOVE){ + if ((boolean)data.obj){ + dragView.removeAllViews(); + } + } + + + } + + /** + * 控制主界面各个按钮的显示状态 + * */ + private void setMainButtonVisiable(int visiable) { + ivZoomAdd.setVisibility(visiable); + ivZoomDel.setVisibility(visiable); + ivLocation.setVisibility(visiable); + ivRefish.setVisibility(visiable); + cbMapType.setVisibility(visiable); + cbFootType.setVisibility(visiable); + ivSubmit.setVisibility(visiable); + ivFilter.setVisibility(visiable); } private void initFilterMarker(List poiEntities) { @@ -410,25 +434,32 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen }).setTitle(title); break; case R.id.iv_filter: - Bundle bundle = new Bundle(); - bundle.putString("test", "test"); - FilterFragment filterFragment = FilterFragment.newInstance(bundle); + FilterFragment filterFragment = FilterFragment.newInstance(new Bundle()); showSlidingFragment(filterFragment); break; } } + /** + * header 头部布局 + * @param view + */ + public void initHeader(View view){ + dragView.removeAllViews(); + dragView.addView(view); + } + /** * 将fragment显示到抽屉内 */ - private void showSlidingFragment(BaseDrawerFragment fragment){ + private void showSlidingFragment(BaseDrawerFragment fragment) { fragmentTransaction = supportFragmentManager.beginTransaction(); sliding_layout.setPanelHeight(1000); sliding_layout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); - fragmentTransaction.add(R.id.dragView, fragment, fragment.getClass().getName()); + fragmentTransaction.add(R.id.scroll_view, fragment, fragment.getClass().getName()); if (!(fragment instanceof FilterFragment)) { FilterFragment filterFragment = (FilterFragment) supportFragmentManager.findFragmentByTag(FilterFragment.class.getName()); - if (filterFragment!=null) { + if (filterFragment != null) { fragmentTransaction.hide(filterFragment); } } @@ -549,4 +580,5 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen getActivity().finish(); return true; } + } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/outdoor/room/PoiEntity.java b/app/src/main/java/com/navinfo/outdoor/room/PoiEntity.java index f59b2e8..0592b6a 100644 --- a/app/src/main/java/com/navinfo/outdoor/room/PoiEntity.java +++ b/app/src/main/java/com/navinfo/outdoor/room/PoiEntity.java @@ -7,11 +7,12 @@ import androidx.room.TypeConverters; import com.navinfo.outdoor.bean.Info; import com.navinfo.outdoor.util.PhotoInfoConverter; +import java.io.Serializable; import java.util.List; //poi 的实体类 @Entity(tableName = "poi") -public class PoiEntity { +public class PoiEntity implements Serializable { @PrimaryKey(autoGenerate = true) // 设置主键,并且自动生长 private int id; @@ -52,7 +53,7 @@ public class PoiEntity { private String x;//经度 private String y;//纬度 private String detail;//深度信息 - private int taskStatus;//任务状态 0.待提交,1.已提交 + private int taskStatus;//任务状态 0.待提交,1.已提交,2 已领取 private int type;//0.poi,1.道路,2.充电站,3.其他 public int getType() { diff --git a/app/src/main/res/layout/filter_header.xml b/app/src/main/res/layout/filter_header.xml new file mode 100644 index 0000000..649fdd8 --- /dev/null +++ b/app/src/main/res/layout/filter_header.xml @@ -0,0 +1,34 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_filter.xml b/app/src/main/res/layout/fragment_filter.xml index 833b32e..9820e3b 100644 --- a/app/src/main/res/layout/fragment_filter.xml +++ b/app/src/main/res/layout/fragment_filter.xml @@ -1,37 +1,10 @@ - - - - - - - - + app:layout_constraintStart_toStartOf="@+id/tv_type" + app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintStart_toStartOf="parent" /> + app:layout_constraintStart_toStartOf="@+id/tv_exclusive" + app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintStart_toStartOf="parent" /> + + + + + + + + + + android:text="任务个数" + app:layout_constraintBottom_toTopOf="@+id/tv_number" + app:layout_constraintStart_toStartOf="@+id/tv_number" + app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintStart_toStartOf="parent" /> -