根据类别搜索

This commit is contained in:
zhangyuanzhen
2020-01-09 15:11:04 +08:00
parent 989976ceb7
commit 8bb0865b62
29 changed files with 568 additions and 235 deletions

1
.idea/.name generated
View File

@@ -1 +0,0 @@
MogoLauncher

View File

@@ -1,116 +0,0 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<codeStyleSettings language="XML">
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
<arrangement>
<rules>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:android</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:id</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>style</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>ANDROID_ATTRIBUTE_ORDER</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>.*</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
</rules>
</arrangement>
</codeStyleSettings>
</code_scheme>
</component>

39
.idea/gradle.xml generated
View File

@@ -1,39 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
<option value="$PROJECT_DIR$/foudations" />
<option value="$PROJECT_DIR$/foudations/mogo-commons" />
<option value="$PROJECT_DIR$/foudations/mogo-connection" />
<option value="$PROJECT_DIR$/foudations/mogo-utils" />
<option value="$PROJECT_DIR$/libraries" />
<option value="$PROJECT_DIR$/libraries/map-amap" />
<option value="$PROJECT_DIR$/libraries/mogo-map" />
<option value="$PROJECT_DIR$/libraries/mogo-map-api" />
<option value="$PROJECT_DIR$/modules" />
<option value="$PROJECT_DIR$/modules/mogo-module-apps" />
<option value="$PROJECT_DIR$/modules/mogo-module-common" />
<option value="$PROJECT_DIR$/modules/mogo-module-extensions" />
<option value="$PROJECT_DIR$/modules/mogo-module-main" />
<option value="$PROJECT_DIR$/modules/mogo-module-map" />
<option value="$PROJECT_DIR$/modules/mogo-module-search" />
<option value="$PROJECT_DIR$/modules/mogo-module-service" />
<option value="$PROJECT_DIR$/modules/mogo-module-tanlu" />
<option value="$PROJECT_DIR$/services" />
<option value="$PROJECT_DIR$/services/mogo-service" />
<option value="$PROJECT_DIR$/services/mogo-service-api" />
</set>
</option>
<option name="resolveModulePerSourceSet" value="false" />
<option name="testRunner" value="PLATFORM" />
</GradleProjectSettings>
</option>
</component>
</project>

14
.idea/misc.xml generated
View File

@@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CMakeSettings">
<configurations>
<configuration PROFILE_NAME="Debug" CONFIG_NAME="Debug" />
</configurations>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="JDK" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>

View File

@@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
</set>
</option>
</component>
</project>

6
.idea/vcs.xml generated
View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View File

