From 3dc12ef829d9bcd6a2a85a7456eb24f304c15c66 Mon Sep 17 00:00:00 2001
From: lmw <125975490@qq.com>
Date: 星期五, 28 二月 2025 17:05:37 +0800
Subject: [PATCH] 首页字体优化

---
 app/src/main/java/com/sinata/xqmuse/ui/discovery/DiscoveryFragment.kt |  157 +++++++++++++++++++++++++++++++---------------------
 1 files changed, 94 insertions(+), 63 deletions(-)

diff --git a/app/src/main/java/com/sinata/xqmuse/ui/discovery/DiscoveryFragment.kt b/app/src/main/java/com/sinata/xqmuse/ui/discovery/DiscoveryFragment.kt
index f11a11c..a87ccf4 100644
--- a/app/src/main/java/com/sinata/xqmuse/ui/discovery/DiscoveryFragment.kt
+++ b/app/src/main/java/com/sinata/xqmuse/ui/discovery/DiscoveryFragment.kt
@@ -1,54 +1,43 @@
 package com.sinata.xqmuse.ui.discovery
 
-import androidx.recyclerview.widget.LinearLayoutManager
-import cn.sinata.xldutils.activity.BaseActivity
+import android.Manifest
+import androidx.recyclerview.widget.GridLayoutManager
 import cn.sinata.xldutils.fragment.BaseFragment
-import cn.sinata.xldutils.gone
-import cn.sinata.xldutils.visible
+import cn.sinata.xldutils.utils.SPUtils
+import com.amap.api.location.AMapLocationClient
+import com.amap.api.location.AMapLocationClientOption
+import com.sinata.xqmuse.XQApplication
 import com.sinata.xqmuse.R
-import com.sinata.xqmuse.dialog.AddMomentPop
+import com.sinata.xqmuse.dialog.TipDialog
 import com.sinata.xqmuse.network.HttpManager
-import com.sinata.xqmuse.network.entity.Dynamic
+import com.sinata.xqmuse.network.entity.Place
 import com.sinata.xqmuse.network.requestByF
-import com.sinata.xqmuse.ui.discovery.adapter.DynamicAdapter
+import com.sinata.xqmuse.ui.discovery.adapter.PlaceAdapter
 import com.sinata.xqmuse.utils.Const
 import com.sinata.xqmuse.utils.event.EmptyEvent
-import com.sinata.xqmuse.utils.extention.clickDelay
-import com.sinata.xqmuse.utils.interfaces.StringCallback
+import com.tbruyelle.rxpermissions2.RxPermissions
 import kotlinx.android.synthetic.main.fragment_discovery.*
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
-import org.jetbrains.anko.support.v4.dip
 import org.jetbrains.anko.support.v4.startActivity
