添加我的页面

This commit is contained in:
wangyu 2026-01-06 15:37:32 +08:00
parent 8ed2fedbe2
commit 2219226b82
43 changed files with 929 additions and 218 deletions

Binary file not shown.

View File

@ -27,9 +27,10 @@ object Constants {
const val Encrypt = "zpzkfp72v3hgatzg5w7pyg86x5342kxt" const val Encrypt = "zpzkfp72v3hgatzg5w7pyg86x5342kxt"
const val Signature = "ckBHUSWBx3TqwNT2kxMrsXyXFuA3PW" const val Signature = "ckBHUSWBx3TqwNT2kxMrsXyXFuA3PW"
val almmsht = Typeface.createFromAsset(Utils.getApp().assets, "fonts/AlimamaShuHeiTi.ttf")
val dDIN_PRO_M = Typeface.createFromAsset(Utils.getApp().assets, "fonts/D-DIN-PRO-500-Medium.otf") val dDIN_PRO_M = Typeface.createFromAsset(Utils.getApp().assets, "fonts/D-DIN-PRO-500-Medium.otf")
val almmsht = Typeface.createFromAsset(Utils.getApp().assets, "fonts/AlimamaShuHeiTi.ttf")
val douyinsansB = Typeface.createFromAsset(Utils.getApp().assets, "fonts/DouyinSansBold.otf") val douyinsansB = Typeface.createFromAsset(Utils.getApp().assets, "fonts/DouyinSansBold.otf")
val pmzdbt = Typeface.createFromAsset(Utils.getApp().assets, "fonts/PangMenZhengDaoBiaoTiTi.ttf") val pmzdbt = Typeface.createFromAsset(Utils.getApp().assets, "fonts/PangMenZhengDaoBiaoTiTi.ttf")
val dtjbt = Typeface.createFromAsset(Utils.getApp().assets, "fonts/DingTalk-JinBuTi.ttf") val dtjbt = Typeface.createFromAsset(Utils.getApp().assets, "fonts/DingTalk-JinBuTi.ttf")
val ysbth = Typeface.createFromAsset(Utils.getApp().assets, "fonts/YouSheBiaoTiHei.ttf")
} }

View File

