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