@@ -16,6 +16,7 @@ ext {
androidxmultidex : "androidx.multidex:multidex:2.0.1",
androidxviewpager2 : "androidx.viewpager2:viewpager2:1.0.0",
androidxrecyclerview : "androidx.recyclerview:recyclerview:1.1.0",
androidxcardview : "androidx.cardview:cardview:1.0.0",
// 测试
junit : "junit:junit:4.12",
androidxjunit : "androidx.test.ext:junit:1.1.0",

View File

@@ -58,6 +58,12 @@ public class MogoModulePaths {
public static final String PATH_FRAGMENT_SEARCH = "/navi/search";
/**
* 按类别搜索 fragment
*/
@Keep
public static final String PATH_FRAGMENT_SEARCH_CATEGORY = "/navi/search/category";
/**
* 设置 fragment

View File

@@ -50,6 +50,7 @@ dependencies {
kapt rootProject.ext.dependencies.roomAnnotationProcessor
implementation rootProject.ext.dependencies.roomRxjava
implementation rootProject.ext.dependencies.androidxrecyclerview
implementation rootProject.ext.dependencies.androidxcardview
kapt rootProject.ext.dependencies.aroutercompiler
// implementation rootProject.ext.dependencies.jetbrainsannotationsjava5
implementation rootProject.ext.dependencies.rxandroid

View File

@@ -14,6 +14,13 @@ public class AMapConstants {
*/
public static final float AMAP_ZOOM_COMMON_LEVEL = 15.0f;
/**
* 设置家和公司的Key
*/
public static final String KEY_SET_HOME_COMPONY = "key_home";
/**
* 点击当前位置按钮的地图缩放级别
*/

View File

@@ -0,0 +1,64 @@
package com.mogo.module.navi.ui.adapter;
import android.content.Context;
import android.view.View;
import com.mogo.map.search.inputtips.MogoTip;
import com.mogo.module.navi.R;
import com.mogo.module.navi.ui.adapter.base.RecycleBaseAdapter;
import com.mogo.module.navi.ui.adapter.base.RecycleViewHolder;
import java.util.List;
/**
* @author zyz
* 2019-08-13.
*/
public class SearchCategoryAdapter extends RecycleBaseAdapter<MogoTip> {
private int current = 0;
private int lastPosition = 0;
/**
*
*/
public SearchCategoryAdapter(Context context, List<MogoTip> list) {
super(context, list, R.layout.item_search_category);
}
private boolean mShowDelete = false;
private View.OnClickListener onClickListener;
@Override
public void onBindViewHolder(RecycleViewHolder holder, MogoTip tip) {
holder.setText(R.id.tv_position, tip.getName());
holder.setText(R.id.tv_position_des, tip.getAddress());
holder.setText(R.id.iv_position,String.valueOf(holder.getLayoutPosition()+1));
holder.itemView.setTag(R.id.tag_position, holder.getLayoutPosition());
holder.itemView.setOnClickListener(onClickListener);
holder.itemView.setSelected(current == holder.getLayoutPosition());
}
public void setOnClickListener(View.OnClickListener onClickListener) {
this.onClickListener = onClickListener;
}
public void setShowDelete(boolean showDelete) {
this.mShowDelete = showDelete;
}
public void refresh(List<MogoTip> datums, boolean showDelete) {
//this.da = datums;
setShowDelete(showDelete);
setDatas(datums);
//notifyDataSetChanged();
}
public void setCurrent(int current) {
this.current = current;
notifyItemChanged(lastPosition);
notifyItemChanged(current);
lastPosition = current;
}
}

View File

@@ -92,6 +92,12 @@ public abstract class RecycleBaseAdapter<T> extends
}
notifyDataSetChanged();
}
public void clear(){
if (list != null) {
list.clear();
notifyDataSetChanged();
}
}
public void messageShow(String mes)
{
if (toast==null){

View File

@@ -0,0 +1,91 @@
package com.mogo.module.navi.ui.search
import android.os.Bundle
import android.view.View
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import com.mogo.map.search.inputtips.MogoTip
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 kotlinx.android.synthetic.main.fragment_search_category.cv_search_result
import kotlinx.android.synthetic.main.fragment_search_category.tv_navi_navi
import kotlinx.android.synthetic.main.fragment_setting_address.rv_search_result
import kotlinx.android.synthetic.main.include_search_bar.et_navi_search
import kotlinx.android.synthetic.main.include_search_bar.iv_navi_back
/**
* @author zyz
* 2020-01-09.
*/
class CategorySearchFragment : BaseSearchFragment() {
private lateinit var mAdapter: SearchCategoryAdapter
private var category:String?=null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
category=arguments?.getString("category")
}
override fun getLayoutId(): Int {
return R.layout.fragment_search_category
}
override fun onViewCreated(
view: View,
savedInstanceState: Bundle?
) {
super.onViewCreated(view, savedInstanceState)
mAdapter = SearchCategoryAdapter(activity, ArrayList())
rv_search_result.layoutManager =
LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)
rv_search_result.adapter = mAdapter
et_navi_search.setText(category)
iv_navi_back.setOnClickListener {
SearchServiceHolder.fragmentManager.pop()
}
tv_navi_navi.setOnClickListener {
}
mAdapter.setOnClickListener {
var position = it.getTag(R.id.tag_position) as Int
mAdapter.setCurrent(position)
}
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
mSearchPresenter.startSearchPoiByInput(category)
}
override fun renderSearchPoiResult(
datums: List<MogoTip>,
showDelete: Boolean
) {
mAdapter.setDatas(datums)
cv_search_result.visibility=View.VISIBLE
}
override fun showHistory(datums: List<SearchPoi>) {
}
companion object{
fun newInstance( category:String):Fragment{
var bundle = Bundle()
bundle.putString("category",category)
var categorySerachFragment = CategorySearchFragment()
categorySerachFragment.arguments=bundle
return categorySerachFragment
}
}
}

