From 297f3a8b806cdd4675f0371364be89ba8043345a Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Mon, 13 Jan 2020 16:29:41 +0800 Subject: [PATCH 1/2] opt --- .../mogo/module/extensions/ExtensionsPresenter.java | 1 + .../main/java/com/mogo/module/map/MapPresenter.java | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsPresenter.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsPresenter.java index 8c11721297..17572c38e0 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsPresenter.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsPresenter.java @@ -121,6 +121,7 @@ public class ExtensionsPresenter extends Presenter< ExtensionsView > implements if ( mWeatherModel != null ) { mWeatherModel.destroy(); } + getContext().unregisterReceiver( mReceiver ); if ( mMsgCenter != null ) { mMsgCenter.unregisterMsgCenterListener( this ); } diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java index 7bf10c799d..c09c64725a 100644 --- a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java +++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java @@ -106,40 +106,52 @@ public class MapPresenter extends Presenter< MapView > implements IMogoVoiceList switch ( cmd ) { case VoiceConstants.CMD_MAP_TRAFFIC_MODE: mView.getUIController().setTrafficEnabled( true ); + AIAssist.getInstance( getContext() ).speakTTSVoice( "已打开", null ); break; case VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE: mView.getUIController().setTrafficEnabled( false ); + AIAssist.getInstance( getContext() ).speakTTSVoice( "已关闭", null ); break; case VoiceConstants.CMD_MAP_ZOOM_IN: + AIAssist.getInstance( getContext() ).speakTTSVoice( "已缩小", null ); mView.getUIController().changeZoom( true ); break; case VoiceConstants.CMD_MAP_ZOOM_OUT: + AIAssist.getInstance( getContext() ).speakTTSVoice( "已放大", null ); mView.getUIController().changeZoom( false ); break; case VoiceConstants.CMD_MAP_2D: case VoiceConstants.CMD_MAP_NORTH_UP_MODE: mView.getUIController().changeMapMode( EnumMapUI.NorthUP_2D ); + AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; case VoiceConstants.CMD_MAP_3D: mView.getUIController().changeMapMode( EnumMapUI.CarUp_3D ); + AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; case VoiceConstants.CMD_MAP_DAY_TIME_MODE: mView.getUIController().changeMapMode( EnumMapUI.Type_Light ); + AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; case VoiceConstants.CMD_MAP_NIGHT_MODE: mView.getUIController().changeMapMode( EnumMapUI.Type_Night ); + AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; case VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE: mView.getUIController().changeMapMode( EnumMapUI.Type_AUTO_LIGHT_Night ); + AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; case VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE: mView.getUIController().displayOverview(); + AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; case VoiceConstants.CMD_MAP_CONTINUE_NAVI_MODE: mView.getUIController().recoverLockMode(); + AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; case VoiceConstants.CMD_MAP_CAR_UP_MODE: mView.getUIController().changeMapMode( EnumMapUI.CarUp_2D ); + AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; } } From 639f180a814c633086f5466429d08198c938353e Mon Sep 17 00:00:00 2001 From: zhangyuanzhen Date: Mon, 13 Jan 2020 16:31:49 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=88=86=E7=B1=BB?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E7=9A=84markder?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/navi/manager/AddressManager.kt | 4 +- .../ui/adapter/SearchCategoryAdapter.java | 28 +++-- .../navi/ui/search/CategoryPresenter.java | 94 ++++++++++++++++ .../navi/ui/search/CategorySearchFragment.kt | 102 ++++++++++++++---- .../module/navi/ui/search/CategoryView.java | 24 +++++ .../navi/ui/search/ChoosePathFragment.kt | 9 +- .../module/navi/ui/search/SearchFragment.java | 4 +- .../navi/ui/search/SearchPresenter.java | 9 +- .../navi/ui/setting/SettingAddressFragment.kt | 8 ++ .../mogo/module/navi/uitls/BitmapUtils.java | 44 ++++++++ 10 files changed, 287 insertions(+), 39 deletions(-) create mode 100644 modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategoryPresenter.java create mode 100644 modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategoryView.java create mode 100644 modules/mogo-module-search/src/main/java/com/mogo/module/navi/uitls/BitmapUtils.java diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/AddressManager.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/AddressManager.kt index 452a853bca..47b2949c17 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/AddressManager.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/AddressManager.kt @@ -29,7 +29,7 @@ object AddressManager { } else { var newInstance = ChoosePathFragment.newInstance(EntityConvertUtils.poi2MogoTip( homeAddress - )) + ).point) SearchServiceHolder.push( newInstance, MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT ) @@ -45,7 +45,7 @@ object AddressManager { var newInstance = ChoosePathFragment.newInstance(EntityConvertUtils.poi2MogoTip( companyAddress - )) + ).point) SearchServiceHolder.push( newInstance, MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT ) diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/adapter/SearchCategoryAdapter.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/adapter/SearchCategoryAdapter.java index 6c4ade215f..c122441c80 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/adapter/SearchCategoryAdapter.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/adapter/SearchCategoryAdapter.java @@ -2,6 +2,7 @@ package com.mogo.module.navi.ui.adapter; import android.content.Context; import android.view.View; +import com.mogo.map.search.geo.MogoPoiItem; import com.mogo.map.search.inputtips.MogoTip; import com.mogo.module.navi.R; import com.mogo.module.navi.bean.SearchPoi; @@ -13,7 +14,7 @@ import java.util.List; * @author zyz * 2019-08-13. */ -public class SearchCategoryAdapter extends RecycleBaseAdapter { +public class SearchCategoryAdapter extends RecycleBaseAdapter { private int current = 0; private int lastPosition = 0; @@ -21,7 +22,7 @@ public class SearchCategoryAdapter extends RecycleBaseAdapter { /** * */ - public SearchCategoryAdapter(Context context, List list) { + public SearchCategoryAdapter(Context context, List list) { super(context, list, R.layout.item_search_category); } @@ -30,10 +31,10 @@ public class SearchCategoryAdapter extends RecycleBaseAdapter { private View.OnClickListener onClickListener; @Override - public void onBindViewHolder(RecycleViewHolder holder, MogoTip tip) { + public void onBindViewHolder(RecycleViewHolder holder, MogoPoiItem tip) { - holder.setText(R.id.tv_position, tip.getName()); - holder.setText(R.id.tv_position_des, tip.getAddress()); + holder.setText(R.id.tv_position, tip.getTitle()); + holder.setText(R.id.tv_position_des, tip.getSnippet()); holder.setText(R.id.iv_position,String.valueOf(holder.getLayoutPosition()+1)); holder.itemView.setTag(R.id.tag_position, holder.getLayoutPosition()); @@ -49,7 +50,7 @@ public class SearchCategoryAdapter extends RecycleBaseAdapter { this.mShowDelete = showDelete; } - public void refresh(List datums, boolean showDelete) { + public void refresh(List datums, boolean showDelete) { //this.da = datums; setShowDelete(showDelete); setDatas(datums); @@ -57,14 +58,25 @@ public class SearchCategoryAdapter extends RecycleBaseAdapter { } public void setCurrent(int current) { + + if (current==this.current) { + return; + } + this.lastPosition=this.current; this.current = current; notifyItemChanged(lastPosition); notifyItemChanged(current); - lastPosition = current; } + public int getCurrent() { + return current; + } - public MogoTip getCurrentItem(){ + public int getLastPosition(){ + return lastPosition; + } + + public MogoPoiItem getCurrentItem(){ return list.get(current); } } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategoryPresenter.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategoryPresenter.java new file mode 100644 index 0000000000..83bd92f070 --- /dev/null +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategoryPresenter.java @@ -0,0 +1,94 @@ +package com.mogo.module.navi.ui.search; + +import android.app.AlertDialog; +import android.text.Editable; +import android.text.TextUtils; +import android.widget.EditText; +import androidx.annotation.NonNull; +import androidx.lifecycle.LifecycleOwner; +import com.alibaba.android.arouter.launcher.ARouter; +import com.mogo.commons.mvp.Presenter; +import com.mogo.map.search.geo.MogoPoiItem; +import com.mogo.map.search.inputtips.IMogoInputtipsListener; +import com.mogo.map.search.inputtips.IMogoInputtipsSearch; +import com.mogo.map.search.inputtips.MogoTip; +import com.mogo.map.search.inputtips.query.MogoInputtipsQuery; +import com.mogo.map.search.poisearch.IMogoPoiSearch; +import com.mogo.map.search.poisearch.IMogoPoiSearchListener; +import com.mogo.map.search.poisearch.MogoPoiResult; +import com.mogo.map.search.poisearch.query.MogoPoiSearchQuery; +import com.mogo.module.common.TextWatcherAdapter; +import com.mogo.module.navi.bean.EntityConvertUtils; +import com.mogo.module.navi.bean.SearchPoi; +import com.mogo.module.navi.constants.DataConstants; +import com.mogo.module.navi.constants.SearchServiceHolder; +import com.mogo.module.navi.database.AppDataBase; +import com.mogo.service.MogoServicePaths; +import com.mogo.service.map.IMogoMapService; +import io.reactivex.Observable; +import io.reactivex.ObservableEmitter; +import io.reactivex.ObservableOnSubscribe; +import io.reactivex.Single; +import io.reactivex.SingleEmitter; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.CompositeDisposable; +import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Consumer; +import io.reactivex.schedulers.Schedulers; +import java.util.List; + +/** + * @author congtaowang + * @since 2019-10-02 + *

+ * 搜搜页逻辑处理 + */ +public class CategoryPresenter extends Presenter { + + private CompositeDisposable mCompositeDisposable; + private IMogoMapService mMapService; + + public CategoryPresenter(CategoryView view) { + super(view); + mCompositeDisposable = new CompositeDisposable(); + } + + @Override + public void onCreate(@NonNull LifecycleOwner owner) { + super.onCreate(owner); + mMapService = (IMogoMapService) ARouter.getInstance() + .build(MogoServicePaths.PATH_SERVICES_MAP) + .navigation(getContext()); + } + + public void startSearchLocalPoiByInput(String keyword) { + MogoPoiSearchQuery mogoInputtipsQuery = new MogoPoiSearchQuery("", keyword); + mogoInputtipsQuery.setLocation( + SearchServiceHolder.INSTANCE.getMapUIController().getWindowCenterLocation()); + IMogoPoiSearch inputtipsSearch = + mMapService.getPoiSearch(getContext(), mogoInputtipsQuery); + + inputtipsSearch.setPoiSearchListener(new IMogoPoiSearchListener() { + @Override public void onPoiSearched(MogoPoiResult result, int errorCode) { + mView.renderSearchPoiResult(result.getPois()); + } + + @Override public void onPoiItemSearched(MogoPoiItem item, int errorCode) { + + } + }); + inputtipsSearch.searchPOIAsyn(); + } + + + + @Override + public void onDestroy(@NonNull LifecycleOwner owner) { + super.onDestroy(owner); + if (mCompositeDisposable != null && !mCompositeDisposable.isDisposed()) { + mCompositeDisposable.dispose(); + mCompositeDisposable = null; + } + //CameraChangedLiveData.getInstance().removeAllObserver(); + } +} diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt index eb41b4276e..e09c725af4 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt @@ -1,15 +1,22 @@ package com.mogo.module.navi.ui.search +import android.graphics.Bitmap +import android.graphics.BitmapFactory import android.os.Bundle import android.view.View import androidx.fragment.app.Fragment import androidx.recyclerview.widget.LinearLayoutManager +import com.mogo.map.marker.IMogoMarker +import com.mogo.map.marker.MogoMarkerOptions +import com.mogo.map.search.geo.MogoPoiItem import com.mogo.map.search.inputtips.MogoTip import com.mogo.module.common.MogoModulePaths import com.mogo.module.navi.R import com.mogo.module.navi.bean.SearchPoi import com.mogo.module.navi.constants.SearchServiceHolder import com.mogo.module.navi.ui.adapter.SearchCategoryAdapter +import com.mogo.module.navi.ui.base.BaseFragment +import com.mogo.module.navi.uitls.BitmapUtils import kotlinx.android.synthetic.main.fragment_search_category.cv_search_result import kotlinx.android.synthetic.main.fragment_search_category.rv_search_result import kotlinx.android.synthetic.main.fragment_search_category.tv_navi_navi @@ -20,18 +27,54 @@ import kotlinx.android.synthetic.main.include_search_bar.iv_navi_back * @author zyz * 2020-01-09. */ -class CategorySearchFragment : BaseSearchFragment() { +class CategorySearchFragment : BaseFragment(), CategoryView { + + private val TAG: String = "CategorySearchFragment" + private var addMarkers: List? = null + override fun renderSearchPoiResult(datums: List?) { + mAdapter.setDatas(datums) + cv_search_result.visibility = View.VISIBLE + + var arrayList = ArrayList() + for (index in 0 until datums!!.size) { + var decodeResource = + BitmapFactory.decodeResource( + resources, + if (mAdapter.current == index) R.mipmap.icon_search_category_checked else R.mipmap.icon_search_category_unchecked + ) + + var createWaterMask = + BitmapUtils.createWaterMask( + context, decodeResource, (index + 1).toString(), R.color.white, 18 + ) + val options = MogoMarkerOptions() + .icon(createWaterMask) + .latitude(datums[index].point?.lat ?: 0.0) + .owner("CategorySearchFragment") + .anchor(0.5f, 1f) + .longitude(datums[index].point?.lng ?: 0.0) + arrayList.add(options) + } + addMarkers = SearchServiceHolder.getMarkerManger() + .addMarkers(TAG, arrayList, true) + + } private lateinit var mAdapter: SearchCategoryAdapter - private var category:String?=null + private lateinit var mSearchPresenter: CategoryPresenter + private var category: String? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - category=arguments?.getString("category") + category = arguments?.getString("category") SearchServiceHolder.statusManager.setSearchUIShow( MogoModulePaths.PATH_FRAGMENT_SEARCH_CATEGORY, false ) + mSearchPresenter = CategoryPresenter(this) + lifecycle.addObserver(mSearchPresenter) + } + override fun getLayoutId(): Int { return R.layout.fragment_search_category } @@ -57,33 +100,52 @@ class CategorySearchFragment : BaseSearchFragment() { tv_navi_navi.setOnClickListener { - var newInstance = ChoosePathFragment.newInstance(mAdapter.currentItem) + var newInstance = ChoosePathFragment.newInstance(mAdapter.currentItem.point) SearchServiceHolder.push(newInstance, MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT) } mAdapter.setOnClickListener { var position = it.getTag(R.id.tag_position) as Int mAdapter.setCurrent(position) + + updateMarker() } } + private fun updateMarker() { + + addMarkers?.get(mAdapter.lastPosition) + ?.setIcon(getMarkerIcon(mAdapter.lastPosition)) + addMarkers?.get(mAdapter.current) + ?.setIcon(getMarkerIcon(mAdapter.current)) + } + + private fun getMarkerIcon(index :Int): Bitmap { + var decodeResource = + BitmapFactory.decodeResource( + resources, + if (mAdapter.current == index) R.mipmap.icon_search_category_checked else R.mipmap.icon_search_category_unchecked + ) + + var createWaterMask = + BitmapUtils.createWaterMask( + context, decodeResource, (index+1).toString(), R.color.white, 18 + ) + return createWaterMask + } + override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - mSearchPresenter.startSearchPoiByInput(category) - - } - override fun renderSearchPoiResult( - datums: List, - showDelete: Boolean - ) { - - mAdapter.setDatas(datums) - cv_search_result.visibility=View.VISIBLE + mSearchPresenter.startSearchLocalPoiByInput(category) } - override fun showHistory(datums: List) { - + override fun onDestroyView() { + super.onDestroyView() + mSearchPresenter.onDestroy(viewLifecycleOwner) + lifecycle.removeObserver(mSearchPresenter) + SearchServiceHolder.getMarkerManger() + .removeMarkers(TAG) } override fun onDestroy() { @@ -93,12 +155,12 @@ class CategorySearchFragment : BaseSearchFragment() { ) } - companion object{ - fun newInstance( category:String):Fragment{ + companion object { + fun newInstance(category: String): Fragment { var bundle = Bundle() - bundle.putString("category",category) + bundle.putString("category", category) var categorySerachFragment = CategorySearchFragment() - categorySerachFragment.arguments=bundle + categorySerachFragment.arguments = bundle return categorySerachFragment } } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategoryView.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategoryView.java new file mode 100644 index 0000000000..fad125dcb7 --- /dev/null +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategoryView.java @@ -0,0 +1,24 @@ +package com.mogo.module.navi.ui.search; + +import android.widget.EditText; +import com.mogo.commons.mvp.IView; +import com.mogo.map.search.geo.MogoPoiItem; +import com.mogo.map.search.inputtips.MogoTip; +import com.mogo.module.navi.bean.SearchPoi; +import java.util.List; + +/** + * @author congtaowang + * @since 2019-10-02 + *

+ * 描述 + */ +public interface CategoryView extends IView { + + /** + * @param datums + */ + void renderSearchPoiResult(List datums); + + +} diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt index 2fb8fc286c..df5bcd88e6 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt @@ -4,6 +4,7 @@ import android.os.Bundle import android.view.View import androidx.fragment.app.Fragment import androidx.recyclerview.widget.LinearLayoutManager +import com.mogo.map.MogoLatLng import com.mogo.map.navi.IMogoNaviListener import com.mogo.map.navi.MogoCalculatePath import com.mogo.map.navi.MogoNaviInfo @@ -57,10 +58,10 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener { return R.layout.fragment_search_category } - var mogoTip: MogoTip? = null + var mogoTip: MogoLatLng? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mogoTip = arguments?.getParcelable(AMapConstants.KEY_PARCELABLE) + mogoTip = arguments?.getParcelable(AMapConstants.KEY_PARCELABLE) SearchServiceHolder.statusManager.setSearchUIShow( MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT, true ) @@ -82,7 +83,7 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener { et_navi_search.setText(getString(R.string.choose_path)) et_navi_search.isEnabled = false SearchServiceHolder.getNavi() - .naviTo(mogoTip?.point) + .naviTo(mogoTip) SearchServiceHolder.listenerCenter.registerMogoNaviListener( MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT, this @@ -124,7 +125,7 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener { } companion object { - fun newInstance(searchPoi: MogoTip): Fragment { + fun newInstance(searchPoi: MogoLatLng): Fragment { var bundle = Bundle() bundle.putParcelable(AMapConstants.KEY_PARCELABLE, searchPoi) var choosePathFragment = ChoosePathFragment() diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java index e9325237ad..73f2322349 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java @@ -116,7 +116,7 @@ public class SearchFragment extends BaseSearchFragment implements SearchView, Vi @Override public void onClick(View v) { SearchPoi item = (SearchPoi) v.getTag(R.id.tag_item); MogoTip mogoTip = EntityConvertUtils.poi2MogoTip(item); - SearchServiceHolder.INSTANCE.push(ChoosePathFragment.Companion.newInstance(mogoTip), + SearchServiceHolder.INSTANCE.push(ChoosePathFragment.Companion.newInstance(mogoTip.getPoint()), MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT); } }); @@ -126,7 +126,7 @@ public class SearchFragment extends BaseSearchFragment implements SearchView, Vi MogoTip tag = (MogoTip) v.getTag(R.id.tag_position); SearchPoi searchPoi = EntityConvertUtils.tipToPoi(tag); mSearchPresenter.insert(searchPoi); - SearchServiceHolder.INSTANCE.push(ChoosePathFragment.Companion.newInstance(tag), + SearchServiceHolder.INSTANCE.push(ChoosePathFragment.Companion.newInstance(tag.getPoint()), MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT); } }); diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchPresenter.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchPresenter.java index d5dabb31c8..74cbbe8708 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchPresenter.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchPresenter.java @@ -8,14 +8,20 @@ import androidx.annotation.NonNull; import androidx.lifecycle.LifecycleOwner; import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.commons.mvp.Presenter; +import com.mogo.map.search.geo.MogoPoiItem; import com.mogo.map.search.inputtips.IMogoInputtipsListener; import com.mogo.map.search.inputtips.IMogoInputtipsSearch; import com.mogo.map.search.inputtips.MogoTip; import com.mogo.map.search.inputtips.query.MogoInputtipsQuery; +import com.mogo.map.search.poisearch.IMogoPoiSearch; +import com.mogo.map.search.poisearch.IMogoPoiSearchListener; +import com.mogo.map.search.poisearch.MogoPoiResult; +import com.mogo.map.search.poisearch.query.MogoPoiSearchQuery; import com.mogo.module.common.TextWatcherAdapter; import com.mogo.module.navi.bean.EntityConvertUtils; import com.mogo.module.navi.bean.SearchPoi; import com.mogo.module.navi.constants.DataConstants; +import com.mogo.module.navi.constants.SearchServiceHolder; import com.mogo.module.navi.database.AppDataBase; import com.mogo.service.MogoServicePaths; import com.mogo.service.map.IMogoMapService; @@ -105,9 +111,6 @@ public class SearchPresenter extends Presenter< SearchView > inputtipsSearch.requestInputtipsAsyn(); } - - - /** * 缓存搜索到的导航地址 * diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt index 279fa9731b..d46d26f80e 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt @@ -91,6 +91,10 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { SearchServiceHolder.getGeoSearcher() .setGeoSearchListener(this) + SearchServiceHolder.statusManager.setSearchUIShow( + MogoModulePaths.PATH_FRAGMENT_SETTING_HOME, false) + + } override fun getLayoutId(): Int { @@ -173,6 +177,10 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { MogoModulePaths.PATH_FRAGMENT_SETTING_HOME ) addMarker?.destroy() + + SearchServiceHolder.statusManager.setSearchUIShow( + MogoModulePaths.PATH_FRAGMENT_SETTING_HOME, true) + // moveMapToRight() } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/uitls/BitmapUtils.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/uitls/BitmapUtils.java new file mode 100644 index 0000000000..7baf31fd2e --- /dev/null +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/uitls/BitmapUtils.java @@ -0,0 +1,44 @@ +package com.mogo.module.navi.uitls; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Rect; +import androidx.core.content.ContextCompat; + +/** + * @author zyz + * 2020-01-13. + */ +public class BitmapUtils { + public static Bitmap createWaterMask(Context context, Bitmap src, String text, int textColor, int textSize) { + Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + paint.setColor(ContextCompat.getColor(context, textColor)); + paint.setTextSize(dp2px(context, textSize)); + + int width = src.getWidth(); + int height = src.getHeight(); + //创建一个bitmap + Rect bounds = new Rect(); + paint.getTextBounds(text, 0, text.length(), bounds); + // 创建一个新的和SRC长度宽度一样的位图 + Bitmap newb = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); + //将该图片作为画布 + Canvas canvas = new Canvas(newb); + //在画布 0,0坐标上开始绘制原始图片 + canvas.drawBitmap(src, 0, 0, null); + // 绘制文字 + canvas.drawText(text, (width-bounds.width())/2.0F, (float) ( bounds.height()*1.8), paint); + // 保存 + canvas.save(); + // 存储 + canvas.restore(); + return newb; + } + + public static int dp2px(Context context, float dp) { + final float scale = context.getResources().getDisplayMetrics().density; + return (int) (dp * scale + 0.5f); + } +}