@ -40,8 +40,6 @@ object EventConstants {
const val JUMP_TO_BID_SEARCH = "client.jump.to.bid.search" //跳转到搜索 const val JUMP_TO_BID_SEARCH = "client.jump.to.bid.search" //跳转到搜索
const val JUMP_TO_SUBSCRIBE = "client.jump.to.subscribe" //跳转到订阅
const val JUMP_TO_GOODS_DETAIL = "client.jump.to.goods.detail" //跳转供应商商品详情 const val JUMP_TO_GOODS_DETAIL = "client.jump.to.goods.detail" //跳转供应商商品详情
const val JUMP_TO_PUBLISH = "client.jump.to.publish" //跳转到发布 const val JUMP_TO_PUBLISH = "client.jump.to.publish" //跳转到发布
@ -58,8 +56,20 @@ object EventConstants {
const val JUMP_TO_USER_SETTING = "client.jump.to.user.setting" //跳转到用户设置 const val JUMP_TO_USER_SETTING = "client.jump.to.user.setting" //跳转到用户设置
const val JUMP_TO_FAVORITE = "client.jump.to.favorite" //跳转到收藏页
const val JUMP_TO_SUBSCRIBE = "client.jump.to.subscribe" //跳转到订阅页
const val JUMP_TO_HISTORY = "client.jump.to.history" //跳转到足迹页
const val JUMP_TO_ORDER = "client.jump.to.order" //跳转到订单页
const val JUMP_TO_MESSAGE = "client.jump.to.message" //跳转到消息页
const val JUMP_TO_FEEDBACK = "client.jump.to.feedback" //跳转到意见反馈 const val JUMP_TO_FEEDBACK = "client.jump.to.feedback" //跳转到意见反馈
const val JUMP_TO_SERVICE = "client.jump.to.service" //跳转到联系客服
const val JUMP_TO_ACCOUNT_BIND = "client.jump.to.account.bind" //跳转到账号绑定 const val JUMP_TO_ACCOUNT_BIND = "client.jump.to.account.bind" //跳转到账号绑定
const val JUMP_TO_ACCOUNT_MANAGE = "client.jump.to.account.manage" //跳转到账号管理 const val JUMP_TO_ACCOUNT_MANAGE = "client.jump.to.account.manage" //跳转到账号管理

View File

@ -9,6 +9,7 @@ import com.example.base.utils.L
import com.example.base.utils.Utils import com.example.base.utils.Utils
import com.cheng.bole.BuildConfig import com.cheng.bole.BuildConfig
import com.cheng.bole.common.Constants import com.cheng.bole.common.Constants
import com.cheng.bole.event.HomeRefreshEvent
import com.cheng.bole.manager.LoginManager import com.cheng.bole.manager.LoginManager
import com.cheng.bole.ui.activity.LoginActivity import com.cheng.bole.ui.activity.LoginActivity
import com.cheng.bole.ui.activity.PublicActivity import com.cheng.bole.ui.activity.PublicActivity
@ -81,7 +82,7 @@ class ResponseInterceptor : Interceptor {
val decCode = JSON.parseObject(decryString).getInteger("code") val decCode = JSON.parseObject(decryString).getInteger("code")
when (decCode) { when (decCode) {
11018 -> { 11018 -> {
RxBus.defaultInstance.post(com.cheng.bole.event.HomeRefreshEvent()) RxBus.defaultInstance.post(HomeRefreshEvent())
} }
19000 -> { 19000 -> {

View File

@ -86,7 +86,7 @@ class GuideFragment :BaseFragment<FragmentGuideContentBinding, GuideViewModel>()
ViewPager.SCROLL_STATE_IDLE->{ ViewPager.SCROLL_STATE_IDLE->{
if (!mIsScrolled && currentPosition == indicatorAdapter.itemCount - 1){ if (!mIsScrolled && currentPosition == indicatorAdapter.itemCount - 1){
if (UserConfigManager.getGuidePayEnable()){ if (UserConfigManager.getGuidePayEnable()){
PublicActivity.start(requireActivity(), VipFragment::class.java, Pair("origin", "guide")) PublicActivity.start(requireActivity(), VipFragment::class.java, Pair("origin", "bootpage"))
}else{ }else{
requireActivity().startActivity<MainActivity>() requireActivity().startActivity<MainActivity>()
} }

View File

@ -9,6 +9,7 @@ import com.cheng.bole.bean.MenuEntity
import com.cheng.bole.common.Constants import com.cheng.bole.common.Constants
import com.cheng.bole.common.EventConstants import com.cheng.bole.common.EventConstants
import com.cheng.bole.databinding.FragmentHomeBinding import com.cheng.bole.databinding.FragmentHomeBinding
import com.cheng.bole.event.HomeRefreshEvent
import com.cheng.bole.manager.EventReportManager import com.cheng.bole.manager.EventReportManager
import com.cheng.bole.manager.SearchHistoryManager import com.cheng.bole.manager.SearchHistoryManager
import com.cheng.bole.manager.UserConfigManager import com.cheng.bole.manager.UserConfigManager
@ -22,6 +23,7 @@ import com.cheng.bole.ui.fragment.home.zzdb.ZZDBFragment
import com.cheng.bole.ui.fragment.mine.vip.VipFragment import com.cheng.bole.ui.fragment.mine.vip.VipFragment
import com.cheng.bole.ui.fragment.search.SearchFragment import com.cheng.bole.ui.fragment.search.SearchFragment
import com.cheng.bole.ui.fragment.search.list.SearchListFragment import com.cheng.bole.ui.fragment.search.list.SearchListFragment
import com.example.base.common.RxBus
import com.example.base.decoration.GridSpaceItemDecoration import com.example.base.decoration.GridSpaceItemDecoration
import com.example.base.decoration.SpacesItemDecoration import com.example.base.decoration.SpacesItemDecoration
import com.example.base.extensions.getColor import com.example.base.extensions.getColor
@ -64,7 +66,7 @@ class HomeFragment : ListFragment<FragmentHomeBinding, HomeViewModel, BidItemBea
override fun initData() { override fun initData() {
super.initData() super.initData()
if (UserConfigManager.getBidTypes().isEmpty()) { if (UserConfigManager.getBidTypes().isEmpty()) {
mViewModel.getBidTypeList() mViewModel.getBidTypeList(true)
} else { } else {
menuAdapter.setList(MenuEntity.getHomeMenu()) menuAdapter.setList(MenuEntity.getHomeMenu())
} }
@ -165,5 +167,10 @@ class HomeFragment : ListFragment<FragmentHomeBinding, HomeViewModel, BidItemBea
PublicActivity.start(requireContext(), VipFragment::class.java, Pair("origin", "view_bid")) PublicActivity.start(requireContext(), VipFragment::class.java, Pair("origin", "view_bid"))
} }
} }
val homeRefreshEvent = RxBus.defaultInstance.toObservable(HomeRefreshEvent::class.java).subscribe {
firstLoad()
}
addDisposable(homeRefreshEvent)
} }
} }

View File

@ -26,8 +26,8 @@ class HomeViewModel : ListViewModel<BidItemBean>() {
return response.toListResult() return response.toListResult()
} }
fun getBidTypeList() { fun getBidTypeList(showLoading: Boolean = false) {
showDialog() if (showLoading) showDialog()
launchOnUiTryCatch({ launchOnUiTryCatch({
val response = ApiFactory.apiService.getBidTypeList() val response = ApiFactory.apiService.getBidTypeList()
if (response.status) { if (response.status) {

View File

@ -166,7 +166,7 @@ class OneKeyLoginFragment : BaseFragment<FragmentOnekeyLoginBinding, OnekeyLogin
.setUiErrorListener { //隐私协议未打勾、界面不合规、setLoginOnClickListener抛出异常等情况下的回调 .setUiErrorListener { //隐私协议未打勾、界面不合规、setLoginOnClickListener抛出异常等情况下的回调
mViewModel.dismissDialog() mViewModel.dismissDialog()
} }
.setLoginOnClickListener { view: View? -> .setLoginOnClickListener {
L.d("一键登录按钮 onLoginClick:") L.d("一键登录按钮 onLoginClick:")
if (!binding.cbAgree.isChecked) { if (!binding.cbAgree.isChecked) {
val loginTipDialog = LoginTipDialog.newInstance(1) val loginTipDialog = LoginTipDialog.newInstance(1)
@ -177,7 +177,6 @@ class OneKeyLoginFragment : BaseFragment<FragmentOnekeyLoginBinding, OnekeyLogin
// 抛出异常避免sdk进行后续登录动作否则eAccountLogin会回调onFailed错误 // 抛出异常避免sdk进行后续登录动作否则eAccountLogin会回调onFailed错误
throw IllegalStateException("请先仔细阅读协议并勾选,然后再点击登录") throw IllegalStateException("请先仔细阅读协议并勾选,然后再点击登录")
} }
mViewModel.showDialog()
} }
// 请在预登录成功之后、设置好privacyTv的内容之后再调用eAccountLogin // 请在预登录成功之后、设置好privacyTv的内容之后再调用eAccountLogin
GYManager.getInstance().eAccountLogin(eloginActivityParam, 5000, object : GyCallBack { GYManager.getInstance().eAccountLogin(eloginActivityParam, 5000, object : GyCallBack {
@ -191,7 +190,6 @@ class OneKeyLoginFragment : BaseFragment<FragmentOnekeyLoginBinding, OnekeyLogin
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
} }
} }
override fun onFailed(response: GYResponse) { override fun onFailed(response: GYResponse) {
@ -202,11 +200,9 @@ class OneKeyLoginFragment : BaseFragment<FragmentOnekeyLoginBinding, OnekeyLogin
if (errorCode != -20301) { //关闭一键登录界面不用提示 if (errorCode != -20301) { //关闭一键登录界面不用提示
toast("一键登录失败:$response") toast("一键登录失败:$response")
} }
//...
} catch (e: Exception) { } catch (e: Exception) {
e.printStackTrace() e.printStackTrace()
} }
} }
}) })
} }

View File

@ -30,6 +30,7 @@ class OnekeyLoginViewModel : BaseViewModel() {
} }
fun oneKeyLogin(gyuid: String, token: String) { fun oneKeyLogin(gyuid: String, token: String) {
showDialog()
launchOnUiTryCatch({ launchOnUiTryCatch({
val jsonOneKey = JsonObject() val jsonOneKey = JsonObject()
jsonOneKey.addProperty("gyuid", gyuid) jsonOneKey.addProperty("gyuid", gyuid)
@ -42,7 +43,9 @@ class OnekeyLoginViewModel : BaseViewModel() {
if (response.status) { if (response.status) {
onekeyLoginLiveData.postValue(response.data) onekeyLoginLiveData.postValue(response.data)
} else toast(response.message, true) } else toast(response.message, true)
dismissDialog()
}, { }, {
dismissDialog()
setError(it) setError(it)
L.d(it) L.d(it)
}) })

View File

@ -83,7 +83,7 @@ class MainFragment : BaseFragment<FragmentMainBinding, MainViewModel>() {
} }
when (currentPosition) { when (currentPosition) {
0 -> RxBus.defaultInstance.post(HomeRefreshEvent()) // 0 -> RxBus.defaultInstance.post(HomeRefreshEvent())
} }
lastCheckTime = System.currentTimeMillis() lastCheckTime = System.currentTimeMillis()

View File

@ -66,8 +66,7 @@ class MerchantGoodsListFragment : ListFragment<FragmentMerchantGoodsListBinding,
if (it.auth) { if (it.auth) {
PublicActivity.start(requireActivity(), MerchantGoodsDetailFragment::class.java, Pair("item", item)) PublicActivity.start(requireActivity(), MerchantGoodsDetailFragment::class.java, Pair("item", item))
} else { } else {
// PublicActivity.start(requireContext(), VipFragment::class.java, Pair("origin", "view_goods")) PublicActivity.start(requireContext(), VipFragment::class.java, Pair("origin", "view_goods"))
PublicActivity.start(requireActivity(), MerchantGoodsDetailFragment::class.java, Pair("item", item))
} }
} }
} }