View File

@@ -1,38 +1,27 @@
package com.mogo.module.navi.ui.search;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
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.EntityConvertUtils;
import com.mogo.module.navi.bean.SearchPoi;
import com.mogo.module.navi.database.AppDataBase;
import com.mogo.module.navi.constants.SearchServiceHolder;
import com.mogo.module.navi.ui.adapter.HistoryPoiAdapter;
import com.mogo.module.navi.ui.adapter.SearchPoiAdapter;
import com.mogo.module.navi.ui.base.BaseFragment;
import com.mogo.module.navi.ui.base.UiController;
import com.mogo.module.navi.ui.setting.NaviSettingFragment;
import com.mogo.service.MogoServicePaths;
import com.mogo.module.navi.ui.setting.SettingAddressFragment;
import com.mogo.service.fragmentmanager.FragmentDescriptor;
import com.mogo.service.fragmentmanager.IMogoFragmentManager;
import com.mogo.utils.WindowUtils;
import io.reactivex.disposables.Disposable;
import java.util.ArrayList;
import java.util.List;
@@ -47,13 +36,12 @@ import java.util.List;
* {@link SearchConstants#SEARCH_TYPE_MULTI_HOME}
*/
@Route(path = MogoModulePaths.PATH_FRAGMENT_SEARCH)
public class SearchFragment extends BaseSearchFragment implements SearchView {
public class SearchFragment extends BaseSearchFragment implements SearchView, View.OnClickListener {
public static final String TAG = "search";
public int mSearchType;
private View mClose;
private RecyclerView mSearchResult;
@@ -61,7 +49,6 @@ public class SearchFragment extends BaseSearchFragment implements SearchView {
private SearchPoiAdapter mPoiAdapter;
private HistoryPoiAdapter mHistoryAdapter;
/**
* 设置常用地址(我的位置、选点)时的设置按钮
*/
@@ -73,7 +60,6 @@ public class SearchFragment extends BaseSearchFragment implements SearchView {
private boolean mActionSuccess = false;
private View rlHistory;
private TextView tvEmpty;
IMogoFragmentManager fragmentManager;
@Override
public void onAttach(Context context) {
@@ -84,7 +70,6 @@ public class SearchFragment extends BaseSearchFragment implements SearchView {
@Override public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
fragmentManager = (IMogoFragmentManager) ARouter.getInstance().build(MogoServicePaths.PATH_FRAGMENT_MANAGER).navigation();
}
@@ -111,17 +96,17 @@ public class SearchFragment extends BaseSearchFragment implements SearchView {
new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
mSearchResult.setLayoutManager(linearLayoutManager);
mPoiAdapter= new SearchPoiAdapter(getActivity(),new ArrayList<>());
mPoiAdapter = new SearchPoiAdapter(getActivity(), new ArrayList<>());
mSearchResult.setAdapter(mPoiAdapter);
mHistoryAdapter= new HistoryPoiAdapter(getActivity(),new ArrayList<>());
mHistoryAdapter = new HistoryPoiAdapter(getActivity(), new ArrayList<>());
rvHistory.setAdapter(mHistoryAdapter);
tvEmpty = findViewById(R.id.tv_navi_list_empty);
findViewById(R.id.iv_navi_back).setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
fragmentManager.pop();
SearchServiceHolder.INSTANCE.getFragmentManager().pop();
}
});
@@ -139,7 +124,6 @@ public class SearchFragment extends BaseSearchFragment implements SearchView {
}
});
findViewById(R.id.tv_navi_history_clear).setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
mSearchPresenter.deleteAllCachedPoi();
@@ -148,14 +132,44 @@ public class SearchFragment extends BaseSearchFragment implements SearchView {
findViewById(R.id.tv_navi_setting).setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
FragmentDescriptor.Builder builder = new FragmentDescriptor.Builder();
builder.fragment(new NaviSettingFragment());
FragmentDescriptor build =
builder.tag(MogoModulePaths.PATH_FRAGMENT_SETTING).build();
fragmentManager.push(build);
push(new NaviSettingFragment(),MogoModulePaths.PATH_FRAGMENT_SETTING);
}
});
findViewById(R.id.tv_navi_company).setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
pupSettingAddress(1);
}
});
findViewById(R.id.tv_navi_home).setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
pupSettingAddress(0);
}
});
findViewById(R.id.tv_navi_wash).setOnClickListener(this);
findViewById(R.id.tv_navi_toilet).setOnClickListener(this);
findViewById(R.id.tv_navi_gas).setOnClickListener(this);
findViewById(R.id.tv_navi_restaurant).setOnClickListener(this);
findViewById(R.id.tv_navi_park).setOnClickListener(this);
}
private void push(Fragment fragment,String tag) {
FragmentDescriptor.Builder builder = new FragmentDescriptor.Builder();
builder.fragment(fragment);
FragmentDescriptor build =
builder.tag(tag).build();
SearchServiceHolder.INSTANCE.getFragmentManager().push(build);
}
private void pupSettingAddress(int type) {
FragmentDescriptor.Builder builder = new FragmentDescriptor.Builder();
builder.fragment(SettingAddressFragment.Companion.newInstance(type));
FragmentDescriptor build =
builder.tag(MogoModulePaths.PATH_FRAGMENT_SETTING_HOME).build();
SearchServiceHolder.INSTANCE.getFragmentManager().push(build);
}
/**
@@ -236,10 +250,9 @@ public class SearchFragment extends BaseSearchFragment implements SearchView {
//}
}
@Override
public void renderSearchPoiResult(List<MogoTip> datums, boolean showDelete) {
if (datums==null||datums.isEmpty()) {
if (datums == null || datums.isEmpty()) {
showEmpty(getString(R.string.search_empty));
return;
}
@@ -249,7 +262,7 @@ public class SearchFragment extends BaseSearchFragment implements SearchView {
@Override public void showHistory(List<SearchPoi> datums) {
if (datums==null||datums.isEmpty()) {
if (datums == null || datums.isEmpty()) {
showEmpty(getString(R.string.history_empty));
return;
}
@@ -327,10 +340,8 @@ public class SearchFragment extends BaseSearchFragment implements SearchView {
// }
//}
private void navi2Location(SearchPoi searchPoi) {
}
/**
@@ -350,7 +361,6 @@ public class SearchFragment extends BaseSearchFragment implements SearchView {
}
}
private void showResult() {
rlHistory.setVisibility(View.GONE);
mSearchResult.setVisibility(View.VISIBLE);
@@ -363,10 +373,20 @@ public class SearchFragment extends BaseSearchFragment implements SearchView {
tvEmpty.setVisibility(View.GONE);
}
private void showEmpty(String str){
private void showEmpty(String str) {
rlHistory.setVisibility(View.GONE);
tvEmpty.setText(str);
mSearchResult.setVisibility(View.GONE);
tvEmpty.setVisibility(View.VISIBLE);
}
/**
* 类别
*/
@Override public void onClick(View v) {
TextView category = (TextView) v;
String text = category.getText().toString();
push(CategorySearchFragment.Companion.newInstance(text),MogoModulePaths.PATH_FRAGMENT_SEARCH_CATEGORY);
}
}

