Newer
Older
CasicSmartTube / app / src / main / java / com / casic / smarttube / fragment / HomePageFragment.kt
package com.casic.smarttube.fragment

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import com.amap.api.maps.AMap
import com.amap.api.maps.AMapOptions
import com.casic.smarttube.R
import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.view.AddDeviceActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.widget.EasyPopupWindow
import kotlinx.android.synthetic.main.fragment_home.view.*

class HomePageFragment : Fragment() {

    private lateinit var homeView: View
    private lateinit var aMap: AMap

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        homeView = inflater.inflate(R.layout.fragment_home, container, false)

        val easyPopupWindow = EasyPopupWindow(requireContext())
        easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES)
        homeView.rightOptionView.setOnClickListener {
            easyPopupWindow.setOnPopupWindowClickListener(object :
                EasyPopupWindow.OnPopupWindowClickListener {
                override fun onPopupItemClicked(position: Int) {
                    when (position) {
                        0 -> aMap.mapType = AMap.MAP_TYPE_NORMAL
                        1 -> aMap.mapType = AMap.MAP_TYPE_SATELLITE
                    }
                }
            })
            easyPopupWindow.setBackgroundDrawable(null)
            val x: Int = homeView.rightOptionView.width - easyPopupWindow.width
            easyPopupWindow.showAsDropDown(homeView.rightOptionView, x, 0)
        }

        //地图初始化
        initMap(savedInstanceState)

        homeView.addDeviceButton.setOnClickListener {
            requireContext().navigatePageTo<AddDeviceActivity>()
        }
        return homeView
    }

    private fun initMap(savedInstanceState: Bundle?) {
        homeView.mapView.onCreate(savedInstanceState)
        aMap = homeView.mapView.map
        aMap.mapType = AMap.MAP_TYPE_NORMAL
        val uiSettings = aMap.uiSettings
        uiSettings.isCompassEnabled = true
        uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
        uiSettings.isZoomControlsEnabled = false//不显示+/-
        uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度
        uiSettings.isRotateGesturesEnabled = false//不允许地图旋转

        // 地图加载成功监听
//        aMap.addOnMapLoadedListener(this)
        // 地图缩放监听
//        aMap.addOnCameraChangeListener(this)
        // marker 点击事件监听
//        aMap.addOnMarkerClickListener(this)
        // 点击marker弹出自定义popup
//        aMap.setInfoWindowAdapter(this)
    }

    /***以下是地图生命周期管理************************************************************************/
    override fun onResume() {
        super.onResume()
        homeView.mapView.onResume()
    }

    override fun onPause() {
        super.onPause()
        homeView.mapView.onPause()
    }

    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        homeView.mapView.onSaveInstanceState(outState)
    }

    override fun onDestroy() {
        super.onDestroy()
        homeView.mapView.onDestroy()
    }
}