diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt index 168f065..2dbb3eb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt @@ -19,6 +19,10 @@ R.drawable.ic_home_map, R.drawable.ic_home_record, R.drawable.ic_home_statistics, ) val HOME_ITEMS = arrayOf("地图展示", "记录查询", "汇总统计") + val POPUP_IMAGES = arrayOf( + R.drawable.ic_menu_map, R.drawable.ic_satellite, R.drawable.ic_3d + ) + val POPUP_TITLES = arrayOf("标准地图", "卫星地图", "3D地图") //预置颜色 val COLORS = arrayOf( diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt index 168f065..2dbb3eb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt @@ -19,6 +19,10 @@ R.drawable.ic_home_map, R.drawable.ic_home_record, R.drawable.ic_home_statistics, ) val HOME_ITEMS = arrayOf("地图展示", "记录查询", "汇总统计") + val POPUP_IMAGES = arrayOf( + R.drawable.ic_menu_map, R.drawable.ic_satellite, R.drawable.ic_3d + ) + val POPUP_TITLES = arrayOf("标准地图", "卫星地图", "3D地图") //预置颜色 val COLORS = arrayOf( diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 0a6bad4..44c3049 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -19,11 +19,12 @@ import com.casic.qd.smartwell.utils.Constant import com.casic.qd.smartwell.utils.SaveKeyValues import com.casic.qd.smartwell.vm.DeviceViewModel +import com.casic.qd.smartwell.widgets.EasyPopupWindow import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.app.multilib.utils.SizeUtil import kotlinx.android.synthetic.main.activity_map.* -import kotlinx.android.synthetic.main.include_base_title.* import java.util.* import kotlin.collections.ArrayList @@ -67,6 +68,27 @@ override fun setupTopBarLayout() { leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) + easyPopupWindow.setupPopupData(Constant.POPUP_IMAGES, Constant.POPUP_TITLES) + rightOptionView.setOnClickListener { + easyPopupWindow.setOnPopupWindowClickListener(object : + EasyPopupWindow.OnPopupWindowClickListener { + override fun onPopupClick(position: Int) { + when (position) { + 0 -> aMap.mapType = AMap.MAP_TYPE_NORMAL + 1 -> aMap.mapType = AMap.MAP_TYPE_SATELLITE + 2 -> { +// navigatePageTo() + } + } + } + }) + easyPopupWindow.setBackgroundDrawable(null) + val x: Int = rightOptionView.width - easyPopupWindow.width - SizeUtil.dp2px( + this, 0f + ) + easyPopupWindow.showAsDropDown(rightOptionView, x, 0) + } } override fun initData() { @@ -124,7 +146,7 @@ override fun initEvent() { aMap = mapView.map -// aMap.mapType = AMap.MAP_TYPE_SATELLITE//卫星地图模式 + aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt index 168f065..2dbb3eb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt @@ -19,6 +19,10 @@ R.drawable.ic_home_map, R.drawable.ic_home_record, R.drawable.ic_home_statistics, ) val HOME_ITEMS = arrayOf("地图展示", "记录查询", "汇总统计") + val POPUP_IMAGES = arrayOf( + R.drawable.ic_menu_map, R.drawable.ic_satellite, R.drawable.ic_3d + ) + val POPUP_TITLES = arrayOf("标准地图", "卫星地图", "3D地图") //预置颜色 val COLORS = arrayOf( diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 0a6bad4..44c3049 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -19,11 +19,12 @@ import com.casic.qd.smartwell.utils.Constant import com.casic.qd.smartwell.utils.SaveKeyValues import com.casic.qd.smartwell.vm.DeviceViewModel +import com.casic.qd.smartwell.widgets.EasyPopupWindow import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.app.multilib.utils.SizeUtil import kotlinx.android.synthetic.main.activity_map.* -import kotlinx.android.synthetic.main.include_base_title.* import java.util.* import kotlin.collections.ArrayList @@ -67,6 +68,27 @@ override fun setupTopBarLayout() { leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) + easyPopupWindow.setupPopupData(Constant.POPUP_IMAGES, Constant.POPUP_TITLES) + rightOptionView.setOnClickListener { + easyPopupWindow.setOnPopupWindowClickListener(object : + EasyPopupWindow.OnPopupWindowClickListener { + override fun onPopupClick(position: Int) { + when (position) { + 0 -> aMap.mapType = AMap.MAP_TYPE_NORMAL + 1 -> aMap.mapType = AMap.MAP_TYPE_SATELLITE + 2 -> { +// navigatePageTo() + } + } + } + }) + easyPopupWindow.setBackgroundDrawable(null) + val x: Int = rightOptionView.width - easyPopupWindow.width - SizeUtil.dp2px( + this, 0f + ) + easyPopupWindow.showAsDropDown(rightOptionView, x, 0) + } } override fun initData() { @@ -124,7 +146,7 @@ override fun initEvent() { aMap = mapView.map -// aMap.mapType = AMap.MAP_TYPE_SATELLITE//卫星地图模式 + aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt new file mode 100644 index 0000000..392d893 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt @@ -0,0 +1,106 @@ +package com.casic.qd.smartwell.widgets + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.* +import com.casic.qd.smartwell.R +import com.pengxh.app.multilib.utils.SizeUtil + +/** + * @description: 顶部下拉菜单 + * @author: Pengxh + * @email: 290677893@qq.com + * @date: 2019/12/28 20:35 + */ +class EasyPopupWindow(private val context: Context) : PopupWindow(context) { + + private var clickListener: OnPopupWindowClickListener? = null + private var imageList: Array? = null + private var nameList: Array? = null + + init { + width = (SizeUtil.getScreenWidth(context) * 0.3).toInt() + height = ViewGroup.LayoutParams.WRAP_CONTENT + isOutsideTouchable = true + isFocusable = true + animationStyle = R.style.PopupAnimation + contentView = LayoutInflater.from(context).inflate(R.layout.popup_option, null, false) + } + + fun setupPopupData(imageList: Array?, stringList: Array?) { + this.imageList = imageList + this.nameList = stringList + val popupListView = contentView.findViewById(R.id.popupListView) + setupListView(popupListView) + } + + //给PopupWindow列表绑定数据 + private fun setupListView(popupListView: ListView) { + val adapter = PopupAdapter(context, imageList!!, nameList!!) + popupListView.adapter = adapter + popupListView.onItemClickListener = + AdapterView.OnItemClickListener { _, _, i, _ -> + if (clickListener != null) { + clickListener!!.onPopupClick(i) + } + dismiss() + } + } + + interface OnPopupWindowClickListener { + fun onPopupClick(position: Int) + } + + fun setOnPopupWindowClickListener(windowClickListener: OnPopupWindowClickListener?) { + clickListener = windowClickListener + } + + inner class PopupAdapter( + mContext: Context?, + private val imageList: Array, + private val nameList: Array + ) : BaseAdapter() { + + private val inflater: LayoutInflater = LayoutInflater.from(mContext) + + override fun getCount(): Int { + return nameList.size + } + + override fun getItem(position: Int): Any { + return nameList[position] + } + + override fun getItemId(position: Int): Long { + return position.toLong() + } + + override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { + var view = convertView + val holder: PopupWindowHolder + if (view == null) { + view = inflater.inflate(R.layout.item_map_popup, null) + holder = PopupWindowHolder() + holder.popupImageView = view.findViewById(R.id.popupImageView) + holder.popupTitleView = view.findViewById(R.id.popupTitleView) + view.tag = holder + } else { + holder = view.tag as PopupWindowHolder + } + holder.bindData(imageList[position], nameList[position]) + return view!! + } + } + + inner class PopupWindowHolder { + lateinit var popupImageView: ImageView + lateinit var popupTitleView: TextView + + fun bindData(resId: Int, s: String?) { + popupImageView.setBackgroundResource(resId) + popupTitleView.text = s + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt index 168f065..2dbb3eb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt @@ -19,6 +19,10 @@ R.drawable.ic_home_map, R.drawable.ic_home_record, R.drawable.ic_home_statistics, ) val HOME_ITEMS = arrayOf("地图展示", "记录查询", "汇总统计") + val POPUP_IMAGES = arrayOf( + R.drawable.ic_menu_map, R.drawable.ic_satellite, R.drawable.ic_3d + ) + val POPUP_TITLES = arrayOf("标准地图", "卫星地图", "3D地图") //预置颜色 val COLORS = arrayOf( diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 0a6bad4..44c3049 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -19,11 +19,12 @@ import com.casic.qd.smartwell.utils.Constant import com.casic.qd.smartwell.utils.SaveKeyValues import com.casic.qd.smartwell.vm.DeviceViewModel +import com.casic.qd.smartwell.widgets.EasyPopupWindow import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.app.multilib.utils.SizeUtil import kotlinx.android.synthetic.main.activity_map.* -import kotlinx.android.synthetic.main.include_base_title.* import java.util.* import kotlin.collections.ArrayList @@ -67,6 +68,27 @@ override fun setupTopBarLayout() { leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) + easyPopupWindow.setupPopupData(Constant.POPUP_IMAGES, Constant.POPUP_TITLES) + rightOptionView.setOnClickListener { + easyPopupWindow.setOnPopupWindowClickListener(object : + EasyPopupWindow.OnPopupWindowClickListener { + override fun onPopupClick(position: Int) { + when (position) { + 0 -> aMap.mapType = AMap.MAP_TYPE_NORMAL + 1 -> aMap.mapType = AMap.MAP_TYPE_SATELLITE + 2 -> { +// navigatePageTo() + } + } + } + }) + easyPopupWindow.setBackgroundDrawable(null) + val x: Int = rightOptionView.width - easyPopupWindow.width - SizeUtil.dp2px( + this, 0f + ) + easyPopupWindow.showAsDropDown(rightOptionView, x, 0) + } } override fun initData() { @@ -124,7 +146,7 @@ override fun initEvent() { aMap = mapView.map -// aMap.mapType = AMap.MAP_TYPE_SATELLITE//卫星地图模式 + aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt new file mode 100644 index 0000000..392d893 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt @@ -0,0 +1,106 @@ +package com.casic.qd.smartwell.widgets + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.* +import com.casic.qd.smartwell.R +import com.pengxh.app.multilib.utils.SizeUtil + +/** + * @description: 顶部下拉菜单 + * @author: Pengxh + * @email: 290677893@qq.com + * @date: 2019/12/28 20:35 + */ +class EasyPopupWindow(private val context: Context) : PopupWindow(context) { + + private var clickListener: OnPopupWindowClickListener? = null + private var imageList: Array? = null + private var nameList: Array? = null + + init { + width = (SizeUtil.getScreenWidth(context) * 0.3).toInt() + height = ViewGroup.LayoutParams.WRAP_CONTENT + isOutsideTouchable = true + isFocusable = true + animationStyle = R.style.PopupAnimation + contentView = LayoutInflater.from(context).inflate(R.layout.popup_option, null, false) + } + + fun setupPopupData(imageList: Array?, stringList: Array?) { + this.imageList = imageList + this.nameList = stringList + val popupListView = contentView.findViewById(R.id.popupListView) + setupListView(popupListView) + } + + //给PopupWindow列表绑定数据 + private fun setupListView(popupListView: ListView) { + val adapter = PopupAdapter(context, imageList!!, nameList!!) + popupListView.adapter = adapter + popupListView.onItemClickListener = + AdapterView.OnItemClickListener { _, _, i, _ -> + if (clickListener != null) { + clickListener!!.onPopupClick(i) + } + dismiss() + } + } + + interface OnPopupWindowClickListener { + fun onPopupClick(position: Int) + } + + fun setOnPopupWindowClickListener(windowClickListener: OnPopupWindowClickListener?) { + clickListener = windowClickListener + } + + inner class PopupAdapter( + mContext: Context?, + private val imageList: Array, + private val nameList: Array + ) : BaseAdapter() { + + private val inflater: LayoutInflater = LayoutInflater.from(mContext) + + override fun getCount(): Int { + return nameList.size + } + + override fun getItem(position: Int): Any { + return nameList[position] + } + + override fun getItemId(position: Int): Long { + return position.toLong() + } + + override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { + var view = convertView + val holder: PopupWindowHolder + if (view == null) { + view = inflater.inflate(R.layout.item_map_popup, null) + holder = PopupWindowHolder() + holder.popupImageView = view.findViewById(R.id.popupImageView) + holder.popupTitleView = view.findViewById(R.id.popupTitleView) + view.tag = holder + } else { + holder = view.tag as PopupWindowHolder + } + holder.bindData(imageList[position], nameList[position]) + return view!! + } + } + + inner class PopupWindowHolder { + lateinit var popupImageView: ImageView + lateinit var popupTitleView: TextView + + fun bindData(resId: Int, s: String?) { + popupImageView.setBackgroundResource(resId) + popupTitleView.text = s + } + } +} \ No newline at end of file diff --git a/app/src/main/res/anim/popup_hide.xml b/app/src/main/res/anim/popup_hide.xml new file mode 100644 index 0000000..55c7aca --- /dev/null +++ b/app/src/main/res/anim/popup_hide.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt index 168f065..2dbb3eb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt @@ -19,6 +19,10 @@ R.drawable.ic_home_map, R.drawable.ic_home_record, R.drawable.ic_home_statistics, ) val HOME_ITEMS = arrayOf("地图展示", "记录查询", "汇总统计") + val POPUP_IMAGES = arrayOf( + R.drawable.ic_menu_map, R.drawable.ic_satellite, R.drawable.ic_3d + ) + val POPUP_TITLES = arrayOf("标准地图", "卫星地图", "3D地图") //预置颜色 val COLORS = arrayOf( diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 0a6bad4..44c3049 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -19,11 +19,12 @@ import com.casic.qd.smartwell.utils.Constant import com.casic.qd.smartwell.utils.SaveKeyValues import com.casic.qd.smartwell.vm.DeviceViewModel +import com.casic.qd.smartwell.widgets.EasyPopupWindow import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.app.multilib.utils.SizeUtil import kotlinx.android.synthetic.main.activity_map.* -import kotlinx.android.synthetic.main.include_base_title.* import java.util.* import kotlin.collections.ArrayList @@ -67,6 +68,27 @@ override fun setupTopBarLayout() { leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) + easyPopupWindow.setupPopupData(Constant.POPUP_IMAGES, Constant.POPUP_TITLES) + rightOptionView.setOnClickListener { + easyPopupWindow.setOnPopupWindowClickListener(object : + EasyPopupWindow.OnPopupWindowClickListener { + override fun onPopupClick(position: Int) { + when (position) { + 0 -> aMap.mapType = AMap.MAP_TYPE_NORMAL + 1 -> aMap.mapType = AMap.MAP_TYPE_SATELLITE + 2 -> { +// navigatePageTo() + } + } + } + }) + easyPopupWindow.setBackgroundDrawable(null) + val x: Int = rightOptionView.width - easyPopupWindow.width - SizeUtil.dp2px( + this, 0f + ) + easyPopupWindow.showAsDropDown(rightOptionView, x, 0) + } } override fun initData() { @@ -124,7 +146,7 @@ override fun initEvent() { aMap = mapView.map -// aMap.mapType = AMap.MAP_TYPE_SATELLITE//卫星地图模式 + aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt new file mode 100644 index 0000000..392d893 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt @@ -0,0 +1,106 @@ +package com.casic.qd.smartwell.widgets + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.* +import com.casic.qd.smartwell.R +import com.pengxh.app.multilib.utils.SizeUtil + +/** + * @description: 顶部下拉菜单 + * @author: Pengxh + * @email: 290677893@qq.com + * @date: 2019/12/28 20:35 + */ +class EasyPopupWindow(private val context: Context) : PopupWindow(context) { + + private var clickListener: OnPopupWindowClickListener? = null + private var imageList: Array? = null + private var nameList: Array? = null + + init { + width = (SizeUtil.getScreenWidth(context) * 0.3).toInt() + height = ViewGroup.LayoutParams.WRAP_CONTENT + isOutsideTouchable = true + isFocusable = true + animationStyle = R.style.PopupAnimation + contentView = LayoutInflater.from(context).inflate(R.layout.popup_option, null, false) + } + + fun setupPopupData(imageList: Array?, stringList: Array?) { + this.imageList = imageList + this.nameList = stringList + val popupListView = contentView.findViewById(R.id.popupListView) + setupListView(popupListView) + } + + //给PopupWindow列表绑定数据 + private fun setupListView(popupListView: ListView) { + val adapter = PopupAdapter(context, imageList!!, nameList!!) + popupListView.adapter = adapter + popupListView.onItemClickListener = + AdapterView.OnItemClickListener { _, _, i, _ -> + if (clickListener != null) { + clickListener!!.onPopupClick(i) + } + dismiss() + } + } + + interface OnPopupWindowClickListener { + fun onPopupClick(position: Int) + } + + fun setOnPopupWindowClickListener(windowClickListener: OnPopupWindowClickListener?) { + clickListener = windowClickListener + } + + inner class PopupAdapter( + mContext: Context?, + private val imageList: Array, + private val nameList: Array + ) : BaseAdapter() { + + private val inflater: LayoutInflater = LayoutInflater.from(mContext) + + override fun getCount(): Int { + return nameList.size + } + + override fun getItem(position: Int): Any { + return nameList[position] + } + + override fun getItemId(position: Int): Long { + return position.toLong() + } + + override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { + var view = convertView + val holder: PopupWindowHolder + if (view == null) { + view = inflater.inflate(R.layout.item_map_popup, null) + holder = PopupWindowHolder() + holder.popupImageView = view.findViewById(R.id.popupImageView) + holder.popupTitleView = view.findViewById(R.id.popupTitleView) + view.tag = holder + } else { + holder = view.tag as PopupWindowHolder + } + holder.bindData(imageList[position], nameList[position]) + return view!! + } + } + + inner class PopupWindowHolder { + lateinit var popupImageView: ImageView + lateinit var popupTitleView: TextView + + fun bindData(resId: Int, s: String?) { + popupImageView.setBackgroundResource(resId) + popupTitleView.text = s + } + } +} \ No newline at end of file diff --git a/app/src/main/res/anim/popup_hide.xml b/app/src/main/res/anim/popup_hide.xml new file mode 100644 index 0000000..55c7aca --- /dev/null +++ b/app/src/main/res/anim/popup_hide.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/popup_show.xml b/app/src/main/res/anim/popup_show.xml new file mode 100644 index 0000000..8e1791e --- /dev/null +++ b/app/src/main/res/anim/popup_show.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt index 168f065..2dbb3eb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt @@ -19,6 +19,10 @@ R.drawable.ic_home_map, R.drawable.ic_home_record, R.drawable.ic_home_statistics, ) val HOME_ITEMS = arrayOf("地图展示", "记录查询", "汇总统计") + val POPUP_IMAGES = arrayOf( + R.drawable.ic_menu_map, R.drawable.ic_satellite, R.drawable.ic_3d + ) + val POPUP_TITLES = arrayOf("标准地图", "卫星地图", "3D地图") //预置颜色 val COLORS = arrayOf( diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 0a6bad4..44c3049 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -19,11 +19,12 @@ import com.casic.qd.smartwell.utils.Constant import com.casic.qd.smartwell.utils.SaveKeyValues import com.casic.qd.smartwell.vm.DeviceViewModel +import com.casic.qd.smartwell.widgets.EasyPopupWindow import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.app.multilib.utils.SizeUtil import kotlinx.android.synthetic.main.activity_map.* -import kotlinx.android.synthetic.main.include_base_title.* import java.util.* import kotlin.collections.ArrayList @@ -67,6 +68,27 @@ override fun setupTopBarLayout() { leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) + easyPopupWindow.setupPopupData(Constant.POPUP_IMAGES, Constant.POPUP_TITLES) + rightOptionView.setOnClickListener { + easyPopupWindow.setOnPopupWindowClickListener(object : + EasyPopupWindow.OnPopupWindowClickListener { + override fun onPopupClick(position: Int) { + when (position) { + 0 -> aMap.mapType = AMap.MAP_TYPE_NORMAL + 1 -> aMap.mapType = AMap.MAP_TYPE_SATELLITE + 2 -> { +// navigatePageTo() + } + } + } + }) + easyPopupWindow.setBackgroundDrawable(null) + val x: Int = rightOptionView.width - easyPopupWindow.width - SizeUtil.dp2px( + this, 0f + ) + easyPopupWindow.showAsDropDown(rightOptionView, x, 0) + } } override fun initData() { @@ -124,7 +146,7 @@ override fun initEvent() { aMap = mapView.map -// aMap.mapType = AMap.MAP_TYPE_SATELLITE//卫星地图模式 + aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt new file mode 100644 index 0000000..392d893 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt @@ -0,0 +1,106 @@ +package com.casic.qd.smartwell.widgets + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.* +import com.casic.qd.smartwell.R +import com.pengxh.app.multilib.utils.SizeUtil + +/** + * @description: 顶部下拉菜单 + * @author: Pengxh + * @email: 290677893@qq.com + * @date: 2019/12/28 20:35 + */ +class EasyPopupWindow(private val context: Context) : PopupWindow(context) { + + private var clickListener: OnPopupWindowClickListener? = null + private var imageList: Array? = null + private var nameList: Array? = null + + init { + width = (SizeUtil.getScreenWidth(context) * 0.3).toInt() + height = ViewGroup.LayoutParams.WRAP_CONTENT + isOutsideTouchable = true + isFocusable = true + animationStyle = R.style.PopupAnimation + contentView = LayoutInflater.from(context).inflate(R.layout.popup_option, null, false) + } + + fun setupPopupData(imageList: Array?, stringList: Array?) { + this.imageList = imageList + this.nameList = stringList + val popupListView = contentView.findViewById(R.id.popupListView) + setupListView(popupListView) + } + + //给PopupWindow列表绑定数据 + private fun setupListView(popupListView: ListView) { + val adapter = PopupAdapter(context, imageList!!, nameList!!) + popupListView.adapter = adapter + popupListView.onItemClickListener = + AdapterView.OnItemClickListener { _, _, i, _ -> + if (clickListener != null) { + clickListener!!.onPopupClick(i) + } + dismiss() + } + } + + interface OnPopupWindowClickListener { + fun onPopupClick(position: Int) + } + + fun setOnPopupWindowClickListener(windowClickListener: OnPopupWindowClickListener?) { + clickListener = windowClickListener + } + + inner class PopupAdapter( + mContext: Context?, + private val imageList: Array, + private val nameList: Array + ) : BaseAdapter() { + + private val inflater: LayoutInflater = LayoutInflater.from(mContext) + + override fun getCount(): Int { + return nameList.size + } + + override fun getItem(position: Int): Any { + return nameList[position] + } + + override fun getItemId(position: Int): Long { + return position.toLong() + } + + override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { + var view = convertView + val holder: PopupWindowHolder + if (view == null) { + view = inflater.inflate(R.layout.item_map_popup, null) + holder = PopupWindowHolder() + holder.popupImageView = view.findViewById(R.id.popupImageView) + holder.popupTitleView = view.findViewById(R.id.popupTitleView) + view.tag = holder + } else { + holder = view.tag as PopupWindowHolder + } + holder.bindData(imageList[position], nameList[position]) + return view!! + } + } + + inner class PopupWindowHolder { + lateinit var popupImageView: ImageView + lateinit var popupTitleView: TextView + + fun bindData(resId: Int, s: String?) { + popupImageView.setBackgroundResource(resId) + popupTitleView.text = s + } + } +} \ No newline at end of file diff --git a/app/src/main/res/anim/popup_hide.xml b/app/src/main/res/anim/popup_hide.xml new file mode 100644 index 0000000..55c7aca --- /dev/null +++ b/app/src/main/res/anim/popup_hide.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/popup_show.xml b/app/src/main/res/anim/popup_show.xml new file mode 100644 index 0000000..8e1791e --- /dev/null +++ b/app/src/main/res/anim/popup_show.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_3d.xml b/app/src/main/res/drawable/ic_3d.xml new file mode 100644 index 0000000..507445b --- /dev/null +++ b/app/src/main/res/drawable/ic_3d.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt index 168f065..2dbb3eb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt @@ -19,6 +19,10 @@ R.drawable.ic_home_map, R.drawable.ic_home_record, R.drawable.ic_home_statistics, ) val HOME_ITEMS = arrayOf("地图展示", "记录查询", "汇总统计") + val POPUP_IMAGES = arrayOf( + R.drawable.ic_menu_map, R.drawable.ic_satellite, R.drawable.ic_3d + ) + val POPUP_TITLES = arrayOf("标准地图", "卫星地图", "3D地图") //预置颜色 val COLORS = arrayOf( diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 0a6bad4..44c3049 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -19,11 +19,12 @@ import com.casic.qd.smartwell.utils.Constant import com.casic.qd.smartwell.utils.SaveKeyValues import com.casic.qd.smartwell.vm.DeviceViewModel +import com.casic.qd.smartwell.widgets.EasyPopupWindow import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.app.multilib.utils.SizeUtil import kotlinx.android.synthetic.main.activity_map.* -import kotlinx.android.synthetic.main.include_base_title.* import java.util.* import kotlin.collections.ArrayList @@ -67,6 +68,27 @@ override fun setupTopBarLayout() { leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) + easyPopupWindow.setupPopupData(Constant.POPUP_IMAGES, Constant.POPUP_TITLES) + rightOptionView.setOnClickListener { + easyPopupWindow.setOnPopupWindowClickListener(object : + EasyPopupWindow.OnPopupWindowClickListener { + override fun onPopupClick(position: Int) { + when (position) { + 0 -> aMap.mapType = AMap.MAP_TYPE_NORMAL + 1 -> aMap.mapType = AMap.MAP_TYPE_SATELLITE + 2 -> { +// navigatePageTo() + } + } + } + }) + easyPopupWindow.setBackgroundDrawable(null) + val x: Int = rightOptionView.width - easyPopupWindow.width - SizeUtil.dp2px( + this, 0f + ) + easyPopupWindow.showAsDropDown(rightOptionView, x, 0) + } } override fun initData() { @@ -124,7 +146,7 @@ override fun initEvent() { aMap = mapView.map -// aMap.mapType = AMap.MAP_TYPE_SATELLITE//卫星地图模式 + aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt new file mode 100644 index 0000000..392d893 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt @@ -0,0 +1,106 @@ +package com.casic.qd.smartwell.widgets + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.* +import com.casic.qd.smartwell.R +import com.pengxh.app.multilib.utils.SizeUtil + +/** + * @description: 顶部下拉菜单 + * @author: Pengxh + * @email: 290677893@qq.com + * @date: 2019/12/28 20:35 + */ +class EasyPopupWindow(private val context: Context) : PopupWindow(context) { + + private var clickListener: OnPopupWindowClickListener? = null + private var imageList: Array? = null + private var nameList: Array? = null + + init { + width = (SizeUtil.getScreenWidth(context) * 0.3).toInt() + height = ViewGroup.LayoutParams.WRAP_CONTENT + isOutsideTouchable = true + isFocusable = true + animationStyle = R.style.PopupAnimation + contentView = LayoutInflater.from(context).inflate(R.layout.popup_option, null, false) + } + + fun setupPopupData(imageList: Array?, stringList: Array?) { + this.imageList = imageList + this.nameList = stringList + val popupListView = contentView.findViewById(R.id.popupListView) + setupListView(popupListView) + } + + //给PopupWindow列表绑定数据 + private fun setupListView(popupListView: ListView) { + val adapter = PopupAdapter(context, imageList!!, nameList!!) + popupListView.adapter = adapter + popupListView.onItemClickListener = + AdapterView.OnItemClickListener { _, _, i, _ -> + if (clickListener != null) { + clickListener!!.onPopupClick(i) + } + dismiss() + } + } + + interface OnPopupWindowClickListener { + fun onPopupClick(position: Int) + } + + fun setOnPopupWindowClickListener(windowClickListener: OnPopupWindowClickListener?) { + clickListener = windowClickListener + } + + inner class PopupAdapter( + mContext: Context?, + private val imageList: Array, + private val nameList: Array + ) : BaseAdapter() { + + private val inflater: LayoutInflater = LayoutInflater.from(mContext) + + override fun getCount(): Int { + return nameList.size + } + + override fun getItem(position: Int): Any { + return nameList[position] + } + + override fun getItemId(position: Int): Long { + return position.toLong() + } + + override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { + var view = convertView + val holder: PopupWindowHolder + if (view == null) { + view = inflater.inflate(R.layout.item_map_popup, null) + holder = PopupWindowHolder() + holder.popupImageView = view.findViewById(R.id.popupImageView) + holder.popupTitleView = view.findViewById(R.id.popupTitleView) + view.tag = holder + } else { + holder = view.tag as PopupWindowHolder + } + holder.bindData(imageList[position], nameList[position]) + return view!! + } + } + + inner class PopupWindowHolder { + lateinit var popupImageView: ImageView + lateinit var popupTitleView: TextView + + fun bindData(resId: Int, s: String?) { + popupImageView.setBackgroundResource(resId) + popupTitleView.text = s + } + } +} \ No newline at end of file diff --git a/app/src/main/res/anim/popup_hide.xml b/app/src/main/res/anim/popup_hide.xml new file mode 100644 index 0000000..55c7aca --- /dev/null +++ b/app/src/main/res/anim/popup_hide.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/popup_show.xml b/app/src/main/res/anim/popup_show.xml new file mode 100644 index 0000000..8e1791e --- /dev/null +++ b/app/src/main/res/anim/popup_show.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_3d.xml b/app/src/main/res/drawable/ic_3d.xml new file mode 100644 index 0000000..507445b --- /dev/null +++ b/app/src/main/res/drawable/ic_3d.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_change_map.xml b/app/src/main/res/drawable/ic_change_map.xml new file mode 100644 index 0000000..d9172fe --- /dev/null +++ b/app/src/main/res/drawable/ic_change_map.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt index 168f065..2dbb3eb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt @@ -19,6 +19,10 @@ R.drawable.ic_home_map, R.drawable.ic_home_record, R.drawable.ic_home_statistics, ) val HOME_ITEMS = arrayOf("地图展示", "记录查询", "汇总统计") + val POPUP_IMAGES = arrayOf( + R.drawable.ic_menu_map, R.drawable.ic_satellite, R.drawable.ic_3d + ) + val POPUP_TITLES = arrayOf("标准地图", "卫星地图", "3D地图") //预置颜色 val COLORS = arrayOf( diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 0a6bad4..44c3049 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -19,11 +19,12 @@ import com.casic.qd.smartwell.utils.Constant import com.casic.qd.smartwell.utils.SaveKeyValues import com.casic.qd.smartwell.vm.DeviceViewModel +import com.casic.qd.smartwell.widgets.EasyPopupWindow import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.app.multilib.utils.SizeUtil import kotlinx.android.synthetic.main.activity_map.* -import kotlinx.android.synthetic.main.include_base_title.* import java.util.* import kotlin.collections.ArrayList @@ -67,6 +68,27 @@ override fun setupTopBarLayout() { leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) + easyPopupWindow.setupPopupData(Constant.POPUP_IMAGES, Constant.POPUP_TITLES) + rightOptionView.setOnClickListener { + easyPopupWindow.setOnPopupWindowClickListener(object : + EasyPopupWindow.OnPopupWindowClickListener { + override fun onPopupClick(position: Int) { + when (position) { + 0 -> aMap.mapType = AMap.MAP_TYPE_NORMAL + 1 -> aMap.mapType = AMap.MAP_TYPE_SATELLITE + 2 -> { +// navigatePageTo() + } + } + } + }) + easyPopupWindow.setBackgroundDrawable(null) + val x: Int = rightOptionView.width - easyPopupWindow.width - SizeUtil.dp2px( + this, 0f + ) + easyPopupWindow.showAsDropDown(rightOptionView, x, 0) + } } override fun initData() { @@ -124,7 +146,7 @@ override fun initEvent() { aMap = mapView.map -// aMap.mapType = AMap.MAP_TYPE_SATELLITE//卫星地图模式 + aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt new file mode 100644 index 0000000..392d893 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt @@ -0,0 +1,106 @@ +package com.casic.qd.smartwell.widgets + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.* +import com.casic.qd.smartwell.R +import com.pengxh.app.multilib.utils.SizeUtil + +/** + * @description: 顶部下拉菜单 + * @author: Pengxh + * @email: 290677893@qq.com + * @date: 2019/12/28 20:35 + */ +class EasyPopupWindow(private val context: Context) : PopupWindow(context) { + + private var clickListener: OnPopupWindowClickListener? = null + private var imageList: Array? = null + private var nameList: Array? = null + + init { + width = (SizeUtil.getScreenWidth(context) * 0.3).toInt() + height = ViewGroup.LayoutParams.WRAP_CONTENT + isOutsideTouchable = true + isFocusable = true + animationStyle = R.style.PopupAnimation + contentView = LayoutInflater.from(context).inflate(R.layout.popup_option, null, false) + } + + fun setupPopupData(imageList: Array?, stringList: Array?) { + this.imageList = imageList + this.nameList = stringList + val popupListView = contentView.findViewById(R.id.popupListView) + setupListView(popupListView) + } + + //给PopupWindow列表绑定数据 + private fun setupListView(popupListView: ListView) { + val adapter = PopupAdapter(context, imageList!!, nameList!!) + popupListView.adapter = adapter + popupListView.onItemClickListener = + AdapterView.OnItemClickListener { _, _, i, _ -> + if (clickListener != null) { + clickListener!!.onPopupClick(i) + } + dismiss() + } + } + + interface OnPopupWindowClickListener { + fun onPopupClick(position: Int) + } + + fun setOnPopupWindowClickListener(windowClickListener: OnPopupWindowClickListener?) { + clickListener = windowClickListener + } + + inner class PopupAdapter( + mContext: Context?, + private val imageList: Array, + private val nameList: Array + ) : BaseAdapter() { + + private val inflater: LayoutInflater = LayoutInflater.from(mContext) + + override fun getCount(): Int { + return nameList.size + } + + override fun getItem(position: Int): Any { + return nameList[position] + } + + override fun getItemId(position: Int): Long { + return position.toLong() + } + + override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { + var view = convertView + val holder: PopupWindowHolder + if (view == null) { + view = inflater.inflate(R.layout.item_map_popup, null) + holder = PopupWindowHolder() + holder.popupImageView = view.findViewById(R.id.popupImageView) + holder.popupTitleView = view.findViewById(R.id.popupTitleView) + view.tag = holder + } else { + holder = view.tag as PopupWindowHolder + } + holder.bindData(imageList[position], nameList[position]) + return view!! + } + } + + inner class PopupWindowHolder { + lateinit var popupImageView: ImageView + lateinit var popupTitleView: TextView + + fun bindData(resId: Int, s: String?) { + popupImageView.setBackgroundResource(resId) + popupTitleView.text = s + } + } +} \ No newline at end of file diff --git a/app/src/main/res/anim/popup_hide.xml b/app/src/main/res/anim/popup_hide.xml new file mode 100644 index 0000000..55c7aca --- /dev/null +++ b/app/src/main/res/anim/popup_hide.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/popup_show.xml b/app/src/main/res/anim/popup_show.xml new file mode 100644 index 0000000..8e1791e --- /dev/null +++ b/app/src/main/res/anim/popup_show.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_3d.xml b/app/src/main/res/drawable/ic_3d.xml new file mode 100644 index 0000000..507445b --- /dev/null +++ b/app/src/main/res/drawable/ic_3d.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_change_map.xml b/app/src/main/res/drawable/ic_change_map.xml new file mode 100644 index 0000000..d9172fe --- /dev/null +++ b/app/src/main/res/drawable/ic_change_map.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_map.xml b/app/src/main/res/drawable/ic_menu_map.xml new file mode 100644 index 0000000..85ab880 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_map.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt index 168f065..2dbb3eb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt @@ -19,6 +19,10 @@ R.drawable.ic_home_map, R.drawable.ic_home_record, R.drawable.ic_home_statistics, ) val HOME_ITEMS = arrayOf("地图展示", "记录查询", "汇总统计") + val POPUP_IMAGES = arrayOf( + R.drawable.ic_menu_map, R.drawable.ic_satellite, R.drawable.ic_3d + ) + val POPUP_TITLES = arrayOf("标准地图", "卫星地图", "3D地图") //预置颜色 val COLORS = arrayOf( diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 0a6bad4..44c3049 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -19,11 +19,12 @@ import com.casic.qd.smartwell.utils.Constant import com.casic.qd.smartwell.utils.SaveKeyValues import com.casic.qd.smartwell.vm.DeviceViewModel +import com.casic.qd.smartwell.widgets.EasyPopupWindow import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.app.multilib.utils.SizeUtil import kotlinx.android.synthetic.main.activity_map.* -import kotlinx.android.synthetic.main.include_base_title.* import java.util.* import kotlin.collections.ArrayList @@ -67,6 +68,27 @@ override fun setupTopBarLayout() { leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) + easyPopupWindow.setupPopupData(Constant.POPUP_IMAGES, Constant.POPUP_TITLES) + rightOptionView.setOnClickListener { + easyPopupWindow.setOnPopupWindowClickListener(object : + EasyPopupWindow.OnPopupWindowClickListener { + override fun onPopupClick(position: Int) { + when (position) { + 0 -> aMap.mapType = AMap.MAP_TYPE_NORMAL + 1 -> aMap.mapType = AMap.MAP_TYPE_SATELLITE + 2 -> { +// navigatePageTo() + } + } + } + }) + easyPopupWindow.setBackgroundDrawable(null) + val x: Int = rightOptionView.width - easyPopupWindow.width - SizeUtil.dp2px( + this, 0f + ) + easyPopupWindow.showAsDropDown(rightOptionView, x, 0) + } } override fun initData() { @@ -124,7 +146,7 @@ override fun initEvent() { aMap = mapView.map -// aMap.mapType = AMap.MAP_TYPE_SATELLITE//卫星地图模式 + aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt new file mode 100644 index 0000000..392d893 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt @@ -0,0 +1,106 @@ +package com.casic.qd.smartwell.widgets + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.* +import com.casic.qd.smartwell.R +import com.pengxh.app.multilib.utils.SizeUtil + +/** + * @description: 顶部下拉菜单 + * @author: Pengxh + * @email: 290677893@qq.com + * @date: 2019/12/28 20:35 + */ +class EasyPopupWindow(private val context: Context) : PopupWindow(context) { + + private var clickListener: OnPopupWindowClickListener? = null + private var imageList: Array? = null + private var nameList: Array? = null + + init { + width = (SizeUtil.getScreenWidth(context) * 0.3).toInt() + height = ViewGroup.LayoutParams.WRAP_CONTENT + isOutsideTouchable = true + isFocusable = true + animationStyle = R.style.PopupAnimation + contentView = LayoutInflater.from(context).inflate(R.layout.popup_option, null, false) + } + + fun setupPopupData(imageList: Array?, stringList: Array?) { + this.imageList = imageList + this.nameList = stringList + val popupListView = contentView.findViewById(R.id.popupListView) + setupListView(popupListView) + } + + //给PopupWindow列表绑定数据 + private fun setupListView(popupListView: ListView) { + val adapter = PopupAdapter(context, imageList!!, nameList!!) + popupListView.adapter = adapter + popupListView.onItemClickListener = + AdapterView.OnItemClickListener { _, _, i, _ -> + if (clickListener != null) { + clickListener!!.onPopupClick(i) + } + dismiss() + } + } + + interface OnPopupWindowClickListener { + fun onPopupClick(position: Int) + } + + fun setOnPopupWindowClickListener(windowClickListener: OnPopupWindowClickListener?) { + clickListener = windowClickListener + } + + inner class PopupAdapter( + mContext: Context?, + private val imageList: Array, + private val nameList: Array + ) : BaseAdapter() { + + private val inflater: LayoutInflater = LayoutInflater.from(mContext) + + override fun getCount(): Int { + return nameList.size + } + + override fun getItem(position: Int): Any { + return nameList[position] + } + + override fun getItemId(position: Int): Long { + return position.toLong() + } + + override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { + var view = convertView + val holder: PopupWindowHolder + if (view == null) { + view = inflater.inflate(R.layout.item_map_popup, null) + holder = PopupWindowHolder() + holder.popupImageView = view.findViewById(R.id.popupImageView) + holder.popupTitleView = view.findViewById(R.id.popupTitleView) + view.tag = holder + } else { + holder = view.tag as PopupWindowHolder + } + holder.bindData(imageList[position], nameList[position]) + return view!! + } + } + + inner class PopupWindowHolder { + lateinit var popupImageView: ImageView + lateinit var popupTitleView: TextView + + fun bindData(resId: Int, s: String?) { + popupImageView.setBackgroundResource(resId) + popupTitleView.text = s + } + } +} \ No newline at end of file diff --git a/app/src/main/res/anim/popup_hide.xml b/app/src/main/res/anim/popup_hide.xml new file mode 100644 index 0000000..55c7aca --- /dev/null +++ b/app/src/main/res/anim/popup_hide.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/popup_show.xml b/app/src/main/res/anim/popup_show.xml new file mode 100644 index 0000000..8e1791e --- /dev/null +++ b/app/src/main/res/anim/popup_show.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_3d.xml b/app/src/main/res/drawable/ic_3d.xml new file mode 100644 index 0000000..507445b --- /dev/null +++ b/app/src/main/res/drawable/ic_3d.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_change_map.xml b/app/src/main/res/drawable/ic_change_map.xml new file mode 100644 index 0000000..d9172fe --- /dev/null +++ b/app/src/main/res/drawable/ic_change_map.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_map.xml b/app/src/main/res/drawable/ic_menu_map.xml new file mode 100644 index 0000000..85ab880 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_map.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_satellite.xml b/app/src/main/res/drawable/ic_satellite.xml new file mode 100644 index 0000000..9116ac8 --- /dev/null +++ b/app/src/main/res/drawable/ic_satellite.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt index 168f065..2dbb3eb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt @@ -19,6 +19,10 @@ R.drawable.ic_home_map, R.drawable.ic_home_record, R.drawable.ic_home_statistics, ) val HOME_ITEMS = arrayOf("地图展示", "记录查询", "汇总统计") + val POPUP_IMAGES = arrayOf( + R.drawable.ic_menu_map, R.drawable.ic_satellite, R.drawable.ic_3d + ) + val POPUP_TITLES = arrayOf("标准地图", "卫星地图", "3D地图") //预置颜色 val COLORS = arrayOf( diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 0a6bad4..44c3049 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -19,11 +19,12 @@ import com.casic.qd.smartwell.utils.Constant import com.casic.qd.smartwell.utils.SaveKeyValues import com.casic.qd.smartwell.vm.DeviceViewModel +import com.casic.qd.smartwell.widgets.EasyPopupWindow import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.app.multilib.utils.SizeUtil import kotlinx.android.synthetic.main.activity_map.* -import kotlinx.android.synthetic.main.include_base_title.* import java.util.* import kotlin.collections.ArrayList @@ -67,6 +68,27 @@ override fun setupTopBarLayout() { leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) + easyPopupWindow.setupPopupData(Constant.POPUP_IMAGES, Constant.POPUP_TITLES) + rightOptionView.setOnClickListener { + easyPopupWindow.setOnPopupWindowClickListener(object : + EasyPopupWindow.OnPopupWindowClickListener { + override fun onPopupClick(position: Int) { + when (position) { + 0 -> aMap.mapType = AMap.MAP_TYPE_NORMAL + 1 -> aMap.mapType = AMap.MAP_TYPE_SATELLITE + 2 -> { +// navigatePageTo() + } + } + } + }) + easyPopupWindow.setBackgroundDrawable(null) + val x: Int = rightOptionView.width - easyPopupWindow.width - SizeUtil.dp2px( + this, 0f + ) + easyPopupWindow.showAsDropDown(rightOptionView, x, 0) + } } override fun initData() { @@ -124,7 +146,7 @@ override fun initEvent() { aMap = mapView.map -// aMap.mapType = AMap.MAP_TYPE_SATELLITE//卫星地图模式 + aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt new file mode 100644 index 0000000..392d893 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt @@ -0,0 +1,106 @@ +package com.casic.qd.smartwell.widgets + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.* +import com.casic.qd.smartwell.R +import com.pengxh.app.multilib.utils.SizeUtil + +/** + * @description: 顶部下拉菜单 + * @author: Pengxh + * @email: 290677893@qq.com + * @date: 2019/12/28 20:35 + */ +class EasyPopupWindow(private val context: Context) : PopupWindow(context) { + + private var clickListener: OnPopupWindowClickListener? = null + private var imageList: Array? = null + private var nameList: Array? = null + + init { + width = (SizeUtil.getScreenWidth(context) * 0.3).toInt() + height = ViewGroup.LayoutParams.WRAP_CONTENT + isOutsideTouchable = true + isFocusable = true + animationStyle = R.style.PopupAnimation + contentView = LayoutInflater.from(context).inflate(R.layout.popup_option, null, false) + } + + fun setupPopupData(imageList: Array?, stringList: Array?) { + this.imageList = imageList + this.nameList = stringList + val popupListView = contentView.findViewById(R.id.popupListView) + setupListView(popupListView) + } + + //给PopupWindow列表绑定数据 + private fun setupListView(popupListView: ListView) { + val adapter = PopupAdapter(context, imageList!!, nameList!!) + popupListView.adapter = adapter + popupListView.onItemClickListener = + AdapterView.OnItemClickListener { _, _, i, _ -> + if (clickListener != null) { + clickListener!!.onPopupClick(i) + } + dismiss() + } + } + + interface OnPopupWindowClickListener { + fun onPopupClick(position: Int) + } + + fun setOnPopupWindowClickListener(windowClickListener: OnPopupWindowClickListener?) { + clickListener = windowClickListener + } + + inner class PopupAdapter( + mContext: Context?, + private val imageList: Array, + private val nameList: Array + ) : BaseAdapter() { + + private val inflater: LayoutInflater = LayoutInflater.from(mContext) + + override fun getCount(): Int { + return nameList.size + } + + override fun getItem(position: Int): Any { + return nameList[position] + } + + override fun getItemId(position: Int): Long { + return position.toLong() + } + + override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { + var view = convertView + val holder: PopupWindowHolder + if (view == null) { + view = inflater.inflate(R.layout.item_map_popup, null) + holder = PopupWindowHolder() + holder.popupImageView = view.findViewById(R.id.popupImageView) + holder.popupTitleView = view.findViewById(R.id.popupTitleView) + view.tag = holder + } else { + holder = view.tag as PopupWindowHolder + } + holder.bindData(imageList[position], nameList[position]) + return view!! + } + } + + inner class PopupWindowHolder { + lateinit var popupImageView: ImageView + lateinit var popupTitleView: TextView + + fun bindData(resId: Int, s: String?) { + popupImageView.setBackgroundResource(resId) + popupTitleView.text = s + } + } +} \ No newline at end of file diff --git a/app/src/main/res/anim/popup_hide.xml b/app/src/main/res/anim/popup_hide.xml new file mode 100644 index 0000000..55c7aca --- /dev/null +++ b/app/src/main/res/anim/popup_hide.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/popup_show.xml b/app/src/main/res/anim/popup_show.xml new file mode 100644 index 0000000..8e1791e --- /dev/null +++ b/app/src/main/res/anim/popup_show.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_3d.xml b/app/src/main/res/drawable/ic_3d.xml new file mode 100644 index 0000000..507445b --- /dev/null +++ b/app/src/main/res/drawable/ic_3d.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_change_map.xml b/app/src/main/res/drawable/ic_change_map.xml new file mode 100644 index 0000000..d9172fe --- /dev/null +++ b/app/src/main/res/drawable/ic_change_map.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_map.xml b/app/src/main/res/drawable/ic_menu_map.xml new file mode 100644 index 0000000..85ab880 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_map.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_satellite.xml b/app/src/main/res/drawable/ic_satellite.xml new file mode 100644 index 0000000..9116ac8 --- /dev/null +++ b/app/src/main/res/drawable/ic_satellite.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/popup_list_divider.xml b/app/src/main/res/drawable/popup_list_divider.xml new file mode 100644 index 0000000..c5b4a60 --- /dev/null +++ b/app/src/main/res/drawable/popup_list_divider.xml @@ -0,0 +1,10 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt index 168f065..2dbb3eb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt @@ -19,6 +19,10 @@ R.drawable.ic_home_map, R.drawable.ic_home_record, R.drawable.ic_home_statistics, ) val HOME_ITEMS = arrayOf("地图展示", "记录查询", "汇总统计") + val POPUP_IMAGES = arrayOf( + R.drawable.ic_menu_map, R.drawable.ic_satellite, R.drawable.ic_3d + ) + val POPUP_TITLES = arrayOf("标准地图", "卫星地图", "3D地图") //预置颜色 val COLORS = arrayOf( diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 0a6bad4..44c3049 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -19,11 +19,12 @@ import com.casic.qd.smartwell.utils.Constant import com.casic.qd.smartwell.utils.SaveKeyValues import com.casic.qd.smartwell.vm.DeviceViewModel +import com.casic.qd.smartwell.widgets.EasyPopupWindow import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.app.multilib.utils.SizeUtil import kotlinx.android.synthetic.main.activity_map.* -import kotlinx.android.synthetic.main.include_base_title.* import java.util.* import kotlin.collections.ArrayList @@ -67,6 +68,27 @@ override fun setupTopBarLayout() { leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) + easyPopupWindow.setupPopupData(Constant.POPUP_IMAGES, Constant.POPUP_TITLES) + rightOptionView.setOnClickListener { + easyPopupWindow.setOnPopupWindowClickListener(object : + EasyPopupWindow.OnPopupWindowClickListener { + override fun onPopupClick(position: Int) { + when (position) { + 0 -> aMap.mapType = AMap.MAP_TYPE_NORMAL + 1 -> aMap.mapType = AMap.MAP_TYPE_SATELLITE + 2 -> { +// navigatePageTo() + } + } + } + }) + easyPopupWindow.setBackgroundDrawable(null) + val x: Int = rightOptionView.width - easyPopupWindow.width - SizeUtil.dp2px( + this, 0f + ) + easyPopupWindow.showAsDropDown(rightOptionView, x, 0) + } } override fun initData() { @@ -124,7 +146,7 @@ override fun initEvent() { aMap = mapView.map -// aMap.mapType = AMap.MAP_TYPE_SATELLITE//卫星地图模式 + aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt new file mode 100644 index 0000000..392d893 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt @@ -0,0 +1,106 @@ +package com.casic.qd.smartwell.widgets + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.* +import com.casic.qd.smartwell.R +import com.pengxh.app.multilib.utils.SizeUtil + +/** + * @description: 顶部下拉菜单 + * @author: Pengxh + * @email: 290677893@qq.com + * @date: 2019/12/28 20:35 + */ +class EasyPopupWindow(private val context: Context) : PopupWindow(context) { + + private var clickListener: OnPopupWindowClickListener? = null + private var imageList: Array? = null + private var nameList: Array? = null + + init { + width = (SizeUtil.getScreenWidth(context) * 0.3).toInt() + height = ViewGroup.LayoutParams.WRAP_CONTENT + isOutsideTouchable = true + isFocusable = true + animationStyle = R.style.PopupAnimation + contentView = LayoutInflater.from(context).inflate(R.layout.popup_option, null, false) + } + + fun setupPopupData(imageList: Array?, stringList: Array?) { + this.imageList = imageList + this.nameList = stringList + val popupListView = contentView.findViewById(R.id.popupListView) + setupListView(popupListView) + } + + //给PopupWindow列表绑定数据 + private fun setupListView(popupListView: ListView) { + val adapter = PopupAdapter(context, imageList!!, nameList!!) + popupListView.adapter = adapter + popupListView.onItemClickListener = + AdapterView.OnItemClickListener { _, _, i, _ -> + if (clickListener != null) { + clickListener!!.onPopupClick(i) + } + dismiss() + } + } + + interface OnPopupWindowClickListener { + fun onPopupClick(position: Int) + } + + fun setOnPopupWindowClickListener(windowClickListener: OnPopupWindowClickListener?) { + clickListener = windowClickListener + } + + inner class PopupAdapter( + mContext: Context?, + private val imageList: Array, + private val nameList: Array + ) : BaseAdapter() { + + private val inflater: LayoutInflater = LayoutInflater.from(mContext) + + override fun getCount(): Int { + return nameList.size + } + + override fun getItem(position: Int): Any { + return nameList[position] + } + + override fun getItemId(position: Int): Long { + return position.toLong() + } + + override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { + var view = convertView + val holder: PopupWindowHolder + if (view == null) { + view = inflater.inflate(R.layout.item_map_popup, null) + holder = PopupWindowHolder() + holder.popupImageView = view.findViewById(R.id.popupImageView) + holder.popupTitleView = view.findViewById(R.id.popupTitleView) + view.tag = holder + } else { + holder = view.tag as PopupWindowHolder + } + holder.bindData(imageList[position], nameList[position]) + return view!! + } + } + + inner class PopupWindowHolder { + lateinit var popupImageView: ImageView + lateinit var popupTitleView: TextView + + fun bindData(resId: Int, s: String?) { + popupImageView.setBackgroundResource(resId) + popupTitleView.text = s + } + } +} \ No newline at end of file diff --git a/app/src/main/res/anim/popup_hide.xml b/app/src/main/res/anim/popup_hide.xml new file mode 100644 index 0000000..55c7aca --- /dev/null +++ b/app/src/main/res/anim/popup_hide.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/popup_show.xml b/app/src/main/res/anim/popup_show.xml new file mode 100644 index 0000000..8e1791e --- /dev/null +++ b/app/src/main/res/anim/popup_show.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_3d.xml b/app/src/main/res/drawable/ic_3d.xml new file mode 100644 index 0000000..507445b --- /dev/null +++ b/app/src/main/res/drawable/ic_3d.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_change_map.xml b/app/src/main/res/drawable/ic_change_map.xml new file mode 100644 index 0000000..d9172fe --- /dev/null +++ b/app/src/main/res/drawable/ic_change_map.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_map.xml b/app/src/main/res/drawable/ic_menu_map.xml new file mode 100644 index 0000000..85ab880 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_map.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_satellite.xml b/app/src/main/res/drawable/ic_satellite.xml new file mode 100644 index 0000000..9116ac8 --- /dev/null +++ b/app/src/main/res/drawable/ic_satellite.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/popup_list_divider.xml b/app/src/main/res/drawable/popup_list_divider.xml new file mode 100644 index 0000000..c5b4a60 --- /dev/null +++ b/app/src/main/res/drawable/popup_list_divider.xml @@ -0,0 +1,10 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_map.xml b/app/src/main/res/layout/activity_map.xml index 025073b..38a8e20 100644 --- a/app/src/main/res/layout/activity_map.xml +++ b/app/src/main/res/layout/activity_map.xml @@ -4,7 +4,36 @@ android:layout_height="match_parent" android:orientation="vertical"> - + + + + + + + + aMap.mapType = AMap.MAP_TYPE_NORMAL + 1 -> aMap.mapType = AMap.MAP_TYPE_SATELLITE + 2 -> { +// navigatePageTo() + } + } + } + }) + easyPopupWindow.setBackgroundDrawable(null) + val x: Int = rightOptionView.width - easyPopupWindow.width - SizeUtil.dp2px( + this, 0f + ) + easyPopupWindow.showAsDropDown(rightOptionView, x, 0) + } } override fun initData() { @@ -124,7 +146,7 @@ override fun initEvent() { aMap = mapView.map -// aMap.mapType = AMap.MAP_TYPE_SATELLITE//卫星地图模式 + aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt new file mode 100644 index 0000000..392d893 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt @@ -0,0 +1,106 @@ +package com.casic.qd.smartwell.widgets + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.* +import com.casic.qd.smartwell.R +import com.pengxh.app.multilib.utils.SizeUtil + +/** + * @description: 顶部下拉菜单 + * @author: Pengxh + * @email: 290677893@qq.com + * @date: 2019/12/28 20:35 + */ +class EasyPopupWindow(private val context: Context) : PopupWindow(context) { + + private var clickListener: OnPopupWindowClickListener? = null + private var imageList: Array? = null + private var nameList: Array? = null + + init { + width = (SizeUtil.getScreenWidth(context) * 0.3).toInt() + height = ViewGroup.LayoutParams.WRAP_CONTENT + isOutsideTouchable = true + isFocusable = true + animationStyle = R.style.PopupAnimation + contentView = LayoutInflater.from(context).inflate(R.layout.popup_option, null, false) + } + + fun setupPopupData(imageList: Array?, stringList: Array?) { + this.imageList = imageList + this.nameList = stringList + val popupListView = contentView.findViewById(R.id.popupListView) + setupListView(popupListView) + } + + //给PopupWindow列表绑定数据 + private fun setupListView(popupListView: ListView) { + val adapter = PopupAdapter(context, imageList!!, nameList!!) + popupListView.adapter = adapter + popupListView.onItemClickListener = + AdapterView.OnItemClickListener { _, _, i, _ -> + if (clickListener != null) { + clickListener!!.onPopupClick(i) + } + dismiss() + } + } + + interface OnPopupWindowClickListener { + fun onPopupClick(position: Int) + } + + fun setOnPopupWindowClickListener(windowClickListener: OnPopupWindowClickListener?) { + clickListener = windowClickListener + } + + inner class PopupAdapter( + mContext: Context?, + private val imageList: Array, + private val nameList: Array + ) : BaseAdapter() { + + private val inflater: LayoutInflater = LayoutInflater.from(mContext) + + override fun getCount(): Int { + return nameList.size + } + + override fun getItem(position: Int): Any { + return nameList[position] + } + + override fun getItemId(position: Int): Long { + return position.toLong() + } + + override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { + var view = convertView + val holder: PopupWindowHolder + if (view == null) { + view = inflater.inflate(R.layout.item_map_popup, null) + holder = PopupWindowHolder() + holder.popupImageView = view.findViewById(R.id.popupImageView) + holder.popupTitleView = view.findViewById(R.id.popupTitleView) + view.tag = holder + } else { + holder = view.tag as PopupWindowHolder + } + holder.bindData(imageList[position], nameList[position]) + return view!! + } + } + + inner class PopupWindowHolder { + lateinit var popupImageView: ImageView + lateinit var popupTitleView: TextView + + fun bindData(resId: Int, s: String?) { + popupImageView.setBackgroundResource(resId) + popupTitleView.text = s + } + } +} \ No newline at end of file diff --git a/app/src/main/res/anim/popup_hide.xml b/app/src/main/res/anim/popup_hide.xml new file mode 100644 index 0000000..55c7aca --- /dev/null +++ b/app/src/main/res/anim/popup_hide.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/popup_show.xml b/app/src/main/res/anim/popup_show.xml new file mode 100644 index 0000000..8e1791e --- /dev/null +++ b/app/src/main/res/anim/popup_show.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_3d.xml b/app/src/main/res/drawable/ic_3d.xml new file mode 100644 index 0000000..507445b --- /dev/null +++ b/app/src/main/res/drawable/ic_3d.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_change_map.xml b/app/src/main/res/drawable/ic_change_map.xml new file mode 100644 index 0000000..d9172fe --- /dev/null +++ b/app/src/main/res/drawable/ic_change_map.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_map.xml b/app/src/main/res/drawable/ic_menu_map.xml new file mode 100644 index 0000000..85ab880 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_map.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_satellite.xml b/app/src/main/res/drawable/ic_satellite.xml new file mode 100644 index 0000000..9116ac8 --- /dev/null +++ b/app/src/main/res/drawable/ic_satellite.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/popup_list_divider.xml b/app/src/main/res/drawable/popup_list_divider.xml new file mode 100644 index 0000000..c5b4a60 --- /dev/null +++ b/app/src/main/res/drawable/popup_list_divider.xml @@ -0,0 +1,10 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_map.xml b/app/src/main/res/layout/activity_map.xml index 025073b..38a8e20 100644 --- a/app/src/main/res/layout/activity_map.xml +++ b/app/src/main/res/layout/activity_map.xml @@ -4,7 +4,36 @@ android:layout_height="match_parent" android:orientation="vertical"> - + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt index 168f065..2dbb3eb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt @@ -19,6 +19,10 @@ R.drawable.ic_home_map, R.drawable.ic_home_record, R.drawable.ic_home_statistics, ) val HOME_ITEMS = arrayOf("地图展示", "记录查询", "汇总统计") + val POPUP_IMAGES = arrayOf( + R.drawable.ic_menu_map, R.drawable.ic_satellite, R.drawable.ic_3d + ) + val POPUP_TITLES = arrayOf("标准地图", "卫星地图", "3D地图") //预置颜色 val COLORS = arrayOf( diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 0a6bad4..44c3049 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -19,11 +19,12 @@ import com.casic.qd.smartwell.utils.Constant import com.casic.qd.smartwell.utils.SaveKeyValues import com.casic.qd.smartwell.vm.DeviceViewModel +import com.casic.qd.smartwell.widgets.EasyPopupWindow import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.app.multilib.utils.SizeUtil import kotlinx.android.synthetic.main.activity_map.* -import kotlinx.android.synthetic.main.include_base_title.* import java.util.* import kotlin.collections.ArrayList @@ -67,6 +68,27 @@ override fun setupTopBarLayout() { leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) + easyPopupWindow.setupPopupData(Constant.POPUP_IMAGES, Constant.POPUP_TITLES) + rightOptionView.setOnClickListener { + easyPopupWindow.setOnPopupWindowClickListener(object : + EasyPopupWindow.OnPopupWindowClickListener { + override fun onPopupClick(position: Int) { + when (position) { + 0 -> aMap.mapType = AMap.MAP_TYPE_NORMAL + 1 -> aMap.mapType = AMap.MAP_TYPE_SATELLITE + 2 -> { +// navigatePageTo() + } + } + } + }) + easyPopupWindow.setBackgroundDrawable(null) + val x: Int = rightOptionView.width - easyPopupWindow.width - SizeUtil.dp2px( + this, 0f + ) + easyPopupWindow.showAsDropDown(rightOptionView, x, 0) + } } override fun initData() { @@ -124,7 +146,7 @@ override fun initEvent() { aMap = mapView.map -// aMap.mapType = AMap.MAP_TYPE_SATELLITE//卫星地图模式 + aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt new file mode 100644 index 0000000..392d893 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt @@ -0,0 +1,106 @@ +package com.casic.qd.smartwell.widgets + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.* +import com.casic.qd.smartwell.R +import com.pengxh.app.multilib.utils.SizeUtil + +/** + * @description: 顶部下拉菜单 + * @author: Pengxh + * @email: 290677893@qq.com + * @date: 2019/12/28 20:35 + */ +class EasyPopupWindow(private val context: Context) : PopupWindow(context) { + + private var clickListener: OnPopupWindowClickListener? = null + private var imageList: Array? = null + private var nameList: Array? = null + + init { + width = (SizeUtil.getScreenWidth(context) * 0.3).toInt() + height = ViewGroup.LayoutParams.WRAP_CONTENT + isOutsideTouchable = true + isFocusable = true + animationStyle = R.style.PopupAnimation + contentView = LayoutInflater.from(context).inflate(R.layout.popup_option, null, false) + } + + fun setupPopupData(imageList: Array?, stringList: Array?) { + this.imageList = imageList + this.nameList = stringList + val popupListView = contentView.findViewById(R.id.popupListView) + setupListView(popupListView) + } + + //给PopupWindow列表绑定数据 + private fun setupListView(popupListView: ListView) { + val adapter = PopupAdapter(context, imageList!!, nameList!!) + popupListView.adapter = adapter + popupListView.onItemClickListener = + AdapterView.OnItemClickListener { _, _, i, _ -> + if (clickListener != null) { + clickListener!!.onPopupClick(i) + } + dismiss() + } + } + + interface OnPopupWindowClickListener { + fun onPopupClick(position: Int) + } + + fun setOnPopupWindowClickListener(windowClickListener: OnPopupWindowClickListener?) { + clickListener = windowClickListener + } + + inner class PopupAdapter( + mContext: Context?, + private val imageList: Array, + private val nameList: Array + ) : BaseAdapter() { + + private val inflater: LayoutInflater = LayoutInflater.from(mContext) + + override fun getCount(): Int { + return nameList.size + } + + override fun getItem(position: Int): Any { + return nameList[position] + } + + override fun getItemId(position: Int): Long { + return position.toLong() + } + + override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { + var view = convertView + val holder: PopupWindowHolder + if (view == null) { + view = inflater.inflate(R.layout.item_map_popup, null) + holder = PopupWindowHolder() + holder.popupImageView = view.findViewById(R.id.popupImageView) + holder.popupTitleView = view.findViewById(R.id.popupTitleView) + view.tag = holder + } else { + holder = view.tag as PopupWindowHolder + } + holder.bindData(imageList[position], nameList[position]) + return view!! + } + } + + inner class PopupWindowHolder { + lateinit var popupImageView: ImageView + lateinit var popupTitleView: TextView + + fun bindData(resId: Int, s: String?) { + popupImageView.setBackgroundResource(resId) + popupTitleView.text = s + } + } +} \ No newline at end of file diff --git a/app/src/main/res/anim/popup_hide.xml b/app/src/main/res/anim/popup_hide.xml new file mode 100644 index 0000000..55c7aca --- /dev/null +++ b/app/src/main/res/anim/popup_hide.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/popup_show.xml b/app/src/main/res/anim/popup_show.xml new file mode 100644 index 0000000..8e1791e --- /dev/null +++ b/app/src/main/res/anim/popup_show.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_3d.xml b/app/src/main/res/drawable/ic_3d.xml new file mode 100644 index 0000000..507445b --- /dev/null +++ b/app/src/main/res/drawable/ic_3d.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_change_map.xml b/app/src/main/res/drawable/ic_change_map.xml new file mode 100644 index 0000000..d9172fe --- /dev/null +++ b/app/src/main/res/drawable/ic_change_map.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_map.xml b/app/src/main/res/drawable/ic_menu_map.xml new file mode 100644 index 0000000..85ab880 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_map.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_satellite.xml b/app/src/main/res/drawable/ic_satellite.xml new file mode 100644 index 0000000..9116ac8 --- /dev/null +++ b/app/src/main/res/drawable/ic_satellite.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/popup_list_divider.xml b/app/src/main/res/drawable/popup_list_divider.xml new file mode 100644 index 0000000..c5b4a60 --- /dev/null +++ b/app/src/main/res/drawable/popup_list_divider.xml @@ -0,0 +1,10 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_map.xml b/app/src/main/res/layout/activity_map.xml index 025073b..38a8e20 100644 --- a/app/src/main/res/layout/activity_map.xml +++ b/app/src/main/res/layout/activity_map.xml @@ -4,7 +4,36 @@ android:layout_height="match_parent" android:orientation="vertical"> - + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/popup_option.xml b/app/src/main/res/layout/popup_option.xml new file mode 100644 index 0000000..149eb87 --- /dev/null +++ b/app/src/main/res/layout/popup_option.xml @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt index 168f065..2dbb3eb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt @@ -19,6 +19,10 @@ R.drawable.ic_home_map, R.drawable.ic_home_record, R.drawable.ic_home_statistics, ) val HOME_ITEMS = arrayOf("地图展示", "记录查询", "汇总统计") + val POPUP_IMAGES = arrayOf( + R.drawable.ic_menu_map, R.drawable.ic_satellite, R.drawable.ic_3d + ) + val POPUP_TITLES = arrayOf("标准地图", "卫星地图", "3D地图") //预置颜色 val COLORS = arrayOf( diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 0a6bad4..44c3049 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -19,11 +19,12 @@ import com.casic.qd.smartwell.utils.Constant import com.casic.qd.smartwell.utils.SaveKeyValues import com.casic.qd.smartwell.vm.DeviceViewModel +import com.casic.qd.smartwell.widgets.EasyPopupWindow import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.app.multilib.utils.SizeUtil import kotlinx.android.synthetic.main.activity_map.* -import kotlinx.android.synthetic.main.include_base_title.* import java.util.* import kotlin.collections.ArrayList @@ -67,6 +68,27 @@ override fun setupTopBarLayout() { leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) + easyPopupWindow.setupPopupData(Constant.POPUP_IMAGES, Constant.POPUP_TITLES) + rightOptionView.setOnClickListener { + easyPopupWindow.setOnPopupWindowClickListener(object : + EasyPopupWindow.OnPopupWindowClickListener { + override fun onPopupClick(position: Int) { + when (position) { + 0 -> aMap.mapType = AMap.MAP_TYPE_NORMAL + 1 -> aMap.mapType = AMap.MAP_TYPE_SATELLITE + 2 -> { +// navigatePageTo() + } + } + } + }) + easyPopupWindow.setBackgroundDrawable(null) + val x: Int = rightOptionView.width - easyPopupWindow.width - SizeUtil.dp2px( + this, 0f + ) + easyPopupWindow.showAsDropDown(rightOptionView, x, 0) + } } override fun initData() { @@ -124,7 +146,7 @@ override fun initEvent() { aMap = mapView.map -// aMap.mapType = AMap.MAP_TYPE_SATELLITE//卫星地图模式 + aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt new file mode 100644 index 0000000..392d893 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt @@ -0,0 +1,106 @@ +package com.casic.qd.smartwell.widgets + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.* +import com.casic.qd.smartwell.R +import com.pengxh.app.multilib.utils.SizeUtil + +/** + * @description: 顶部下拉菜单 + * @author: Pengxh + * @email: 290677893@qq.com + * @date: 2019/12/28 20:35 + */ +class EasyPopupWindow(private val context: Context) : PopupWindow(context) { + + private var clickListener: OnPopupWindowClickListener? = null + private var imageList: Array? = null + private var nameList: Array? = null + + init { + width = (SizeUtil.getScreenWidth(context) * 0.3).toInt() + height = ViewGroup.LayoutParams.WRAP_CONTENT + isOutsideTouchable = true + isFocusable = true + animationStyle = R.style.PopupAnimation + contentView = LayoutInflater.from(context).inflate(R.layout.popup_option, null, false) + } + + fun setupPopupData(imageList: Array?, stringList: Array?) { + this.imageList = imageList + this.nameList = stringList + val popupListView = contentView.findViewById(R.id.popupListView) + setupListView(popupListView) + } + + //给PopupWindow列表绑定数据 + private fun setupListView(popupListView: ListView) { + val adapter = PopupAdapter(context, imageList!!, nameList!!) + popupListView.adapter = adapter + popupListView.onItemClickListener = + AdapterView.OnItemClickListener { _, _, i, _ -> + if (clickListener != null) { + clickListener!!.onPopupClick(i) + } + dismiss() + } + } + + interface OnPopupWindowClickListener { + fun onPopupClick(position: Int) + } + + fun setOnPopupWindowClickListener(windowClickListener: OnPopupWindowClickListener?) { + clickListener = windowClickListener + } + + inner class PopupAdapter( + mContext: Context?, + private val imageList: Array, + private val nameList: Array + ) : BaseAdapter() { + + private val inflater: LayoutInflater = LayoutInflater.from(mContext) + + override fun getCount(): Int { + return nameList.size + } + + override fun getItem(position: Int): Any { + return nameList[position] + } + + override fun getItemId(position: Int): Long { + return position.toLong() + } + + override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { + var view = convertView + val holder: PopupWindowHolder + if (view == null) { + view = inflater.inflate(R.layout.item_map_popup, null) + holder = PopupWindowHolder() + holder.popupImageView = view.findViewById(R.id.popupImageView) + holder.popupTitleView = view.findViewById(R.id.popupTitleView) + view.tag = holder + } else { + holder = view.tag as PopupWindowHolder + } + holder.bindData(imageList[position], nameList[position]) + return view!! + } + } + + inner class PopupWindowHolder { + lateinit var popupImageView: ImageView + lateinit var popupTitleView: TextView + + fun bindData(resId: Int, s: String?) { + popupImageView.setBackgroundResource(resId) + popupTitleView.text = s + } + } +} \ No newline at end of file diff --git a/app/src/main/res/anim/popup_hide.xml b/app/src/main/res/anim/popup_hide.xml new file mode 100644 index 0000000..55c7aca --- /dev/null +++ b/app/src/main/res/anim/popup_hide.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/popup_show.xml b/app/src/main/res/anim/popup_show.xml new file mode 100644 index 0000000..8e1791e --- /dev/null +++ b/app/src/main/res/anim/popup_show.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_3d.xml b/app/src/main/res/drawable/ic_3d.xml new file mode 100644 index 0000000..507445b --- /dev/null +++ b/app/src/main/res/drawable/ic_3d.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_change_map.xml b/app/src/main/res/drawable/ic_change_map.xml new file mode 100644 index 0000000..d9172fe --- /dev/null +++ b/app/src/main/res/drawable/ic_change_map.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_map.xml b/app/src/main/res/drawable/ic_menu_map.xml new file mode 100644 index 0000000..85ab880 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_map.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_satellite.xml b/app/src/main/res/drawable/ic_satellite.xml new file mode 100644 index 0000000..9116ac8 --- /dev/null +++ b/app/src/main/res/drawable/ic_satellite.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/popup_list_divider.xml b/app/src/main/res/drawable/popup_list_divider.xml new file mode 100644 index 0000000..c5b4a60 --- /dev/null +++ b/app/src/main/res/drawable/popup_list_divider.xml @@ -0,0 +1,10 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_map.xml b/app/src/main/res/layout/activity_map.xml index 025073b..38a8e20 100644 --- a/app/src/main/res/layout/activity_map.xml +++ b/app/src/main/res/layout/activity_map.xml @@ -4,7 +4,36 @@ android:layout_height="match_parent" android:orientation="vertical"> - + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/popup_option.xml b/app/src/main/res/layout/popup_option.xml new file mode 100644 index 0000000..149eb87 --- /dev/null +++ b/app/src/main/res/layout/popup_option.xml @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 1dbf606..8f64257 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -11,6 +11,7 @@ #37D4AE #99000000 #C0000000 + #030B14 #96e9b5 diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt index 168f065..2dbb3eb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/Constant.kt @@ -19,6 +19,10 @@ R.drawable.ic_home_map, R.drawable.ic_home_record, R.drawable.ic_home_statistics, ) val HOME_ITEMS = arrayOf("地图展示", "记录查询", "汇总统计") + val POPUP_IMAGES = arrayOf( + R.drawable.ic_menu_map, R.drawable.ic_satellite, R.drawable.ic_3d + ) + val POPUP_TITLES = arrayOf("标准地图", "卫星地图", "3D地图") //预置颜色 val COLORS = arrayOf( diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 0a6bad4..44c3049 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -19,11 +19,12 @@ import com.casic.qd.smartwell.utils.Constant import com.casic.qd.smartwell.utils.SaveKeyValues import com.casic.qd.smartwell.vm.DeviceViewModel +import com.casic.qd.smartwell.widgets.EasyPopupWindow import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.app.multilib.utils.SizeUtil import kotlinx.android.synthetic.main.activity_map.* -import kotlinx.android.synthetic.main.include_base_title.* import java.util.* import kotlin.collections.ArrayList @@ -67,6 +68,27 @@ override fun setupTopBarLayout() { leftBackView.setOnClickListener { finish() } titleView.text = "地图展示" + val easyPopupWindow = EasyPopupWindow(this) + easyPopupWindow.setupPopupData(Constant.POPUP_IMAGES, Constant.POPUP_TITLES) + rightOptionView.setOnClickListener { + easyPopupWindow.setOnPopupWindowClickListener(object : + EasyPopupWindow.OnPopupWindowClickListener { + override fun onPopupClick(position: Int) { + when (position) { + 0 -> aMap.mapType = AMap.MAP_TYPE_NORMAL + 1 -> aMap.mapType = AMap.MAP_TYPE_SATELLITE + 2 -> { +// navigatePageTo() + } + } + } + }) + easyPopupWindow.setBackgroundDrawable(null) + val x: Int = rightOptionView.width - easyPopupWindow.width - SizeUtil.dp2px( + this, 0f + ) + easyPopupWindow.showAsDropDown(rightOptionView, x, 0) + } } override fun initData() { @@ -124,7 +146,7 @@ override fun initEvent() { aMap = mapView.map -// aMap.mapType = AMap.MAP_TYPE_SATELLITE//卫星地图模式 + aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt new file mode 100644 index 0000000..392d893 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt @@ -0,0 +1,106 @@ +package com.casic.qd.smartwell.widgets + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.* +import com.casic.qd.smartwell.R +import com.pengxh.app.multilib.utils.SizeUtil + +/** + * @description: 顶部下拉菜单 + * @author: Pengxh + * @email: 290677893@qq.com + * @date: 2019/12/28 20:35 + */ +class EasyPopupWindow(private val context: Context) : PopupWindow(context) { + + private var clickListener: OnPopupWindowClickListener? = null + private var imageList: Array? = null + private var nameList: Array? = null + + init { + width = (SizeUtil.getScreenWidth(context) * 0.3).toInt() + height = ViewGroup.LayoutParams.WRAP_CONTENT + isOutsideTouchable = true + isFocusable = true + animationStyle = R.style.PopupAnimation + contentView = LayoutInflater.from(context).inflate(R.layout.popup_option, null, false) + } + + fun setupPopupData(imageList: Array?, stringList: Array?) { + this.imageList = imageList + this.nameList = stringList + val popupListView = contentView.findViewById(R.id.popupListView) + setupListView(popupListView) + } + + //给PopupWindow列表绑定数据 + private fun setupListView(popupListView: ListView) { + val adapter = PopupAdapter(context, imageList!!, nameList!!) + popupListView.adapter = adapter + popupListView.onItemClickListener = + AdapterView.OnItemClickListener { _, _, i, _ -> + if (clickListener != null) { + clickListener!!.onPopupClick(i) + } + dismiss() + } + } + + interface OnPopupWindowClickListener { + fun onPopupClick(position: Int) + } + + fun setOnPopupWindowClickListener(windowClickListener: OnPopupWindowClickListener?) { + clickListener = windowClickListener + } + + inner class PopupAdapter( + mContext: Context?, + private val imageList: Array, + private val nameList: Array + ) : BaseAdapter() { + + private val inflater: LayoutInflater = LayoutInflater.from(mContext) + + override fun getCount(): Int { + return nameList.size + } + + override fun getItem(position: Int): Any { + return nameList[position] + } + + override fun getItemId(position: Int): Long { + return position.toLong() + } + + override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { + var view = convertView + val holder: PopupWindowHolder + if (view == null) { + view = inflater.inflate(R.layout.item_map_popup, null) + holder = PopupWindowHolder() + holder.popupImageView = view.findViewById(R.id.popupImageView) + holder.popupTitleView = view.findViewById(R.id.popupTitleView) + view.tag = holder + } else { + holder = view.tag as PopupWindowHolder + } + holder.bindData(imageList[position], nameList[position]) + return view!! + } + } + + inner class PopupWindowHolder { + lateinit var popupImageView: ImageView + lateinit var popupTitleView: TextView + + fun bindData(resId: Int, s: String?) { + popupImageView.setBackgroundResource(resId) + popupTitleView.text = s + } + } +} \ No newline at end of file diff --git a/app/src/main/res/anim/popup_hide.xml b/app/src/main/res/anim/popup_hide.xml new file mode 100644 index 0000000..55c7aca --- /dev/null +++ b/app/src/main/res/anim/popup_hide.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/popup_show.xml b/app/src/main/res/anim/popup_show.xml new file mode 100644 index 0000000..8e1791e --- /dev/null +++ b/app/src/main/res/anim/popup_show.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_3d.xml b/app/src/main/res/drawable/ic_3d.xml new file mode 100644 index 0000000..507445b --- /dev/null +++ b/app/src/main/res/drawable/ic_3d.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_change_map.xml b/app/src/main/res/drawable/ic_change_map.xml new file mode 100644 index 0000000..d9172fe --- /dev/null +++ b/app/src/main/res/drawable/ic_change_map.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_map.xml b/app/src/main/res/drawable/ic_menu_map.xml new file mode 100644 index 0000000..85ab880 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_map.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_satellite.xml b/app/src/main/res/drawable/ic_satellite.xml new file mode 100644 index 0000000..9116ac8 --- /dev/null +++ b/app/src/main/res/drawable/ic_satellite.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/popup_list_divider.xml b/app/src/main/res/drawable/popup_list_divider.xml new file mode 100644 index 0000000..c5b4a60 --- /dev/null +++ b/app/src/main/res/drawable/popup_list_divider.xml @@ -0,0 +1,10 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_map.xml b/app/src/main/res/layout/activity_map.xml index 025073b..38a8e20 100644 --- a/app/src/main/res/layout/activity_map.xml +++ b/app/src/main/res/layout/activity_map.xml @@ -4,7 +4,36 @@ android:layout_height="match_parent" android:orientation="vertical"> - + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/popup_option.xml b/app/src/main/res/layout/popup_option.xml new file mode 100644 index 0000000..149eb87 --- /dev/null +++ b/app/src/main/res/layout/popup_option.xml @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 1dbf606..8f64257 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -11,6 +11,7 @@ #37D4AE #99000000 #C0000000 + #030B14 #96e9b5 diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 83d0bbf..031473c 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -138,4 +138,9 @@ @color/white @dimen/textFontSize + +