View File

@ -1,11 +1,218 @@
package com.cheng.bole.ui.fragment.mine package com.cheng.bole.ui.fragment.mine
import android.annotation.SuppressLint
import android.text.TextUtils
import android.view.View
import coil.load
import coil.transform.CircleCropTransformation
import com.cheng.bole.R
import com.cheng.bole.bean.UserEntity
import com.cheng.bole.common.Constants
import com.cheng.bole.common.EventConstants
import com.cheng.bole.databinding.FragmentMineBinding import com.cheng.bole.databinding.FragmentMineBinding
import com.cheng.bole.event.MineRefreshEvent
import com.cheng.bole.manager.EventReportManager
import com.cheng.bole.manager.LoginManager
import com.cheng.bole.manager.UserConfigManager
import com.cheng.bole.ui.activity.LoginActivity
import com.cheng.bole.ui.activity.PublicActivity
import com.cheng.bole.ui.dialog.ShareDialog
import com.cheng.bole.ui.fragment.mine.feedback.FeedbackFragment
import com.cheng.bole.ui.fragment.mine.vip.VipFragment
import com.example.base.common.RxBus
import com.example.base.extensions.getColor
import com.example.base.extensions.onClick
import com.example.base.extensions.toast
import com.example.base.ui.BaseFragment import com.example.base.ui.BaseFragment
import com.example.base.utils.ClipboardUtils
/** /**
* 我的 * 我的
*/ */
class MineFragment : BaseFragment<FragmentMineBinding, MineViewModel>() { class MineFragment : BaseFragment<FragmentMineBinding, MineViewModel>() {
private var userInfo: UserEntity? = null
private var isInit = true
private var isEnterprise = false
override fun initView() {
super.initView()
binding.tvVipName.typeface = Constants.ysbth
binding.tvPushCount.typeface = Constants.dDIN_PRO_M
binding.tvFavoriteCount.typeface = Constants.dDIN_PRO_M
binding.tvHistoryCount.typeface = Constants.dDIN_PRO_M
binding.tvOrderCount.typeface = Constants.dDIN_PRO_M
}
override fun onResume() {
super.onResume()
mViewModel.userInfo(isInit)
if (isInit) isInit = false
}
override fun initData() {
super.initData()
}
override fun initListener() {
super.initListener()
binding.btnLogin.onClick {
LoginActivity.start(requireActivity(), Pair("from", 1))
EventReportManager.eventReport(EventConstants.JUMP_TO_LOGIN, "center", "")
}
binding.tvUserId.onClick {
if (!TextUtils.isEmpty(userInfo?.user_id)) {
ClipboardUtils.copyText(userInfo?.user_id)
toast("复制成功")
EventReportManager.eventReport(EventConstants.COPY_USER_ID, "", "")
}
}
binding.tvVipName.onClick {
PublicActivity.start(requireContext(), VipFragment::class.java, Pair("origin", "center"))
EventReportManager.eventReport(EventConstants.JUMP_TO_MEMBER_RECHARGE, "center", "")
}
binding.tvExpireTime.onClick { binding.tvVipName.performClick() }
binding.ivSetting.onClick {
// PublicActivity.start(requireContext(), SettingFragment::class.java)
EventReportManager.eventReport(EventConstants.JUMP_TO_SYSTEM_SETTING, "", "")
}
binding.ivMessage.onClick {
// PublicActivity.start(requireContext(), MessageFragment::class.java)
EventReportManager.eventReport(EventConstants.JUMP_TO_MESSAGE, "", "")
}
binding.layoutPush.onClick {
// PublicActivity.start(requireContext(), SubscribeFragment::class.java)
EventReportManager.eventReport(EventConstants.JUMP_TO_SUBSCRIBE, "center", "")
}
binding.layoutFavorite.onClick {
// PublicActivity.start(requireContext(), FavoriteFragment::class.java)
EventReportManager.eventReport(EventConstants.JUMP_TO_FAVORITE, "", "")
}
binding.layoutHistory.onClick {
// PublicActivity.start(requireContext(), HistoryFragment::class.java)
EventReportManager.eventReport(EventConstants.JUMP_TO_HISTORY, "", "")
}
binding.layoutOrder.onClick {
// PublicActivity.start(requireContext(), OrderFragment::class.java)
EventReportManager.eventReport(EventConstants.JUMP_TO_ORDER, "", "")
}
binding.tvMyPublish.onClick {
}
binding.tvAuth.onClick {
}
binding.tvSeatManage.onClick {
}
binding.tvService.onClick {
mViewModel.wxService()
EventReportManager.eventReport(EventConstants.JUMP_TO_SERVICE, "", "")
}
binding.tvShare.onClick {
if (UserConfigManager.getShareEntity() != null) {
ShareDialog().show(childFragmentManager, "")
}
}
binding.tvFeedback.onClick {
PublicActivity.start(requireContext(), FeedbackFragment::class.java)
EventReportManager.eventReport(EventConstants.JUMP_TO_FEEDBACK, "", "")
}
}
override fun initObserve() {
super.initObserve()
mViewModel.userInfoLiveData.observe(this) {
userInfo = it
UserConfigManager.userInfoLiveData.postValue(it)
setUserInfo()
}
val mineRefreshEvent = RxBus.defaultInstance.toObservable(MineRefreshEvent::class.java).subscribe {
mViewModel.userInfo()
}
addDisposable(mineRefreshEvent)
}
@SuppressLint("SetTextI18n")
private fun setUserInfo() {
if (userInfo == null) return
binding.ivAvatar.load(userInfo?.avater) {
transformations(CircleCropTransformation())
placeholder(R.mipmap.ic_default_avatar)
error(R.mipmap.ic_default_avatar)
}
if (userInfo?.vip == "1") {
isEnterprise = false
binding.tvVipName.text = "开通会员"
binding.tvExpireTime.text = "开通会员,查看海量商机"
binding.tvVipName.setTextColor(getColor(R.color.color_fbcd8c))
binding.tvExpireTime.setTextColor(getColor(R.color.color_bcac8e))
binding.tvExpireTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.mipmap.ic_mine_arrow1, 0)
binding.ivVipBg.setImageResource(R.mipmap.ic_mine_vip_bg1)
} else if (userInfo?.vip == "2") {
isEnterprise = false
binding.tvVipName.text = "普通会员"
binding.tvExpireTime.text = "${userInfo!!.vip_expire} 会员到期"
binding.tvVipName.setTextColor(getColor(R.color.color_fbcd8c))
binding.tvExpireTime.setTextColor(getColor(R.color.color_bcac8e))
binding.tvExpireTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.mipmap.ic_mine_arrow1, 0)
binding.ivVipBg.setImageResource(R.mipmap.ic_mine_vip_bg1)
} else if (userInfo?.vip == "3") {
isEnterprise = false
binding.tvVipName.text = "终生会员"
binding.tvExpireTime.text = "享受永久会员专属权益"
binding.tvVipName.setTextColor(getColor(R.color.color_fbcd8c))
binding.tvExpireTime.setTextColor(getColor(R.color.color_bcac8e))
binding.tvExpireTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.mipmap.ic_mine_arrow1, 0)
binding.ivVipBg.setImageResource(R.mipmap.ic_mine_vip_bg2)
} else if (userInfo?.vip == "12") {
isEnterprise = true
binding.tvVipName.text = "普通企业"
binding.tvExpireTime.text = "${userInfo!!.vip_expire} 会员到期"
binding.tvVipName.setTextColor(getColor(R.color.color_c5ffe1))
binding.tvExpireTime.setTextColor(getColor(R.color.color_a6c8ba))
binding.tvExpireTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.mipmap.ic_mine_arrow2, 0)
binding.ivVipBg.setBackgroundResource(R.mipmap.ic_mine_vip_bg2)
} else if (userInfo?.vip == "11") {
isEnterprise = true
binding.tvVipName.text = "终生企业"
binding.tvExpireTime.text = "享受永久会员专属权益"
binding.tvVipName.setTextColor(getColor(R.color.color_c5ffe1))
binding.tvExpireTime.setTextColor(getColor(R.color.color_a6c8ba))
binding.tvExpireTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.mipmap.ic_mine_arrow2, 0)
binding.ivVipBg.setBackgroundResource(R.mipmap.ic_mine_vip_bg2)
}
binding.tvUsername.text = userInfo?.name
binding.tvUserId.text = "ID:${userInfo?.user_id}"
binding.btnLogin.visibility = if (LoginManager.isLogin()) View.GONE else View.VISIBLE
binding.tvSeatManage.visibility = if (isEnterprise) View.VISIBLE else View.GONE
}
} }