View File

@@ -91,7 +91,7 @@ public class SearchPresenter extends Presenter< SearchView >
}
};
private void startSearchPoiByInput( String keyword ) {
public void startSearchPoiByInput( String keyword ) {
MogoInputtipsQuery mogoInputtipsQuery = new MogoInputtipsQuery();
mogoInputtipsQuery.setKeyword(keyword);
IMogoInputtipsSearch inputtipsSearch =

View File

@@ -2,32 +2,127 @@ package com.mogo.module.navi.ui.setting
import android.os.Bundle
import android.view.View
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import com.alibaba.android.arouter.facade.annotation.Route
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.AMapConstants
import com.mogo.module.navi.constants.SearchServiceHolder
import com.mogo.module.navi.ui.adapter.SearchPoiAdapter
import com.mogo.module.navi.ui.base.BaseFragment
import com.mogo.module.navi.ui.search.BaseSearchFragment
import kotlinx.android.synthetic.main.fragment_navi_setting.iv_back
import kotlinx.android.synthetic.main.fragment_navi_setting.tv_navi_sound_type
import kotlinx.android.synthetic.main.include_search_bar.iv_navi_back
import kotlinx.android.synthetic.main.fragment_setting_address.group_set_address
import kotlinx.android.synthetic.main.fragment_setting_address.rv_search_result
import kotlinx.android.synthetic.main.fragment_setting_address.tv_navi_choose_point
import kotlinx.android.synthetic.main.fragment_setting_address.tv_navi_my_location
import kotlinx.android.synthetic.main.fragment_setting_address.tv_set_as_home
import kotlinx.android.synthetic.main.include_search_bar.et_navi_search
/**
* @author zyz
* 2020-01-07.
*/
@Route(path= MogoModulePaths.PATH_FRAGMENT_SETTING)
class SettingAddressFragment : BaseFragment() {
@Route(path = MogoModulePaths.PATH_FRAGMENT_SETTING_HOME)
class SettingAddressFragment : BaseSearchFragment() {
override fun renderSearchPoiResult(
datums: MutableList<MogoTip>?,
showDelete: Boolean
) {
mAdapter.setDatas(datums)
group_set_address.visibility = View.GONE
rv_search_result.visibility = View.VISIBLE
}
override fun showHistory(datums: MutableList<SearchPoi>?) {
}
private var style: Int = 0
private lateinit var mAdapter: SearchPoiAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
style = arguments?.getInt(AMapConstants.KEY_SET_HOME_COMPONY) ?: 0
}
override fun getLayoutId(): Int {
return R.layout.fragment_setting_address
}
fun isHome(): Boolean {
return style == 0
}
fun isCompony(): Boolean {
return style == 1
}
fun isSearch(): Boolean {
return group_set_address.visibility == View.GONE
}
override fun onViewCreated(
view: View,
savedInstanceState: Bundle?
) {
super.onViewCreated(view, savedInstanceState)
iv_back.setOnClickListener {
SearchServiceHolder.fragmentManager.pop()
if (isHome()) {
tv_set_as_home.text = resources.getString(R.string.set_as_home_navi)
} else {
tv_set_as_home.text = resources.getString(R.string.set_as_compony_navi)
}
mAdapter = SearchPoiAdapter(activity, ArrayList())
rv_search_result.layoutManager =
LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)
rv_search_result.adapter = mAdapter
iv_navi_back.setOnClickListener {
if (group_set_address.visibility == View.VISIBLE) {
SearchServiceHolder.fragmentManager.pop()
} else {
reset()
}
}
tv_navi_choose_point.setOnClickListener {
group_set_address.visibility = View.GONE
tv_set_as_home.visibility = View.VISIBLE
}
tv_navi_my_location.setOnClickListener {
group_set_address.visibility = View.GONE
tv_set_as_home.visibility = View.VISIBLE
}
}
private fun reset() {
group_set_address.visibility = View.VISIBLE
rv_search_result.visibility = View.GONE
mAdapter.clear()
et_navi_search.setText("")
tv_set_as_home.visibility = View.GONE
}
companion object {
fun newInstance(type: Int = 0): Fragment {
var settingAddressFragment = SettingAddressFragment()
val bundle = Bundle()
bundle.putInt(AMapConstants.KEY_SET_HOME_COMPONY, type)
settingAddressFragment.setArguments(bundle)
return settingAddressFragment
}
}
}

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true">
<shape android:shape="rectangle">
<gradient
android:angle="180"
android:startColor="#1A3E7FFC"
android:endColor="#3E7FFC" />
</shape>
</item>
<item android:drawable="@color/translate"/>
</selector>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/icon_search_category_checked" android:state_selected="true"/>
<item android:drawable="@mipmap/icon_search_category_checked" android:state_checked="true"/>
<item android:drawable="@mipmap/icon_search_category_unchecked"/>
</selector>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:radius="@dimen/dp_16"/>
<gradient
android:angle="180"
android:endColor="#3E7FFC"
android:startColor="#5CC1FF" />
</shape>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="#3F4057"/>
<corners android:radius="@dimen/dp_8"/>
<corners android:radius="@dimen/dp_16"/>
</shape>

View File

@@ -34,6 +34,7 @@
android:layout_weight="1"
android:textSize="@dimen/txt_normal"
android:paddingLeft="@dimen/dp_75"
android:id="@+id/tv_navi_home"
android:gravity="center_vertical"
android:drawableLeft="@mipmap/icon_navi_home"
android:text="@string/navi_home"
@@ -51,7 +52,7 @@
android:textSize="@dimen/txt_normal"
android:text="@string/navi_company"
android:paddingLeft="@dimen/dp_75"
android:id="@+id/tv_navi_company"
android:gravity="center_vertical"
android:drawableLeft="@mipmap/icon_navi_company"
android:layout_height="match_parent"

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/dp_60"
android:paddingLeft="@dimen/dp_60"
android:paddingRight="@dimen/dp_60"
android:paddingTop="@dimen/dp_40"
>
<androidx.cardview.widget.CardView
android:id="@+id/cv_search_result"
android:layout_width="@dimen/dp_838"
android:layout_height="@dimen/dp_778"
android:layout_marginTop="@dimen/dp_32"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/ll_navi_search"
app:cardBackgroundColor="#3F4057"
app:cardCornerRadius="@dimen/dp_16"
>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_search_result"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<TextView
android:id="@+id/tv_navi_navi"
android:layout_gravity="bottom"
android:layout_width="match_parent"
android:layout_margin="@dimen/dp_40"
android:text="@string/navi_to_there"
android:layout_height="@dimen/dp_104"
style="@style/txt_btn"
/>
</androidx.cardview.widget.CardView>
<include layout="@layout/include_search_bar" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -1,10 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:paddingBottom="@dimen/dp_60"
android:paddingLeft="@dimen/dp_60"
android:paddingRight="@dimen/dp_60"
android:paddingTop="@dimen/dp_40"
>
<include layout="@layout/include_search_bar"/>
<include layout="@layout/include_search_bar" />
<TextView
android:layout_width="180dp"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginTop="@dimen/dp_32"
android:textSize="@dimen/sp_40"
android:textColor="@color/white"
android:paddingLeft="@dimen/dp_56"
android:gravity="center_vertical"
android:background="@drawable/shape_round_gray"
android:text="@string/my_location_search"
android:drawablePadding="@dimen/dp_8"
android:id="@+id/tv_navi_my_location"
android:drawableLeft="@mipmap/icon_navi_location"
app:layout_constraintTop_toBottomOf="@+id/ll_navi_search"
android:layout_height="@dimen/dp_120"/>
<TextView
android:layout_width="180dp"
android:id="@+id/tv_navi_choose_point"
android:textSize="@dimen/sp_40"
app:layout_constraintLeft_toRightOf="@id/tv_navi_my_location"
app:layout_constraintTop_toTopOf="@id/tv_navi_my_location"
android:textColor="@color/white"
android:paddingLeft="@dimen/dp_56"
android:drawablePadding="@dimen/dp_8"
android:background="@drawable/shape_round_gray"
android:gravity="center_vertical"
android:layout_marginLeft="@dimen/dp_32"
android:text="@string/choose_location_search"
android:drawableLeft="@mipmap/icon_navi_location"
android:layout_height="@dimen/dp_120"/>
<androidx.constraintlayout.widget.Group
android:id="@+id/group_set_address"
app:constraint_referenced_ids="tv_navi_choose_point,tv_navi_my_location"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="@dimen/dp_266"
android:text="@string/set_as_home_navi"
android:layout_marginRight="@dimen/dp_8"
android:gravity="center"
android:id="@+id/tv_set_as_home"
android:textColor="@color/white"
android:visibility="gone"
android:textSize="@dimen/sp_40"
android:background="@drawable/shape_round_blue_grident"
app:layout_constraintRight_toRightOf="@+id/ll_navi_search"
app:layout_constraintTop_toTopOf="@+id/ll_navi_search"
app:layout_constraintBottom_toBottomOf="@+id/ll_navi_search"
android:layout_height="@dimen/dp_104"/>
<androidx.recyclerview.widget.RecyclerView
android:layout_width="@dimen/dp_838"
android:id="@+id/rv_search_result"
android:visibility="gone"
android:paddingLeft="@dimen/dp_37"
android:paddingRight="@dimen/dp_37"
android:layout_marginTop="@dimen/dp_32"
android:background="@drawable/shape_round_gray"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/ll_navi_search"
android:layout_height="@dimen/dp_778"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:background="@drawable/selector_item_category_background"
android:layout_height="@dimen/dp_180"
>
<TextView
android:id="@+id/iv_position"
android:layout_marginLeft="@dimen/dp_32"
android:layout_width="@dimen/dp_80"
android:gravity="center"
android:text="1"
android:paddingBottom="@dimen/dp_10"
android:textColor="@color/white"
android:layout_height="@dimen/dp_80"
android:textSize="@dimen/txt_normal"
android:background="@drawable/selector_item_category_result"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
<TextView
android:id="@+id/tv_position"
android:layout_width="0dp"
android:layout_height="@dimen/dp_70"
android:layout_marginLeft="@dimen/dp_30"
android:layout_marginTop="@dimen/dp_30"
android:gravity="center_vertical"
android:textColor="@color/white"
android:textSize="25sp"
app:layout_constraintLeft_toRightOf="@id/iv_position"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
<TextView
android:id="@+id/tv_position_des"
android:layout_width="0dp"
android:layout_height="@dimen/dp_42"
android:layout_marginTop="@dimen/dp_8"
android:ellipsize="marquee"
android:singleLine="true"
android:textColor="@color/white_60"
android:textSize="@dimen/sp_30"
app:layout_constraintLeft_toLeftOf="@id/tv_position"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_position"
/>
<View
android:layout_width="0dp"
android:layout_height="@dimen/dp_2"
android:layout_marginRight="@dimen/dp_32"
android:layout_marginLeft="@dimen/dp_110"
android:background="@color/white_10"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -5,6 +5,7 @@
<color name="colorAccent">#D81B60</color>
<color name="bg_gray_common_page">#ff080625</color>
<color name="white">#FFFFFF</color>
<color name="translate">#00000000</color>
<color name="white_10">#1AFFFFFF</color>
<color name="white_60">#99FFFFFF</color>
<color name="white_80">#CCFFFFFF</color>

View File

@@ -26,4 +26,9 @@
<string name="navi_prefer_day">白天</string>
<string name="navi_prefer_night">夜间</string>
<string name="navi_prefer_auto">自动</string>
<string name="my_location_search">我的位置</string>
<string name="choose_location_search">地图选点</string>
<string name="set_as_home_navi">设为家</string>
<string name="set_as_compony_navi">设为公司</string>
<string name="navi_to_there">导航去这里</string>
</resources>

View File

@@ -37,4 +37,11 @@
<item name="android:background">@drawable/selector_setting_bg</item>
</style>
<style name="txt_btn">
<item name="android:textColor">@color/white</item>
<item name="android:textSize">@dimen/txt_title</item>
<item name="android:gravity">center</item>
<item name="android:background">@drawable/shape_round_blue_grident</item>
</style>
</resources>