From 1359702727ce4179fe51b7a90bf0574eaa641200 Mon Sep 17 00:00:00 2001 From: wds Date: Wed, 16 Jun 2021 18:39:22 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AD=9B=E9=80=89=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- app/src/main/AndroidManifest.xml | 3 +- .../outdoor/activity/FilterActivity.java | 76 -------- .../outdoor/activity/FragmentManagement.java | 21 ++- .../outdoor/adapter/FilterAdapter.java | 84 +++++++++ .../com/navinfo/outdoor/api/Constant.java | 2 + .../outdoor/fragment/FilterFragment.java | 163 ++++++++++++++++++ .../navinfo/outdoor/fragment/PoiFragment.java | 67 ------- .../outdoor/fragment/TreasureFragment.java | 98 +++++++---- ...ctivity_filter.xml => fragment_filter.xml} | 57 ++++-- app/src/main/res/layout/item_filter.xml | 66 +++++++ 11 files changed, 440 insertions(+), 199 deletions(-) delete mode 100644 app/src/main/java/com/navinfo/outdoor/activity/FilterActivity.java create mode 100644 app/src/main/java/com/navinfo/outdoor/adapter/FilterAdapter.java create mode 100644 app/src/main/java/com/navinfo/outdoor/fragment/FilterFragment.java rename app/src/main/res/layout/{activity_filter.xml => fragment_filter.xml} (75%) create mode 100644 app/src/main/res/layout/item_filter.xml diff --git a/app/build.gradle b/app/build.gradle index b48ec2e..58798e9 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/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index eb21953..305f0d9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,7 +43,7 @@ android:networkSecurityConfig="@xml/network_security_config" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" - android:theme="@style/AppTheme.NoActionBar"> + android:theme="@style/Theme.WhiteScreen"> - \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/outdoor/activity/FilterActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/FilterActivity.java deleted file mode 100644 index 2fd5ed4..0000000 --- a/app/src/main/java/com/navinfo/outdoor/activity/FilterActivity.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.navinfo.outdoor.activity; - -import android.view.View; -import android.widget.Button; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.constraintlayout.widget.ConstraintLayout; - -import com.kongzue.dialog.interfaces.OnMenuItemClickListener; -import com.kongzue.dialog.v3.BottomMenu; -import com.navinfo.outdoor.R; -import com.navinfo.outdoor.base.BaseActivity; - -/** - * 筛选的activity - */ -public class FilterActivity extends BaseActivity implements View.OnClickListener { - - private ImageView ivFilter; - private TextView tvType; - private TextView tvDist; - private Button btnFilter; - - @Override - protected int getLayout() { - return R.layout.activity_filter; - } - - @Override - protected void initView() { - super.initView(); - ConstraintLayout clDist = findViewById(R.id.cl_dist); - clDist.setOnClickListener(this::onClick); - ConstraintLayout clType = findViewById(R.id.cl_type); - clType.setOnClickListener(this::onClick); - tvType = findViewById(R.id.tv_type); - tvDist = findViewById(R.id.tv_dist); - btnFilter = findViewById(R.id.btn_filter); - btnFilter.setOnClickListener(this::onClick); - ivFilter = findViewById(R.id.iv_filter); - ivFilter.setOnClickListener(this); - } - - @Override - protected void initData() { - super.initData(); - } - - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.btn_filter: - case R.id.iv_filter: - finish(); - break; - case R.id.cl_dist: - BottomMenu.show(FilterActivity.this, new String[]{"100米", "200米", "500米", "1000米", "2000米", "2500米", "5000米"}, new OnMenuItemClickListener() { - @Override - public void onClick(String text, int index) { - tvDist.setText(text); - - } - }); - break; - case R.id.cl_type: - BottomMenu.show(FilterActivity.this, new String[]{"poi", "道路", "充电站", "其他"}, new OnMenuItemClickListener() { - @Override - public void onClick(String text, int index) { - tvType.setText(text); - } - }); - } - - } -} diff --git a/app/src/main/java/com/navinfo/outdoor/activity/FragmentManagement.java b/app/src/main/java/com/navinfo/outdoor/activity/FragmentManagement.java index 268a86e..acdbe0e 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/FragmentManagement.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/FragmentManagement.java @@ -10,6 +10,7 @@ import com.navinfo.outdoor.fragment.CapacityEvaluationFragment2; import com.navinfo.outdoor.fragment.CapacityMeasurementFragment; import com.navinfo.outdoor.fragment.ContactFragment; import com.navinfo.outdoor.fragment.EventPrefectureFragment; +import com.navinfo.outdoor.fragment.FilterFragment; import com.navinfo.outdoor.fragment.FindFragment; import com.navinfo.outdoor.fragment.ForgetPawFragment; import com.navinfo.outdoor.fragment.GatheringFragment; @@ -24,7 +25,6 @@ import com.navinfo.outdoor.fragment.PoiTaskFragment; import com.navinfo.outdoor.fragment.PrivilegeFragment; import com.navinfo.outdoor.fragment.RecordFragment; import com.navinfo.outdoor.fragment.RoadFragment; -import com.navinfo.outdoor.fragment.RoadTaskFragment; import com.navinfo.outdoor.fragment.SetFragment; import com.navinfo.outdoor.fragment.StaySubmitFragment; import com.navinfo.outdoor.fragment.TaskExWebFragment; @@ -82,8 +82,7 @@ public class FragmentManagement extends BaseActivity { private StaySubmitFragment staySubmitFragment;//记录-待提交的fragment -29 private HasSubmitFragment hasSubmitFragment;//记录-已提交的fragment -30 private PoiTaskFragment poiTaskFragment;//记录-已提交-POI任务列表的fragment -31 - private RoadTaskFragment roadTaskFragment;//记录-已提交-道路任务列表的fragment -32 - + private FilterFragment filterFragment;//寻宝-删选 -35 @Override protected int getLayout() { @@ -165,8 +164,9 @@ public class FragmentManagement extends BaseActivity { fragmentTransaction.hide(hasSubmitFragment); if (poiTaskFragment !=null) //记录-已提交-任务列表的fragment -31 fragmentTransaction.hide(poiTaskFragment); - if (roadTaskFragment !=null) //记录-已提交-任务列表的fragment -31 - fragmentTransaction.hide(roadTaskFragment); + if (filterFragment!=null)//寻宝-删选 + fragmentTransaction.hide(filterFragment); + } @@ -426,6 +426,14 @@ public class FragmentManagement extends BaseActivity { fragmentTransaction.show(poiTaskFragment); } break; + case 35://寻宝- 删选 + if (filterFragment ==null){ + filterFragment =new FilterFragment(); + fragmentTransaction.add(R.id.frame_layout,filterFragment); + }else { + fragmentTransaction.show(filterFragment); + } + break; } fragmentTransaction.commit(); } @@ -524,6 +532,9 @@ public class FragmentManagement extends BaseActivity { case 30: hasSubmitFragment.onActivityResult(requestCode,resultCode,data); break; + case 35: + filterFragment.onActivityResult(requestCode,resultCode,data); + break; } } diff --git a/app/src/main/java/com/navinfo/outdoor/adapter/FilterAdapter.java b/app/src/main/java/com/navinfo/outdoor/adapter/FilterAdapter.java new file mode 100644 index 0000000..ca00ca6 --- /dev/null +++ b/app/src/main/java/com/navinfo/outdoor/adapter/FilterAdapter.java @@ -0,0 +1,84 @@ +package com.navinfo.outdoor.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.navinfo.outdoor.R; +import com.navinfo.outdoor.room.PoiEntity; + +import java.util.ArrayList; +import java.util.List; + +/** + * 筛选的适配器 + */ +public class FilterAdapter extends RecyclerView.Adapter { + private Context context; + private List allPoi=new ArrayList<>(); + + public FilterAdapter(Context context) { + this.context = context; + } + + public void setAllPoi(List allPoi) { + this.allPoi.addAll(allPoi); + notifyDataSetChanged(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View inflate = LayoutInflater.from(context).inflate(R.layout.item_filter, parent, false); + return new ViewHolder(inflate); + } + + @Override + public void onBindViewHolder(@NonNull ViewHolder holder, int position) { + PoiEntity poiEntity = allPoi.get(position); + holder.tvName.setText(poiEntity.getName()); + holder.tvTaskId.setText(poiEntity.getTaskId()+""); + holder.tvMoney.setText(poiEntity.getPrecision()+""); + holder.tvDistance.setText(poiEntity.getDescribe()+""); + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (itemCLick!=null){ + itemCLick.item(poiEntity); + } + } + }); + + } + + @Override + public int getItemCount() { + return allPoi.size(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + TextView tvName,tvForm,tvTaskId,tvMoney,tvDistance; + public ViewHolder(@NonNull View itemView) { + super(itemView); + tvName=itemView.findViewById(R.id.tv_name); + tvForm=itemView.findViewById(R.id.tv_form); + tvTaskId=itemView.findViewById(R.id.tv_task_id); + tvMoney=itemView.findViewById(R.id.tv_money); + tvDistance=itemView.findViewById(R.id.tv_distance); + } + } + ItemCLick itemCLick; + + public void setItemCLick(ItemCLick itemCLick) { + this.itemCLick = itemCLick; + } + + public interface ItemCLick{ + void item(PoiEntity poiEntity); + } +} diff --git a/app/src/main/java/com/navinfo/outdoor/api/Constant.java b/app/src/main/java/com/navinfo/outdoor/api/Constant.java index 61dc29f..3be897a 100644 --- a/app/src/main/java/com/navinfo/outdoor/api/Constant.java +++ b/app/src/main/java/com/navinfo/outdoor/api/Constant.java @@ -41,6 +41,8 @@ public class Constant { public static final int TREASURE_WORD_1 = 1; public static final int POI_WORD_2 = 2; public static final int POI_WORD_3 = 3; + public static final int FILTER_LIST = 4; + public static final int FILTER_LIST_ITEM = 5; /** * 用户当前位置 diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/FilterFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/FilterFragment.java new file mode 100644 index 0000000..bd9d501 --- /dev/null +++ b/app/src/main/java/com/navinfo/outdoor/fragment/FilterFragment.java @@ -0,0 +1,163 @@ +package com.navinfo.outdoor.fragment; + +import android.os.Message; +import android.util.Log; +import android.view.View; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.jcodecraeer.xrecyclerview.ProgressStyle; +import com.jcodecraeer.xrecyclerview.XRecyclerView; +import com.kongzue.dialog.interfaces.OnMenuItemClickListener; +import com.kongzue.dialog.v3.BottomMenu; +import com.navinfo.outdoor.R; +import com.navinfo.outdoor.adapter.FilterAdapter; +import com.navinfo.outdoor.api.Constant; +import com.navinfo.outdoor.base.BaseDialogFragment; +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.util.ArrayList; +import java.util.List; + +public class FilterFragment extends BaseDialogFragment implements View.OnClickListener { + private ImageView ivFilter; + private Button btnFilter; + private XRecyclerView recyclerFilter; + private TextView tvType, tvExclusive, tvPhotograph; + private ConstraintLayout clPhotograph, clExclusive, clType; + private PoiDatabase poiDatabase; + private PoiDao poiDao; + private FilterAdapter filterAdapter; + private ArrayList poiEntities; + + + @Override + protected int getLayout() { + return R.layout.fragment_filter; + } + + @Override + protected void initView() { + super.initView(); + clPhotograph = findViewById(R.id.cl_photograph); + clPhotograph.setOnClickListener(this::onClick); + tvPhotograph = findViewById(R.id.tv_photograph); + clExclusive = findViewById(R.id.cl_exclusive); + clExclusive.setOnClickListener(this::onClick); + tvExclusive = findViewById(R.id.tv_exclusive); + clType = findViewById(R.id.cl_type); + clType.setOnClickListener(this::onClick); + tvType = findViewById(R.id.tv_type); + + //recyclerView + 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())); + recyclerFilter.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL)); + recyclerFilter.setRefreshProgressStyle(ProgressStyle.SemiCircleSpin); + recyclerFilter.setLoadingMoreProgressStyle(ProgressStyle.BallRotate); + //取消上啦加载下拉刷新 + recyclerFilter.setPullRefreshEnabled(false); + recyclerFilter.setLoadingMoreEnabled(false); + filterAdapter = new FilterAdapter(getContext()); + recyclerFilter.setAdapter(filterAdapter); + recyclerFilter.getDefaultFootView().setNoMoreHint("成功加载完毕"); + recyclerFilter.setLoadingListener(new XRecyclerView.LoadingListener() { + @Override + public void onRefresh() { + } + + @Override + public void onLoadMore() { + } + }); + filterAdapter.setItemCLick(new FilterAdapter.ItemCLick() { + @Override + public void item(PoiEntity poiEntity) { + Message obtain = Message.obtain(); + obtain.what = Constant.FILTER_LIST_ITEM; + obtain.obj = poiEntity; + EventBus.getDefault().post(obtain); + } + }); + + } + + @Override + protected void initData() { + super.initData(); + poiDatabase = PoiDatabase.getInstance(getContext()); + poiDao = poiDatabase.getPoiDao(); + poiEntities = new ArrayList<>(); + new Thread(new Runnable() { + @Override + public void run() { + List allPoi = poiDao.getAllPoi(); + + getActivity().runOnUiThread(new Runnable() { + @Override + public void run() { + Log.d("TAG", "run: " + allPoi.toString()); + poiEntities.addAll(allPoi); + filterAdapter.setAllPoi(allPoi); + } + }); + } + }).start(); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + 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(); + break; + case R.id.cl_photograph: + BottomMenu.show((AppCompatActivity) getContext(), new String[]{"录像", "拍照"}, new OnMenuItemClickListener() { + @Override + public void onClick(String text, int index) { + tvPhotograph.setText(text); + + } + }); + break; + case R.id.cl_exclusive: + BottomMenu.show((AppCompatActivity) getContext(), new String[]{"poi", "道路", "充电站", "其他"}, new OnMenuItemClickListener() { + @Override + public void onClick(String text, int index) { + tvExclusive.setText(text); + + } + }); + break; + case R.id.cl_type: + 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/PoiFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java index 86d28f4..5495cae 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java @@ -220,18 +220,6 @@ public class PoiFragment extends BaseDialogFragment implements View.OnClickListe } - @Override - public void onPause() { - super.onPause(); - getView().setFocusableInTouchMode(false); - } - - @Override - public void onStop() { - super.onStop(); - getView().setFocusableInTouchMode(false); - } - @Subscribe public void onEvent(Message data) { if (data.what == Constant.POI_WORD_2) { @@ -327,13 +315,6 @@ public class PoiFragment extends BaseDialogFragment implements View.OnClickListe }); break; case R.id.btn_uploading: - new Thread(new Runnable() { - @Override - public void run() { - List allPoi = poiDao.getAllPoi(); - Log.d("TAG", "run: "+allPoi.toString()); - } - }).start(); Message obtain = Message.obtain(); obtain.what = Constant.TREASURE_FRAGMENT; obtain.obj = false; @@ -492,54 +473,6 @@ public class PoiFragment extends BaseDialogFragment implements View.OnClickListe } } - public static int readPictureDegree(String path) { - int degree = 0; - try { - ExifInterface exifInterface = new ExifInterface(path); - int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, - ExifInterface.ORIENTATION_NORMAL); - switch (orientation) { - case ExifInterface.ORIENTATION_ROTATE_90: - degree = 90; - break; - case ExifInterface.ORIENTATION_ROTATE_180: - degree = 180; - break; - case ExifInterface.ORIENTATION_ROTATE_270: - degree = 270; - break; - default: - break; - } - } catch (IOException e) { - e.printStackTrace(); - } - return degree; - } - - public static Bitmap rotateBitmapByDegree(Bitmap bm, int degree) { - if (bm == null) { - return null; - } - Bitmap returnBm = null; - - // 根据旋转角度,生成旋转矩阵 - Matrix matrix = new Matrix(); - matrix.postRotate(degree); - try { - // 将原始图片按照旋转矩阵进行旋转,并得到新的图片 - returnBm = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), - bm.getHeight(), matrix, true); - } catch (OutOfMemoryError e) { - } - if (returnBm == null) { - returnBm = bm; - } - if (bm != returnBm) { - bm.recycle(); - } - return returnBm; - } @Override public void onDestroy() { 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 a450db6..bc6c0cd 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java @@ -1,50 +1,36 @@ package com.navinfo.outdoor.fragment; -import android.Manifest; -import android.content.DialogInterface; import android.content.Intent; -import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.graphics.Point; import android.location.Location; -import android.os.Build; import android.os.Looper; import android.os.Message; -import android.provider.Settings; import android.util.Log; -import android.view.Gravity; import android.view.View; -import android.view.WindowManager; import android.widget.CheckBox; import android.widget.CompoundButton; -import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.Toast; -import androidx.annotation.NonNull; -import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; import com.hjq.permissions.OnPermissionCallback; import com.hjq.permissions.Permission; import com.hjq.permissions.XXPermissions; -import com.kongzue.dialog.interfaces.OnBackClickListener; -import com.kongzue.dialog.interfaces.OnShowListener; +import com.kongzue.dialog.interfaces.OnDialogButtonClickListener; import com.kongzue.dialog.util.BaseDialog; import com.kongzue.dialog.util.DialogSettings; +import com.kongzue.dialog.v3.MessageDialog; import com.kongzue.dialog.v3.ShareDialog; import com.navinfo.outdoor.R; -import com.navinfo.outdoor.activity.FilterActivity; import com.navinfo.outdoor.activity.FragmentManagement; -import com.navinfo.outdoor.activity.MainActivity; import com.navinfo.outdoor.api.Constant; import com.navinfo.outdoor.base.BaseFragment; -import com.navinfo.outdoor.util.BackHandlerHelper; +import com.navinfo.outdoor.room.PoiEntity; import com.navinfo.outdoor.util.NetWorkUtils; import com.navinfo.outdoor.util.ToastUtil; import com.sothree.slidinguppanel.SlidingUpPanelLayout; @@ -58,8 +44,6 @@ import com.tencent.tencentmap.mapsdk.maps.LocationSource; import com.tencent.tencentmap.mapsdk.maps.MapView; import com.tencent.tencentmap.mapsdk.maps.TencentMap; import com.tencent.tencentmap.mapsdk.maps.UiSettings; -import com.tencent.tencentmap.mapsdk.maps.model.AlphaAnimation; -import com.tencent.tencentmap.mapsdk.maps.model.Animation; import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptor; import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptorFactory; import com.tencent.tencentmap.mapsdk.maps.model.CameraPosition; @@ -74,8 +58,6 @@ import org.greenrobot.eventbus.Subscribe; import java.util.ArrayList; import java.util.List; -import static com.lzy.okgo.utils.HttpUtils.runOnUiThread; - /** * 寻宝的Fragment * 2021-5-25 @@ -95,13 +77,15 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen private ImageView ivRefish; private SlidingUpPanelLayout sliding_layout; private FragmentTransaction fragmentTransaction; - private PoiFragment poiFragment; + private PoiFragment poiFragment;//poi + private RoadFragment roadFragment;//道路 + private FilterFragment filterFragment;//筛选 private Marker marker; private CheckBox cbFootType; private ImageView ivFilter; private Point screenPosition; //marker的屏幕坐标 - private RoadFragment roadFragment; + @Override protected int getLayout() { @@ -159,11 +143,28 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen @Subscribe public void onEvent(Message data) { - if (data.what==Constant.TREASURE_WORD_0){ + if (data.what == Constant.FILTER_LIST_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); + MessageDialog.show((AppCompatActivity) getActivity(), "提示", "位置信息", "采集").setOnOkButtonClickListener(new OnDialogButtonClickListener() { + @Override + public boolean onClick(BaseDialog baseDialog, View v) { + sliding_layout.setPanelHeight(1000); + sliding_layout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); + return false; + } + }); + } else if (data.what == Constant.FILTER_LIST) { + List poiEntities = (List) data.obj; + initFilterMarker(poiEntities); + } else if (data.what == Constant.TREASURE_WORD_0) { initPoiMarker(Boolean.valueOf((Boolean) data.obj)); - }else if (data.what==Constant.TREASURE_FRAGMENT){ - if ((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); @@ -172,7 +173,7 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen cbFootType.setVisibility(View.GONE); ivSubmit.setVisibility(View.GONE); ivFilter.setVisibility(View.GONE); - }else { + } else { ivZoomAdd.setVisibility(View.VISIBLE); ivZoomDel.setVisibility(View.VISIBLE); ivLocation.setVisibility(View.VISIBLE); @@ -184,19 +185,28 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen sliding_layout.setPanelHeight(0); sliding_layout.setPanelState(SlidingUpPanelLayout.PanelState.HIDDEN); - if (poiFragment!=null){ + if (poiFragment != null) { fragmentTransaction.hide(poiFragment); } - if (roadFragment!=null){ + if (roadFragment != null) { fragmentTransaction.hide(roadFragment); } - if (marker!=null){ + if (filterFragment != null) { + fragmentTransaction.hide(filterFragment); + } + if (marker != null) { marker.remove(); } } } } + private void initFilterMarker(List poiEntities) { + for (int i = 0; i < poiEntities.size(); i++) { + LatLng position = new LatLng(Double.valueOf(poiEntities.get(i).getX()), Double.valueOf(poiEntities.get(i).getY())); + tencentMap.addMarker(new MarkerOptions(position)); + } + } private void initPoiMarker(Boolean t) { @@ -233,8 +243,8 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen Constant.markerLatitude = latLng.latitude; Constant.markerLongitude = latLng.longitude; Message obtain = Message.obtain(); - obtain.what=Constant.POI_WORD_2; - obtain.obj=Constant.markerLatitude +","+ Constant.markerLongitude; + obtain.what = Constant.POI_WORD_2; + obtain.obj = Constant.markerLatitude + "," + Constant.markerLongitude; EventBus.getDefault().post(obtain); } @@ -362,6 +372,7 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen List itemList = new ArrayList<>(); itemList.add(new ShareDialog.Item(getContext(), R.drawable.push_poi, "POI")); itemList.add(new ShareDialog.Item(getContext(), R.drawable.push_road, "道路")); + itemList.add(new ShareDialog.Item(getContext(), R.mipmap.filter, "筛选")); itemList.add(new ShareDialog.Item(getContext(), R.drawable.push_chongdianzhuang, "充电站")); itemList.add(new ShareDialog.Item(getContext(), R.drawable.push_qingbao, "其他")); ShareDialog.show((AppCompatActivity) getActivity(), itemList, new ShareDialog.OnItemClickListener() { @@ -371,33 +382,42 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen fragmentTransaction = supportFragmentManager.beginTransaction(); poiFragment = new PoiFragment(); roadFragment = new RoadFragment(); - fragmentTransaction.add(R.id.dragView, poiFragment).add(R.id.dragView,roadFragment).commit(); + filterFragment = new FilterFragment(); + fragmentTransaction.add(R.id.dragView, poiFragment).add(R.id.dragView, roadFragment).add(R.id.dragView, filterFragment).commit(); switch (index) { case 0: sliding_layout.setPanelHeight(1000); sliding_layout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); fragmentTransaction.show(poiFragment); - fragmentTransaction.hide(roadFragment); + fragmentTransaction.hide(roadFragment).hide(filterFragment); fragmentTransaction.addToBackStack(null); break; case 1: sliding_layout.setPanelHeight(1000); sliding_layout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); fragmentTransaction.show(roadFragment); - fragmentTransaction.hide(poiFragment); + fragmentTransaction.hide(poiFragment).hide(filterFragment); fragmentTransaction.addToBackStack(null); break; case 2: + sliding_layout.setPanelHeight(1000); + sliding_layout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); + fragmentTransaction.show(filterFragment); + fragmentTransaction.hide(poiFragment).hide(roadFragment); + fragmentTransaction.addToBackStack(null); case 3: break; + case 4: + break; } return false; } }).setTitle(title); break; case R.id.iv_filter: - Intent intent = new Intent(getActivity(), FilterActivity.class); - startActivityForResult(intent,Constant.FILTER_CODE); + Intent intent = new Intent(getActivity(), FragmentManagement.class); + intent.putExtra("tag", 35); + startActivity(intent); break; } } @@ -508,13 +528,15 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen //GPS, WiFi, Radio 等状态发生变化 Log.v("State changed", s + "===" + s1); } + //隐藏文字标注 private void performPoiHide() { - if ( tencentMap == null || tencentMap.isDestroyed()) { + if (tencentMap == null || tencentMap.isDestroyed()) { return; } tencentMap.setPoisEnabled(false); } + //显示文字标注 private void performPoiShow() { if (tencentMap == null || tencentMap.isDestroyed()) { diff --git a/app/src/main/res/layout/activity_filter.xml b/app/src/main/res/layout/fragment_filter.xml similarity index 75% rename from app/src/main/res/layout/activity_filter.xml rename to app/src/main/res/layout/fragment_filter.xml index 1348807..833b32e 100644 --- a/app/src/main/res/layout/activity_filter.xml +++ b/app/src/main/res/layout/fragment_filter.xml @@ -21,6 +21,7 @@ android:layout_height="45dp" android:layout_alignParentLeft="true" android:layout_marginLeft="15dp" + android:visibility="gone" android:src="@drawable/icon_arrow" /> + android:text="类型" + app:layout_constraintBottom_toTopOf="@+id/tv_exclusive" + app:layout_constraintStart_toStartOf="@+id/tv_exclusive" /> + + + + + + + + @@ -147,7 +184,7 @@ android:id="@+id/btn_filter" android:layout_width="80dp" android:layout_height="40dp" - android:layout_marginRight="20dp" + android:layout_marginRight="20dp" style="@style/user_style" android:text="地图显示" android:gravity="center" diff --git a/app/src/main/res/layout/item_filter.xml b/app/src/main/res/layout/item_filter.xml new file mode 100644 index 0000000..836eb23 --- /dev/null +++ b/app/src/main/res/layout/item_filter.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + \ No newline at end of file