View File

@ -1,6 +1,8 @@
package com.cheng.bole.ui.fragment.mine package com.cheng.bole.ui.fragment.mine
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import com.cheng.bole.bean.UserEntity
import com.cheng.bole.bean.WxServiceEntity
import com.cheng.bole.common.Constants import com.cheng.bole.common.Constants
import com.cheng.bole.net.ApiFactory import com.cheng.bole.net.ApiFactory
import com.example.base.extensions.toast import com.example.base.extensions.toast
@ -12,7 +14,7 @@ import com.tencent.mm.opensdk.modelbiz.WXOpenCustomerServiceChat
import com.tencent.mm.opensdk.openapi.WXAPIFactory import com.tencent.mm.opensdk.openapi.WXAPIFactory
class MineViewModel : BaseViewModel() { class MineViewModel : BaseViewModel() {
val userInfoLiveData = MutableLiveData<com.cheng.bole.bean.UserEntity>() val userInfoLiveData = MutableLiveData<UserEntity>()
fun userInfo(showLoading: Boolean = false) { fun userInfo(showLoading: Boolean = false) {
if (showLoading) showDialog() if (showLoading) showDialog()
@ -46,7 +48,7 @@ class MineViewModel : BaseViewModel() {
}) })
} }
private fun contactClientService(data: com.cheng.bole.bean.WxServiceEntity) { private fun contactClientService(data: WxServiceEntity) {
val api = WXAPIFactory.createWXAPI(Utils.getApp(), Constants.WechatAppId) val api = WXAPIFactory.createWXAPI(Utils.getApp(), Constants.WechatAppId)
if (!api!!.isWXAppInstalled) { if (!api!!.isWXAppInstalled) {
toast("未安装微信客户端") toast("未安装微信客户端")

View File

@ -4,6 +4,8 @@ import android.annotation.SuppressLint
import android.text.Editable import android.text.Editable
import android.text.TextUtils import android.text.TextUtils
import android.text.TextWatcher import android.text.TextWatcher
import android.view.ViewTreeObserver
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.GridLayoutManager
import com.cheng.bole.R import com.cheng.bole.R
import com.cheng.bole.bean.UploadFileEntity import com.cheng.bole.bean.UploadFileEntity
@ -11,6 +13,7 @@ import com.cheng.bole.common.Constants
import com.cheng.bole.databinding.FragmentFeedbackBinding import com.cheng.bole.databinding.FragmentFeedbackBinding
import com.cheng.bole.ui.fragment.photo.AddImageAdapter import com.cheng.bole.ui.fragment.photo.AddImageAdapter
import com.cheng.bole.utils.PermissionUtils import com.cheng.bole.utils.PermissionUtils
import com.efs.sdk.memleaksdk.monitor.internal.bi
import com.example.base.extensions.onClick import com.example.base.extensions.onClick
import com.example.base.extensions.toast import com.example.base.extensions.toast
import com.example.base.ui.BaseFragment import com.example.base.ui.BaseFragment
@ -39,11 +42,23 @@ class FeedbackFragment : BaseFragment<FragmentFeedbackBinding, FeedbackViewModel
super.initView() super.initView()
mTitleBar?.background = null mTitleBar?.background = null
binding.tvTitle.typeface = Constants.pmzdbt
binding.etFeedbackContent.addTextChangedListener(textWatcher) binding.etFeedbackContent.addTextChangedListener(textWatcher)
binding.rvImage.layoutManager = GridLayoutManager(context, 3) binding.rvImage.layoutManager = GridLayoutManager(context, 3)
imageAdapter.selectMax = 3 imageAdapter.selectMax = 3
binding.rvImage.adapter = imageAdapter binding.rvImage.adapter = imageAdapter
binding.mTitleBar.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
val lp = binding.tvTitle.layoutParams as ConstraintLayout.LayoutParams
lp.topMargin = binding.mTitleBar.height
binding.tvTitle.layoutParams = lp
binding.mTitleBar.viewTreeObserver.removeOnGlobalLayoutListener(this)
}
})
} }
override fun initData() { override fun initData() {
@ -66,7 +81,7 @@ class FeedbackFragment : BaseFragment<FragmentFeedbackBinding, FeedbackViewModel
toast("请输入详情内容") toast("请输入详情内容")
return@onClick return@onClick
} }
if (selectImg.isEmpty() && selectedPhotoList.size > 0) { if (selectImg.isEmpty() && selectedPhotoList.isNotEmpty()) {
mViewModel.upload(requireContext(), selectedPhotoList) mViewModel.upload(requireContext(), selectedPhotoList)
} else { } else {
commit() commit()

View File

@ -46,7 +46,7 @@ import java.text.DecimalFormat
class VipFragment : BaseFragment<FragmentVipBinding, VipViewModel>() { class VipFragment : BaseFragment<FragmentVipBinding, VipViewModel>() {
private val origin by lazy { arguments?.getString("origin") ?: "center" } private val origin by lazy { arguments?.getString("origin") ?: "center" }
private val isGuide by lazy { origin == "guide" } private val isGuide by lazy { origin == "bootpage" }
private lateinit var api: IWXAPI private lateinit var api: IWXAPI
private var isAgree = false private var isAgree = false

View File

@ -12,7 +12,6 @@ import com.cheng.bole.R
import com.cheng.bole.common.Constants import com.cheng.bole.common.Constants
import com.cheng.bole.common.EventConstants import com.cheng.bole.common.EventConstants
import com.cheng.bole.databinding.FragmentPushBinding import com.cheng.bole.databinding.FragmentPushBinding
import com.cheng.bole.event.HomeRefreshEvent
import com.cheng.bole.event.SubscriptionEvent import com.cheng.bole.event.SubscriptionEvent
import com.cheng.bole.manager.EventReportManager import com.cheng.bole.manager.EventReportManager
import com.cheng.bole.manager.UserConfigManager import com.cheng.bole.manager.UserConfigManager
@ -108,15 +107,6 @@ class PushFragment : BaseFragment<FragmentPushBinding, PushViewModel>() {
mViewModel.getSubscriptionList() mViewModel.getSubscriptionList()
} }
val homeRefreshEvent = RxBus.defaultInstance.toObservable(HomeRefreshEvent::class.java).subscribe {
if (UserConfigManager.getBidTypes().isEmpty()) {
mViewModel.getBidTypeList()
} else {
mViewModel.getSubscriptionList()
}
}
addDisposable(homeRefreshEvent)
val subscriptionEvent = RxBus.defaultInstance.toObservable(SubscriptionEvent::class.java).subscribe { val subscriptionEvent = RxBus.defaultInstance.toObservable(SubscriptionEvent::class.java).subscribe {
if (UserConfigManager.getBidTypes().isEmpty()) { if (UserConfigManager.getBidTypes().isEmpty()) {
mViewModel.getBidTypeList() mViewModel.getBidTypeList()

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shape_10466afd_cor4" android:state_checked="true" /> <item android:drawable="@drawable/shape_feedback_checked" android:state_checked="true" />
<item android:drawable="@drawable/shape_cccccc_line_cor4" android:state_checked="false" /> <item android:drawable="@drawable/shape_f6f6f6_cor4" android:state_checked="false" />
</selector> </selector>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/color_3bbf0f" />
<size
android:width="@dimen/dp_6"
android:height="@dimen/dp_6" />
</shape>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/color_ff592b" />
<size
android:width="@dimen/dp_6"
android:height="@dimen/dp_6" />
</shape>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#F5F7FC" />
<corners
android:topLeftRadius="@dimen/dp_16"
android:topRightRadius="@dimen/dp_16" />
</shape>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="@dimen/dp_4" /> <corners android:radius="@dimen/dp_4" />
<solid android:color="#1a466afd" /> <solid android:color="#F3F7FF" />
<stroke <stroke
android:width="@dimen/dp_1" android:width="@dimen/dp_1"
android:color="@color/color_125ffe" /> android:color="@color/color_125ffe" />

View File

@ -1,38 +1,69 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent">
android:background="@color/white">
<com.example.base.widget.TitleBar
android:id="@+id/mTitleBar"
style="@style/Custom.TitleBar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navigationIcon="@drawable/ic_back_black"
app:title="意见反馈" />
<androidx.core.widget.NestedScrollView <androidx.core.widget.NestedScrollView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@id/layout_bottom" app:layout_constraintBottom_toTopOf="@id/layout_bottom"
app:layout_constraintTop_toBottomOf="@id/mTitleBar"> app:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_top_bg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_20"
android:src="@mipmap/ic_feedback_top_bg"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_36"
android:layout_marginTop="88dp"
android:text="意见反馈"
android:textColor="#000511"
android:textSize="@dimen/sp_30"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.lihang.ShadowLayout
android:id="@+id/layout_type"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_9"
android:layout_marginTop="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_9"
app:hl_cornerRadius="@dimen/dp_12"
app:hl_shadowColor="#0d4a4f5b"
app:hl_shadowLimit="@dimen/dp_7"
app:layout_constraintTop_toBottomOf="@id/tv_title">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="@dimen/dp_16"> android:paddingStart="@dimen/dp_12"
android:paddingTop="@dimen/dp_16"
android:paddingEnd="@dimen/dp_12"
android:paddingBottom="@dimen/dp_16">
<TextView <TextView
android:id="@+id/tv_feedback_type_title" android:id="@+id/tv_feedback_type_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="请选择您要反馈的问题" android:fontFamily="sans-serif-medium"
android:text="选择反馈类型"
android:textColor="@color/color_1a1a1a" android:textColor="@color/color_1a1a1a"
android:textSize="@dimen/sp_14" android:textSize="@dimen/sp_16"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
@ -56,8 +87,9 @@
<RadioButton <RadioButton
android:id="@+id/rg_1" android:id="@+id/rg_1"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="@dimen/dp_32" android:layout_height="@dimen/dp_32"
android:layout_weight="1"
android:background="@drawable/selector_feedback_type_bg" android:background="@drawable/selector_feedback_type_bg"
android:button="@null" android:button="@null"
android:checked="true" android:checked="true"
@ -70,9 +102,10 @@
<RadioButton <RadioButton
android:id="@+id/rg_2" android:id="@+id/rg_2"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="@dimen/dp_32" android:layout_height="@dimen/dp_32"
android:layout_marginStart="@dimen/dp_12" android:layout_marginStart="@dimen/dp_12"
android:layout_weight="1"
android:background="@drawable/selector_feedback_type_bg" android:background="@drawable/selector_feedback_type_bg"
android:button="@null" android:button="@null"
android:gravity="center" android:gravity="center"
@ -84,9 +117,10 @@
<RadioButton <RadioButton
android:id="@+id/rg_3" android:id="@+id/rg_3"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="@dimen/dp_32" android:layout_height="@dimen/dp_32"
android:layout_marginStart="@dimen/dp_12" android:layout_marginStart="@dimen/dp_12"
android:layout_weight="1"
android:background="@drawable/selector_feedback_type_bg" android:background="@drawable/selector_feedback_type_bg"
android:button="@null" android:button="@null"
android:gravity="center" android:gravity="center"
@ -96,18 +130,38 @@
android:textColor="@drawable/selector_feedback_text_color" android:textColor="@drawable/selector_feedback_text_color"
android:textSize="@dimen/sp_14" /> android:textSize="@dimen/sp_14" />
</RadioGroup> </RadioGroup>
</androidx.constraintlayout.widget.ConstraintLayout>
</com.lihang.ShadowLayout>
<com.lihang.ShadowLayout
android:id="@+id/layout_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_9"
android:layout_marginEnd="@dimen/dp_9"
app:hl_cornerRadius="@dimen/dp_12"
app:hl_shadowColor="#0d4a4f5b"
app:hl_shadowLimit="@dimen/dp_7"
app:layout_constraintTop_toBottomOf="@id/layout_type">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/dp_12"
android:paddingTop="@dimen/dp_16"
android:paddingEnd="@dimen/dp_12"
android:paddingBottom="@dimen/dp_16">
<TextView <TextView
android:id="@+id/tv_feedback_content_title" android:id="@+id/tv_feedback_content_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_20" android:fontFamily="sans-serif-medium"
android:text="问题描述" android:text="问题描述"
android:textColor="@color/color_1a1a1a" android:textColor="@color/color_1a1a1a"
android:textSize="@dimen/sp_14" android:textSize="@dimen/sp_16"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/rg_feedback_type" /> app:layout_constraintTop_toTopOf="parent" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -123,16 +177,12 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_16" android:layout_marginTop="@dimen/dp_16"
android:background="@drawable/shape_dfdfdf_line_cor8" android:background="@null"
android:gravity="start" android:gravity="start"
android:hint="请输入详情内容" android:hint="请写下您遇到的问题或宝贵建议~"
android:inputType="textMultiLine" android:inputType="textMultiLine"
android:maxLength="200" android:maxLength="200"
android:minHeight="@dimen/dp_150" android:minHeight="@dimen/dp_150"
android:paddingStart="@dimen/dp_12"
android:paddingTop="@dimen/dp_14"
android:paddingEnd="@dimen/dp_12"
android:paddingBottom="@dimen/dp_14"
android:textColor="@color/color_1a1a1a" android:textColor="@color/color_1a1a1a"
android:textColorHint="@color/color_bcbcbc" android:textColorHint="@color/color_bcbcbc"
android:textSize="@dimen/sp_14" android:textSize="@dimen/sp_14"
@ -144,50 +194,71 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_8" android:layout_marginEnd="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_8" android:layout_marginBottom="@dimen/dp_8"
android:text="0/200" android:text="0/500"
android:textColor="@color/color_999999" android:textColor="@color/color_999999"
android:textSize="@dimen/sp_10" android:textSize="@dimen/sp_10"
app:layout_constraintBottom_toBottomOf="@id/et_feedback_content" app:layout_constraintBottom_toBottomOf="@id/et_feedback_content"
app:layout_constraintEnd_toEndOf="@id/et_feedback_content" /> app:layout_constraintEnd_toEndOf="@id/et_feedback_content" />
<TextView <View
android:id="@+id/tv_feedback_image_title" android:id="@+id/divider"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="@dimen/dp_2"
android:layout_marginTop="@dimen/dp_20" android:layout_marginTop="@dimen/dp_16"
android:text="上传图片" android:background="@drawable/shape_dde2eb_dash_divider_h"
android:textColor="@color/color_1a1a1a"
android:textSize="@dimen/sp_14"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/et_feedback_content" /> app:layout_constraintTop_toBottomOf="@id/et_feedback_content" />
<TextView <TextView
android:id="@+id/tv_image_tip"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_14"
android:text="选填最多可上传3张" android:text="选填最多可上传3张"
android:textColor="@color/color_999999" android:textColor="@color/color_999999"
android:textSize="@dimen/sp_10" android:textSize="@dimen/sp_10"
app:layout_constraintBottom_toBottomOf="@id/tv_feedback_image_title" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintStart_toEndOf="@id/tv_feedback_image_title" app:layout_constraintTop_toBottomOf="@id/divider" />
app:layout_constraintTop_toTopOf="@id/tv_feedback_image_title" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_image" android:id="@+id/rv_image"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_16" android:layout_marginTop="@dimen/dp_16"
app:layout_constraintTop_toBottomOf="@id/tv_feedback_image_title" /> app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:layout_constraintTop_toBottomOf="@id/tv_image_tip"
app:spanCount="3"
tools:itemCount="1"
tools:listitem="@layout/listitem_add_img" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.lihang.ShadowLayout>
<com.lihang.ShadowLayout
android:id="@+id/layout_contacts"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_9"
android:layout_marginEnd="@dimen/dp_9"
app:hl_cornerRadius="@dimen/dp_12"
app:hl_shadowColor="#0d4a4f5b"
app:hl_shadowLimit="@dimen/dp_7"
app:layout_constraintTop_toBottomOf="@id/layout_content">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/dp_12"
android:paddingTop="@dimen/dp_16"
android:paddingEnd="@dimen/dp_12"
android:paddingBottom="@dimen/dp_16">
<TextView <TextView
android:id="@+id/tv_contact_info_title" android:id="@+id/tv_contact_info_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_20" android:fontFamily="sans-serif-medium"
android:text="联系方式" android:text="联系方式"
android:textColor="@color/color_1a1a1a" android:textColor="@color/color_1a1a1a"
android:textSize="@dimen/sp_14" android:textSize="@dimen/sp_16"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/rv_image" /> app:layout_constraintTop_toBottomOf="@id/rv_image" />
@ -204,19 +275,20 @@
<androidx.appcompat.widget.AppCompatEditText <androidx.appcompat.widget.AppCompatEditText
android:id="@+id/et_contact_info" android:id="@+id/et_contact_info"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="@dimen/dp_48"
android:layout_marginTop="@dimen/dp_16" android:layout_marginTop="@dimen/dp_16"
android:background="@drawable/shape_dfdfdf_line_cor8" android:background="@drawable/shape_dfdfdf_line_cor8"
android:hint="请输入您的联系方式" android:hint="请输入联系方式"
android:lines="1" android:lines="1"
android:paddingStart="@dimen/dp_12" android:paddingStart="@dimen/dp_12"
android:paddingTop="@dimen/dp_15"
android:paddingEnd="@dimen/dp_12" android:paddingEnd="@dimen/dp_12"
android:paddingBottom="@dimen/dp_15" android:singleLine="true"
android:textColor="@color/color_1a1a1a" android:textColor="@color/color_1a1a1a"
android:textColorHint="@color/color_bcbcbc" android:textColorHint="@color/color_bcbcbc"
android:textSize="@dimen/sp_14" android:textSize="@dimen/sp_14"
app:layout_constraintTop_toBottomOf="@id/tv_contact_info_title" /> app:layout_constraintTop_toBottomOf="@id/tv_contact_info_title" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.lihang.ShadowLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>
@ -235,15 +307,23 @@
android:id="@+id/btn_next" android:id="@+id/btn_next"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/dp_46" android:layout_height="@dimen/dp_46"
android:fontFamily="sans-serif-medium"
android:text="提交" android:text="提交"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="@dimen/sp_15" android:textSize="@dimen/sp_16"
android:textStyle="bold" app:csb_cornerRadius="@dimen/dp_10"
app:csb_activeEnable="true"
app:csb_cornerRadius="@dimen/dp_50"
app:csb_fillColor="@color/color_125ffe" app:csb_fillColor="@color/color_125ffe"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<com.example.base.widget.TitleBar
android:id="@+id/mTitleBar"
style="@style/Custom.TitleBar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navigationIcon="@drawable/ic_back_black"
app:title=" " />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -1,7 +1,378 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent">
android:orientation="vertical">
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:src="@mipmap/ic_mine_top_bg"
app:layout_constraintDimensionRatio="h,1125:1080" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_setting"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="?actionBarSize"
android:layout_marginEnd="@dimen/dp_16"
android:src="@mipmap/ic_mine_setting"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_20"
android:src="@mipmap/ic_mine_message"
app:layout_constraintEnd_toStartOf="@id/iv_setting"
app:layout_constraintTop_toTopOf="@id/iv_setting" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_avatar"
android:layout_width="@dimen/dp_68"
android:layout_height="@dimen/dp_68"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_3"
android:padding="@dimen/dp_2"
android:src="@mipmap/ic_default_avatar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_setting" />
<TextView
android:id="@+id/tv_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_14"
android:fontFamily="sans-serif-medium"
android:text="游客"
android:textColor="@color/color_1a1a1a"
android:textSize="@dimen/sp_18"
app:layout_constraintBottom_toTopOf="@id/tv_user_id"
app:layout_constraintStart_toEndOf="@id/iv_avatar"
app:layout_constraintTop_toTopOf="@id/iv_avatar" />
<TextView
android:id="@+id/tv_user_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableEnd="@mipmap/ic_copy_id"
android:drawablePadding="@dimen/dp_6"
android:gravity="center"
android:text="ID:00001"
android:textColor="#5E626A"
android:textSize="@dimen/sp_14"
app:layout_constraintBottom_toBottomOf="@id/iv_avatar"
app:layout_constraintStart_toStartOf="@id/tv_username"
app:layout_constraintTop_toBottomOf="@id/tv_username" />
<com.cheng.bole.widget.CommonShapeView
android:id="@+id/btn_login"
android:layout_width="@dimen/dp_76"
android:layout_height="@dimen/dp_32"
android:text="点击登录"
android:textColor="@color/white"
android:textSize="@dimen/sp_14"
app:csb_cornerPosition="topLeft|bottomLeft"
app:csb_cornerRadius="@dimen/dp_25"
app:csb_fillColor="@color/color_417ffe"
app:layout_constraintBottom_toBottomOf="@id/iv_avatar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/iv_avatar" />
<LinearLayout
android:id="@+id/layout_push"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_16"
android:gravity="center"
android:orientation="vertical"
android:paddingTop="@dimen/dp_4"
android:paddingBottom="@dimen/dp_4"
app:layout_constraintEnd_toStartOf="@id/layout_favorite"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_avatar">
<TextView
android:id="@+id/tv_push_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:textColor="@color/color_1a1a1a"
android:textSize="@dimen/sp_20" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_2"
android:text="推送"
android:textColor="#8F95A2"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<LinearLayout
android:id="@+id/layout_favorite"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_16"
android:gravity="center"
android:orientation="vertical"
android:paddingTop="@dimen/dp_4"
android:paddingBottom="@dimen/dp_4"
app:layout_constraintEnd_toStartOf="@id/layout_history"
app:layout_constraintStart_toEndOf="@id/layout_push"
app:layout_constraintTop_toBottomOf="@id/iv_avatar">
<TextView
android:id="@+id/tv_favorite_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:textColor="@color/color_1a1a1a"
android:textSize="@dimen/sp_20" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_2"
android:text="收藏"
android:textColor="#8F95A2"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<LinearLayout
android:id="@+id/layout_history"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_16"
android:gravity="center"
android:orientation="vertical"
android:paddingTop="@dimen/dp_4"
android:paddingBottom="@dimen/dp_4"
app:layout_constraintEnd_toStartOf="@id/layout_order"
app:layout_constraintStart_toEndOf="@id/layout_favorite"
app:layout_constraintTop_toBottomOf="@id/iv_avatar">
<TextView
android:id="@+id/tv_history_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:textColor="@color/color_1a1a1a"
android:textSize="@dimen/sp_20" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_2"
android:text="足迹"
android:textColor="#8F95A2"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<LinearLayout
android:id="@+id/layout_order"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_16"
android:layout_marginEnd="@dimen/dp_16"
android:gravity="center"
android:orientation="vertical"
android:paddingTop="@dimen/dp_4"
android:paddingBottom="@dimen/dp_4"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/layout_history"
app:layout_constraintTop_toBottomOf="@id/iv_avatar">
<TextView
android:id="@+id/tv_order_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:textColor="@color/color_1a1a1a"
android:textSize="@dimen/sp_20" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_2"
android:text="订单"
android:textColor="#8F95A2"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_vip_bg"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_12"
android:layout_marginEnd="@dimen/dp_16"
android:src="@mipmap/ic_mine_vip_bg1"
app:layout_constraintDimensionRatio="h,1029:342"
app:layout_constraintTop_toBottomOf="@id/layout_push" />
<TextView
android:id="@+id/tv_vip_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_20"
android:layout_marginBottom="@dimen/dp_2"
android:text="开通会员"
android:textColor="@color/color_fbcd8c"
android:textSize="@dimen/sp_16"
app:layout_constraintBottom_toTopOf="@id/tv_expire_time"
app:layout_constraintStart_toStartOf="@id/iv_vip_bg" />
<TextView
android:id="@+id/tv_expire_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_2"
android:drawableEnd="@mipmap/ic_mine_arrow1"
android:gravity="center"
android:text="开通会员,查看海量商机"
android:textColor="@color/color_bcac8e"
android:textSize="@dimen/sp_12"
app:layout_constraintBottom_toBottomOf="@id/iv_vip_bg"
app:layout_constraintStart_toStartOf="@id/tv_vip_name"
app:layout_constraintTop_toTopOf="@id/iv_vip_bg" />
<FrameLayout
android:id="@+id/layout_menus"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_13"
android:background="@drawable/shape_f5f7fc_top_cor16"
android:padding="@dimen/dp_16"
app:layout_constraintTop_toBottomOf="@id/tv_expire_time">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shape_white_cor10">
<TextView
android:id="@+id/tv_my_publish"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_60"
android:drawableStart="@mipmap/ic_mine_icon1"
android:drawableEnd="@mipmap/ic_arrow_dp22"
android:drawablePadding="@dimen/dp_10"
android:gravity="center_vertical"
android:paddingStart="@dimen/dp_14"
android:paddingEnd="@dimen/dp_10"
android:text="我的发布"
android:textColor="@color/color_222222"
android:textSize="@dimen/sp_15"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_auth"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_60"
android:drawableStart="@mipmap/ic_mine_icon2"
android:drawableEnd="@mipmap/ic_arrow_dp22"
android:drawablePadding="@dimen/dp_10"
android:gravity="center_vertical"
android:paddingStart="@dimen/dp_14"
android:paddingEnd="@dimen/dp_10"
android:text="企业认证"
android:textColor="@color/color_222222"
android:textSize="@dimen/sp_15"
app:layout_constraintTop_toBottomOf="@id/tv_my_publish" />
<TextView
android:id="@+id/tv_auth_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_35"
android:drawableStart="@drawable/shape_auth_fail_dot"
android:drawablePadding="@dimen/dp_6"
android:text="认证失败"
android:textColor="@color/color_ff592b"
app:layout_constraintBottom_toBottomOf="@id/tv_auth"
app:layout_constraintEnd_toEndOf="@id/tv_auth"
app:layout_constraintTop_toTopOf="@id/tv_auth" />
<TextView
android:id="@+id/tv_seat_manage"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_60"
android:drawableStart="@mipmap/ic_mine_icon6"
android:drawableEnd="@mipmap/ic_arrow_dp22"
android:drawablePadding="@dimen/dp_10"
android:gravity="center_vertical"
android:paddingStart="@dimen/dp_14"
android:paddingEnd="@dimen/dp_10"
android:text="企业账号管理"
android:textColor="@color/color_222222"
android:textSize="@dimen/sp_15"
android:visibility="gone"
app:layout_constraintTop_toBottomOf="@id/tv_auth" />
<TextView
android:id="@+id/tv_service"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_60"
android:drawableStart="@mipmap/ic_mine_icon3"
android:drawableEnd="@mipmap/ic_arrow_dp22"
android:drawablePadding="@dimen/dp_10"
android:gravity="center_vertical"
android:paddingStart="@dimen/dp_14"
android:paddingEnd="@dimen/dp_10"
android:text="联系客服"
android:textColor="@color/color_222222"
android:textSize="@dimen/sp_15"
app:layout_constraintTop_toBottomOf="@id/tv_seat_manage" />
<TextView
android:id="@+id/tv_share"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_60"
android:drawableStart="@mipmap/ic_mine_icon4"
android:drawableEnd="@mipmap/ic_arrow_dp22"
android:drawablePadding="@dimen/dp_10"
android:gravity="center_vertical"
android:paddingStart="@dimen/dp_14"
android:paddingEnd="@dimen/dp_10"
android:text="分享APP"
android:textColor="@color/color_222222"
android:textSize="@dimen/sp_15"
app:layout_constraintTop_toBottomOf="@id/tv_service" />
<TextView
android:id="@+id/tv_feedback"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_60"
android:drawableStart="@mipmap/ic_mine_icon5"
android:drawableEnd="@mipmap/ic_arrow_dp22"
android:drawablePadding="@dimen/dp_10"
android:gravity="center_vertical"
android:paddingStart="@dimen/dp_14"
android:paddingEnd="@dimen/dp_10"
android:text="意见反馈"
android:textColor="@color/color_222222"
android:textSize="@dimen/sp_15"
app:layout_constraintTop_toBottomOf="@id/tv_share" />
</androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 516 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1000 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1002 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 946 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 664 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1002 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 920 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -89,4 +89,10 @@
<color name="color_e6f6ff">#E6F6FF</color> <color name="color_e6f6ff">#E6F6FF</color>
<color name="color_f4f6fa">#F4F6FA</color> <color name="color_f4f6fa">#F4F6FA</color>
<color name="color_585d6c">#585D6C</color> <color name="color_585d6c">#585D6C</color>
<color name="color_417ffe">#417FFE</color>
<color name="color_ff592b">#FF592B</color>
<color name="color_fbcd8c">#FBCD8C</color>
<color name="color_bcac8e">#BCAC8E</color>
<color name="color_c5ffe1">#C5FFE1</color>
<color name="color_a6c8ba">#A6C8BA</color>
</resources> </resources>