+import org.jetbrains.anko.support.v4.toast
 
 
 class DiscoveryFragment : BaseFragment() {
     override fun contentViewId() = R.layout.fragment_discovery
 
-    private val dyns = arrayListOf<Dynamic>()
-    private val adapter = DynamicAdapter(dyns)
+    private val list = arrayListOf<Place>()
+    private val adapter = PlaceAdapter(list)
     private var page = 1
     var search: String? = null //搜索
 
-
     override fun onFirstVisibleToUser() {
         EventBus.getDefault().register(this)
-        rv_act.layoutManager = LinearLayoutManager(requireContext())
-        rv_act.adapter = adapter
-        iv_msg.setOnClickListener {
-            startActivity<MsgActivity>()
-        }
-        iv_add.setOnClickListener {
-            val pop = AddMomentPop(requireContext())
-            pop.setCallback(object : StringCallback {
-                override fun onResult(rst: String) {
-                    startActivity<PublishActivity>("isVideo" to (rst == "video"))
-                }
-            })
-            pop.showAsDropDown(iv_add,dip(-120),-iv_add.measuredHeight-dip(20))
-        }
+        rv_list.layoutManager = GridLayoutManager(requireContext(), 2)
+        rv_list.adapter = adapter
+
         adapter.setOnItemClickListener { view, position ->
-            startActivity<DynamicActivity>("id" to dyns[position].id)
+            startActivity<PlaceDetailActivity>("id" to list[position].id)
         }
         refreshLayout.setOnRefreshListener {
             val s = et_search.text.toString()
@@ -60,47 +49,89 @@
             page++
             getData()
         }
-        tv_search.clickDelay {
-            val s = et_search.text.toString()
-            search = if (s.isNullOrEmpty()) null else s
-            (requireActivity() as BaseActivity).hideInputMethod()
-            refreshLayout.resetNoMoreData()
-            page = 1
-            getData()
+
+        et_search.setOnClickListener {
+            startActivity<SearchPlaceActivity>()
         }
-        getUnread()
-        page = 1
-        getData()
+        checkLocation()
     }
 
-    fun getUnread(){
-        HttpManager.messageCount().requestByF(this){_,data->
-            if (data?:0>99){
-                tv_unread.visible()
-                tv_unread.text = "99+"
-            }else if (data?:0>0){
-                tv_unread.visible()
-                tv_unread.text = data.toString()
-            }else
-                tv_unread.gone()
+    private fun checkLocation() {
+        val rxPermissions = RxPermissions(requireActivity())
+        if (rxPermissions.isGranted(Manifest.permission.ACCESS_FINE_LOCATION)){
+            requestLocation()
+        }else if (SPUtils.instance().getBoolean(Const.User.LOCATION_REFUSED)){
+            refreshLayout.autoRefresh()
+        }else{
+            TipDialog.show(
+                childFragmentManager,
+                "为了展示您附近的疗愈馆,我们需要获取该设备的位置权限",
+                object : TipDialog.OnClickCallback {
+                    override fun onOk() {
+                        val subscribe =
+                            rxPermissions.request(Manifest.permission.ACCESS_FINE_LOCATION)
+                                .subscribe {
+                                    if (it) {
+                                        requestLocation()
+                                    } else {
+                                        SPUtils.instance().put(Const.User.LOCATION_REFUSED, true)
+                                            .apply()
+                                        refreshLayout.autoRefresh()
+                                    }
+                                }
+                        compositeDisposable.add(subscribe)
+                    }
+
+                    override fun onCancel() {
+                        SPUtils.instance().put(Const.User.LOCATION_REFUSED, true).apply()
+                        refreshLayout.autoRefresh()
+                    }
+                },
+                "去授权",
+                "取消"
+            )
         }
+    }
+
+    private fun requestLocation(){
+        toast("定位中...")
+        var locationClient:AMapLocationClient?
+        try {
+            locationClient = AMapLocationClient(requireActivity())
+        } catch (e: Exception) {
+            locationClient = null
+        }
+        locationClient?.setLocationListener {
+            XQApplication.lat = it.latitude
+            XQApplication.lon = it.longitude
+            refreshLayout.autoRefresh()
+        }
+        val option = AMapLocationClientOption()
+        option.locationPurpose = AMapLocationClientOption.AMapLocationPurpose.SignIn
+        option.isOnceLocation = true
+        locationClient?.setLocationOption(option)
+        //设置场景模式后最好调用一次stop,再调用start以保证场景模式生效
+        locationClient?.stopLocation()
+        locationClient?.startLocation()
     }
 
     private fun getData(){
-        HttpManager.findList(page,search).requestByF(this,success = {_,data->
-            if (page == 1)
-                dyns.clear()
-            dyns.addAll(data?: arrayListOf())
-            adapter.notifyDataSetChanged()
-            if (dyns.isEmpty())
-                refreshLayout.finishRefreshWithNoMoreData()
-            else if (data.isNullOrEmpty())
-                refreshLayout.finishLoadMoreWithNoMoreData()
-            else if (page == 1)
-                refreshLayout.finishRefresh()
-            else
-                refreshLayout.finishLoadMore()
-        }){_,_->
+        HttpManager.getMeditationPage(page, search, XQApplication.lat, XQApplication.lon).requestByF(
+            this,
+            success = { _, data ->
+                if (page == 1)
+                    list.clear()
+                list.addAll(data?.list ?: arrayListOf())
+                adapter.notifyDataSetChanged()
+                if (list.isEmpty())
+                    refreshLayout.finishRefreshWithNoMoreData()
+                else if (data?.list?.isNullOrEmpty() == true)
+                    refreshLayout.finishLoadMoreWithNoMoreData()
+                else if (page == 1)
+                    refreshLayout.finishRefresh()
+                else
+                    refreshLayout.finishLoadMore()
+            }){ _, _->
             if (page == 1)
                 refreshLayout.finishRefresh(false)
             else
@@ -109,7 +140,7 @@
     }
 
     @Subscribe
-    fun refresh(e:EmptyEvent){
+    fun refresh(e: EmptyEvent){
         if (e.code == Const.EventCode.REFRESH_DISCOVERY)
             refreshLayout.autoRefresh()
     }

--
Gitblit v1.7.1