1.新增首页模块

This commit is contained in:
zhanglei
2026-02-10 11:55:42 +08:00
parent 0d539aeef0
commit dad08d5ea4
60 changed files with 2223 additions and 58 deletions
-1
View File
@@ -89,7 +89,6 @@ android {
main {
jniLibs.srcDirs = ['libs']
res.srcDirs = [
'src/main/res-login',
'src/main/res-health-check',
'src/main/res-health-record',
// 'src/main/res-intervention',
+14 -1
View File
@@ -184,8 +184,21 @@
<activity
android:name="com.sw.healthyclients.ui.guidance.ViewLocationActivity"
android:screenOrientation="portrait" />
<activity android:name=".ui.activity.SimulateUserActivity"
<activity
android:name=".ui.activity.SimulateUserActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.home.HomeNoticeListActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.home.HomeNoticeDetailActivity"
android:screenOrientation="portrait"/>
<activity android:name=".ui.activity.home.HomeBannerDetailActivity"
android:screenOrientation="portrait"/>
<activity android:name=".ui.activity.home.MyBankLActivity"
android:screenOrientation="portrait"/>
<activity android:name=".ui.activity.EmptyActivity"
android:screenOrientation="portrait"/>
</application>
+6
View File
@@ -9,6 +9,12 @@
"tabs": [
{
"tabName": "首页",
"tabTag": "key_home_fragment",
"iconNormal": "main_home_tab_home_normal",
"iconSelected": "main_home_tab_home_selected"
},
{
"tabName": "咨询",
"tabTag": "key_guidance_fragment",
"iconNormal": "main_home_tab_index_normal",
"iconSelected": "main_home_tab_index_selected"
@@ -26,9 +26,11 @@ import com.xjjk.healthyclients.base.BaseVMBActivity
import com.xjjk.healthyclients.bean.CardInfoBean
import com.xjjk.healthyclients.bottomtab.HomeBottomTabLayout
import com.xjjk.healthyclients.databinding.ActivityMainBinding
import com.xjjk.healthyclients.event.HomeTabChangeEvent
import com.xjjk.healthyclients.event.RefreshEvent
import com.xjjk.healthyclients.fragment.EmergencyFragment
import com.xjjk.healthyclients.fragment.GuidanceFragment
import com.xjjk.healthyclients.fragment.HomeFragment
import com.xjjk.healthyclients.fragment.MonitorFragment
import com.xjjk.healthyclients.superfuntion.loginIm
import com.xjjk.healthyclients.superfuntion.startAllDoctorActivity
@@ -48,6 +50,7 @@ class MainActivity : BaseVMBActivity<MainViewModel, ActivityMainBinding>(R.layou
HomeBottomTabLayout.HomeBottomTabLayoutCallback {
//每个tab对应的tag,和json配置文件中保持一致
val TAG_HOME = "key_home_fragment"
val TAG_GUIDANCE = "key_guidance_fragment"
val TAG_EMERGENCY = "key_emergency_fragment"
val TAG_MONITOR = "key_monitor_fragment"
@@ -275,9 +278,9 @@ class MainActivity : BaseVMBActivity<MainViewModel, ActivityMainBinding>(R.layou
override fun getFragmentByTag(tabTag: String): Fragment? {
when (tabTag) {
// TAG_GUIDANCE -> {
// return HomeFragment()
// }
TAG_HOME -> {
return HomeFragment()
}
TAG_GUIDANCE -> {
return GuidanceFragment()
@@ -310,6 +313,11 @@ class MainActivity : BaseVMBActivity<MainViewModel, ActivityMainBinding>(R.layou
return null
}
fun changeTab(index: Int) {
mBinding.mainTabLayout.changeTab(index)
}
override fun transparentStatusBar(): Boolean {
return true
}
@@ -403,6 +411,10 @@ class MainActivity : BaseVMBActivity<MainViewModel, ActivityMainBinding>(R.layou
mViewModel.selectTfHelper(event.doctor)
println("头像id"+doctorId)
}
}else if (event is HomeTabChangeEvent) {
if (event.index >= 0){
changeTab(event.index)
}
}
}
} catch (e: Exception) {
@@ -0,0 +1,18 @@
package com.xjjk.healthyclients.adapter.home
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.module.LoadMoreModule
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.sw.healthyclients.utils.DateUtil
import com.xjjk.healthyclients.R
import com.xjjk.healthyclients.bean.home.HomeNoticeBean
class HomeMessageAdapter :
BaseQuickAdapter<HomeNoticeBean, BaseViewHolder>(R.layout.item_home_message), LoadMoreModule {
override fun convert(holder: BaseViewHolder, item: HomeNoticeBean) {
holder.setText(R.id.tv_title, item.title)
.setText(R.id.tv_date, DateUtil.dateStrToStrMiddle(item.createTime))
}
}
@@ -350,12 +350,6 @@ abstract class BaseVMBFragment<VM : BaseViewModel, B : ViewDataBinding>(private
activity?.startActivity(intent)
}
/**
* 历史遗留方法,懒得改以前的了,新页面无视即可
*/
open fun getStatusbarStyle(): Int {
return 0
} // 0 主题色+白字 1白底黑字
private fun createDialog() {
dialog = LoadingDialog(
@@ -0,0 +1,51 @@
package com.xjjk.healthyclients.bean.home
data class HomeNoticeBean(
val content: String,
val createBy: String,
val createTime: String,
val delFlag: String,
val departScopeList: List<DepartScope>,
val endTime: String,
val id: String,
val noticeStatus: Int,
val orgCode: String,
val scopeType: Int,
val startTime: String,
val title: String,
val updateBy: String,
val updateTime: String,
val userScopeList: List<DepartScope>,
)
data class DepartScope(
val id: String,
val noticeId: String,
val record: String,
val scopeId: String,
val type: Int
)
data class HomeBannerBean(
val createBy: String,
val createTime: String,
val delFlag: String,
val endTime: String,
val id: String,
val isLongTermEffective: String,
val jumpUrl: String,
val memo: String,
val name: String,
val pageNo: Int,
val pageSize: Int,
val photoUrl: String?,
val showLocation: String,
val sort: Int,
val startTime: String,
val status: String,
val tfJump: String,
val updateBy: String,
val updateTime: String
)
@@ -0,0 +1,70 @@
package com.xjjk.healthyclients.bean.user
/**
* 我的积分
*/
data class UserPointBean(
val addPointsSum: Int,
val exchangePointsSum: Int,
val points: Int
)
data class PointDetailBean<T>(
val current: Int,
val pages: Int,
val records: MutableList<T>?,
val size: Int,
val total: Int
)
/**
* 积分明细
*/
data class PointRecord(
val businessInfo: String,
val createMonthStr: String,
val createTime: String,
val id: Int,
val points: Int,
val remark: String
)
/**
* 积分榜
*/
data class PointRank(
val avatar: String,
val deptName: String,
val orgName: String,
val pointSum: Int,
val ranking: Int,
val realName: String,
val sex: Int,
val userId: String
)
/**
* 积分打卡-入参
*/
data class CheckInBean(
val businessId: Int,
val points: Int,
val remark: String,
val sourceType: String,
val userId: String
)
/**
* 积分任务
*/
data class PointsTask(
val clockInStatus: Int,
val frequency: Int,
val icon: String,
val points: Int,
val ruleCategory: Int,
val ruleDesc: String,
val ruleId: Int
)
@@ -0,0 +1,67 @@
package com.xjjk.healthyclients.data.api
import com.xjjk.healthyclients.bean.home.HomeBannerBean
import com.xjjk.healthyclients.bean.home.HomeNoticeBean
import com.xjjk.healthyclients.bean.user.CheckInBean
import com.xjjk.healthyclients.bean.user.PointDetailBean
import com.xjjk.healthyclients.bean.user.PointRank
import com.xjjk.healthyclients.bean.user.PointRecord
import com.xjjk.healthyclients.bean.user.PointsTask
import com.xjjk.healthyclients.bean.user.UserPointBean
import com.xjjk.healthyclients.data.bean.ApiResponse
import okhttp3.RequestBody
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.POST
import retrofit2.http.QueryMap
interface HomeApi {
/**
* 获取首页消息通知列表
*/
@GET("/health-system/app/sys/message/notice/list")
suspend fun getHomeNoticeList(@QueryMap params: MutableMap<String, Any?>): ApiResponse<MutableList<HomeNoticeBean>>
/**
* 消息通知-通过id查询
*/
@GET("/health-system/app/sys/message/notice/queryById")
suspend fun getHomeNoticeDetail(@QueryMap params: MutableMap<String, Any?>): ApiResponse<HomeNoticeBean>
/**
* 首页banner
*/
@GET("/sys/api/banner/selectBannerList")
suspend fun getHomeBannerList(@QueryMap params: MutableMap<String, Any?>): ApiResponse<MutableList<HomeBannerBean>>
/**
* 用户积分信息-我的积分
*/
@GET("/health-system/bank/userPoints/app/myPoints")
suspend fun getUserPoints(@QueryMap params: MutableMap<String, Any?>): ApiResponse<MutableList<UserPointBean>>
/**
* 用户积分信息-积分任务
*/
@GET("/health-system/bank/userPoints/app/pointsTaskList")
suspend fun getUserPointsTask(@QueryMap params: MutableMap<String, Any?>): ApiResponse<PointsTask>
/**
* 用户积分信息-积分明细
*/
@POST("/health-system/bank/userPoints/app/pointRecord")
suspend fun postUserPointsRecord(@Body requestBody: RequestBody): ApiResponse<PointDetailBean<PointRecord>>
/**
* 用户积分信息-积分榜
*/
@POST("/health-system/bank/userPoints/app/pointRanking")
suspend fun postUserPointsRank(@Body requestBody: RequestBody): ApiResponse<PointDetailBean<PointRank>>
/**
* 用户积分信息-积分打卡
*/
@POST("/health-system/bank/userPoints/app/pointCheckIn")
suspend fun postUserPointsCheckIn(@Body requestBody: RequestBody): ApiResponse<CheckInBean>
}
@@ -0,0 +1,78 @@
package com.xjjk.healthyclients.data.repository
import com.xjjk.healthyclients.base.repository.BaseRepository
import com.xjjk.healthyclients.bean.home.HomeBannerBean
import com.xjjk.healthyclients.bean.home.HomeNoticeBean
import com.xjjk.healthyclients.bean.user.CheckInBean
import com.xjjk.healthyclients.bean.user.PointDetailBean
import com.xjjk.healthyclients.bean.user.PointRank
import com.xjjk.healthyclients.bean.user.PointRecord
import com.xjjk.healthyclients.bean.user.PointsTask
import com.xjjk.healthyclients.bean.user.UserPointBean
import com.xjjk.healthyclients.data.api.HomeApi
import com.xjjk.healthyclients.data.bean.ApiResponse
import com.xjjk.healthyclients.retrofit.RetrofitManager
import com.xjjk.healthyclients.retrofit.RetrofitManager.toRequestBody
import com.xjjk.healthyclients.superfuntion.toJson
object HomeRepository : BaseRepository() {
private val service by lazy { RetrofitManager.getService(HomeApi::class.java) }
suspend fun getHomeNoticeList(
pageNo: Int,
pageSize: Int
): ApiResponse<MutableList<HomeNoticeBean>> {
val map = mutableMapOf<String, Any?>()
map["pageNo"] = pageNo
map["pageSize"] = pageSize
return apiCall { service.getHomeNoticeList(map) }
}
suspend fun getHomeNoticeDetail(id: String): ApiResponse<HomeNoticeBean> {
val map = mutableMapOf<String, Any?>()
map["id"] = id
return apiCall { service.getHomeNoticeDetail(map) }
}
suspend fun getHomeBannerList(showLocation: String): ApiResponse<MutableList<HomeBannerBean>> {
val map = mutableMapOf<String, Any?>()
map["showLocation"] = showLocation
return apiCall { service.getHomeBannerList(map) }
}
suspend fun getUserPoints(): ApiResponse<MutableList<UserPointBean>> {
val map = mutableMapOf<String, Any?>()
return apiCall { service.getUserPoints(map) }
}
suspend fun getUserPointsTask(): ApiResponse<PointsTask> {
val map = mutableMapOf<String, Any?>()
return apiCall { service.getUserPointsTask(map) }
}
suspend fun postUserPointsRecord(changeType: Int): ApiResponse<PointDetailBean<PointRecord>> {
val params = mutableMapOf<String, Any?>()
params["changeType"] = changeType
return apiCall { service.postUserPointsRecord(params.toJson().toRequestBody()) }
}
// rankType(榜单类型,1周榜,2月榜,10总榜)
suspend fun postUserPointsRank(
pageNo: Int,
pageSize: Int,
rankType: Int
): ApiResponse<PointDetailBean<PointRank>> {
val params = mutableMapOf<String, Any?>()
params["pageNo"] = pageNo
params["pageSize"] = pageSize
params["rankType"] = rankType
return apiCall { service.postUserPointsRank(params.toJson().toRequestBody()) }
}
suspend fun postUserPointsCheckIn(checkInBean: CheckInBean): ApiResponse<CheckInBean> {
return apiCall { service.postUserPointsCheckIn(checkInBean.toJson().toRequestBody()) }
}
}
@@ -0,0 +1,9 @@
package com.xjjk.healthyclients.event
/**
* 首页tab切换
*/
class HomeTabChangeEvent {
var index: Int = -1
}
@@ -289,10 +289,6 @@ class EmergencyFragment :
}
}
override fun getStatusbarStyle(): Int {
return 1
}
override fun onLocationChanged(amapLocation: AMapLocation?) {
if (mListener != null && amapLocation != null) {
if (amapLocation != null
@@ -23,7 +23,6 @@ import com.xjjk.healthyclients.superfuntion.startGroupChat
import com.xjjk.healthyclients.superfuntion.startLoginActivity
import com.xjjk.healthyclients.superfuntion.startMyGuidanceActivity
import com.xjjk.healthyclients.ui.activity.guidance.adapter.GuidanceFragmentDoctorAdapter
import com.xjjk.healthyclients.ui.activity.home.HomeBannerDetailActivity
import com.xjjk.healthyclients.ui.viewmodel.GuidanceFragmentViewModel
import com.xjjk.healthyclients.utils.ConstantUtils
import com.xjjk.healthyclients.utils.IMInputActionSettingUtils
@@ -197,9 +196,9 @@ class GuidanceFragment :
}
}
}
R.id.banner->{
toActivity(HomeBannerDetailActivity::class.java)
}
// R.id.banner->{
// toActivity(HomeBannerDetailActivity::class.java)
// }
}
}
@@ -209,7 +208,7 @@ class GuidanceFragment :
ivLeft?.setOnClickListener(this@GuidanceFragment)
ivRight?.setOnClickListener(this@GuidanceFragment)
tvDoctorMore?.setOnClickListener(this@GuidanceFragment)
banner?.setOnClickListener(this@GuidanceFragment)
// banner?.setOnClickListener(this@GuidanceFragment)
}
}
@@ -0,0 +1,257 @@
package com.xjjk.healthyclients.fragment
import android.os.Bundle
import android.view.View
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import com.sw.healthyclients.data.local.DataStoreManager
import com.tencent.qcloud.tuikit.tuichat.bean.WorkBean
import com.xjjk.healthyclients.R
import com.xjjk.healthyclients.adapter.common.MultiItemTypeAdapter
import com.xjjk.healthyclients.base.BaseVMBFragment
import com.xjjk.healthyclients.bean.guidance.GuidanceListBean
import com.xjjk.healthyclients.databinding.FragmentHomeBinding
import com.xjjk.healthyclients.event.HomeTabChangeEvent
import com.xjjk.healthyclients.event.RefreshEvent
import com.xjjk.healthyclients.superfuntion.initColors
import com.xjjk.healthyclients.superfuntion.load
import com.xjjk.healthyclients.superfuntion.startAppointmentWaitAffirmActivity
import com.xjjk.healthyclients.superfuntion.startEmergencySeekDoctorActivity
import com.xjjk.healthyclients.superfuntion.startGroupChat
import com.xjjk.healthyclients.superfuntion.startLoginActivity
import com.xjjk.healthyclients.superfuntion.startMyGuidanceActivity
import com.xjjk.healthyclients.ui.activity.EmptyActivity
import com.xjjk.healthyclients.ui.activity.guidance.adapter.GuidanceFragmentDoctorAdapter
import com.xjjk.healthyclients.ui.activity.home.HomeBannerDetailActivity
import com.xjjk.healthyclients.ui.activity.home.HomeNoticeListActivity
import com.xjjk.healthyclients.ui.viewmodel.HomeViewModel
import com.xjjk.healthyclients.utils.ConstantUtils
import com.xjjk.healthyclients.utils.IMInputActionSettingUtils
import com.xjjk.healthyclients.utils.TUIUtils
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
import org.greenrobot.eventbus.EventBus
/**
* 首页fragment
*/
class HomeFragment :
BaseVMBFragment<HomeViewModel, FragmentHomeBinding>(R.layout.fragment_home),
SwipeRefreshLayout.OnRefreshListener {
var stringList: MutableList<String> = mutableListOf()
var mDoctorList = arrayListOf<GuidanceListBean>()
var mGuidanceFragmentDoctorAdapter: GuidanceFragmentDoctorAdapter? = null
override fun initView(root: View?, savedInstanceState: Bundle?) {
mBinding.swipeRefresh.initColors()
mBinding.swipeRefresh.setOnRefreshListener(this@HomeFragment)
var manager = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
mBinding.layoutItem3.fragmentGuidanceRvDoctor.layoutManager = manager
mGuidanceFragmentDoctorAdapter =
GuidanceFragmentDoctorAdapter(
requireContext(),
R.layout.item_fragment_doctor,
mDoctorList
) {}
mGuidanceFragmentDoctorAdapter!!.setOnItemClickListener(object :
MultiItemTypeAdapter.OnItemClickListener {
override fun onItemClick(
view: View?,
holder: RecyclerView.ViewHolder?,
position: Int,
) {
var bean = mDoctorList[position]
if (bean.contentType == "1") {
var isSelf = false
//大于等于4 不可发消息
var status = 0
var sendMessage = false
try {
status = bean.contentStatus.toInt()
} catch (e: Exception) {
}
sendMessage = status >= 4
IMInputActionSettingUtils.createImageTextConsultSetting(
isSelf,
disableSendMessage = sendMessage,
disableEvaluate = status == 5
)
requireContext().startGroupChat(
bean.imId, "图文咨询", consultantId = bean.memberId,
workBean = WorkBean(bean.id, TUIUtils.WORK_TYPE_IMAGE_TEXT_CONSULT)
)
} else {
requireContext()?.let {
startAppointmentWaitAffirmActivity(
it,
bean.id,
true
)
}
}
}
override fun onItemLongClick(
view: View?,
holder: RecyclerView.ViewHolder?,
position: Int,
): Boolean {
return false
}
})
mBinding.layoutItem3.fragmentGuidanceRvDoctor.adapter = mGuidanceFragmentDoctorAdapter
}
override fun bindEvent() {
mBinding.headImg.setOnClickListener {
toActivity(HomeNoticeListActivity::class.java)
}
mBinding.apply {
addClickViews(
image1, image2, image3, image4, layoutItem4.imgLeft, layoutItem4.imgRight,
layoutItem1.homeHeadTab1, layoutItem1.homeHeadTab2, layoutItem1.homeHeadTab3,
layoutItem1.homeHeadTab4, homeMarqueeView, layoutItem3.tvDoctorMore
)
}
}
override fun onClick(v: View?) {
when (v?.id) {
R.id.img_left, R.id.img_right, R.id.home_head_tab1, R.id.home_head_tab2, R.id.home_head_tab4,
R.id.image1, R.id.image4 -> {
toActivity(EmptyActivity::class.java)
}
R.id.image2 -> {
toActivity(HomeBannerDetailActivity::class.java)
}
R.id.image3 -> {
EventBus.getDefault().post(HomeTabChangeEvent().apply { index=1 })
}
R.id.home_head_tab3 -> {
startEmergencySeekDoctorActivity(requireContext())
}
R.id.home_marqueeView -> {
if (DataStoreManager.isLogin()) {
toActivity(HomeNoticeListActivity::class.java)
}
}
R.id.tv_doctor_more -> {
if (ConstantUtils.mCheckToken) {
if (DataStoreManager.getToken().isNullOrEmpty()) {
startLoginActivity(requireContext())
} else {
startMyGuidanceActivity(requireContext(), "")
}
} else {
startLoginActivity(requireContext())
}
}
}
}
override fun onResume() {
super.onResume()
if (DataStoreManager.isLogin()) {
mBinding.tvHi.visibility = View.VISIBLE
mBinding.homeMarqueeView.visibility = View.VISIBLE
mBinding.tvHi.text = "hi~ ${DataStoreManager.getUserInfo().realname}"
} else {
mBinding.homeMarqueeView.visibility = View.GONE
mBinding.tvHi.visibility = View.GONE
}
}
override fun createObserve() {
super.createObserve()
lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
mViewModel.homeBannerList.collectLatest {
if (it.isNullOrEmpty()) {
return@collectLatest
}
mBinding.image1.load(it.get(0).photoUrl, false)
mBinding.image2.load(it.get(1).photoUrl, false)
mBinding.image3.load(it.get(2).photoUrl, false)
mBinding.image4.load(it.get(3).photoUrl, false)
}
}
}
lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
mViewModel.homeNoticeRepeat.collectLatest {
stringList.clear()
if (it.isNullOrEmpty()) {
stringList.add("暂无通知")
} else {
it.forEach { noticeData ->
stringList.add(noticeData.title)
}
}
mBinding.homeMarqueeView.stopFlipping()
delay(100)
mBinding.homeMarqueeView.startWithList(stringList)
}
}
}
lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
mViewModel.mDoctorList.collectLatest { list ->
mBinding.apply {
if (list.size == 0) {
layoutItem3.fragmentGuidanceRvDoctor.visibility = View.GONE
layoutItem3.llEmpty.visibility = View.VISIBLE
} else {
layoutItem3.fragmentGuidanceRvDoctor.visibility = View.VISIBLE
layoutItem3.llEmpty.visibility = View.GONE
mDoctorList.clear()
mDoctorList.addAll(list)
}
mGuidanceFragmentDoctorAdapter?.notifyDataSetChanged()
}
}
}
}
}
override fun initData() {
mViewModel.getHomeBannerList("2")
}
override fun onRefresh() {
mBinding.swipeRefresh.isRefreshing = false
if (ConstantUtils.mCheckToken) {
mViewModel.selectDoctorRecommendHome()
}
}
override fun onMessageEvent(event: Any?) {
if (event is RefreshEvent) {
mViewModel.getHomeNoticeListRepeat()
onRefresh()
}
super.onMessageEvent(event)
}
}
@@ -23,6 +23,7 @@ import com.xjjk.healthyclients.superfuntion.startUserInfoSettingActivity
import com.xjjk.healthyclients.superfuntion.startUserMyGuidanceActivity
import com.xjjk.healthyclients.superfuntion.startUserSettingActivity
import com.xjjk.healthyclients.superfuntion.startUserSoSContactsActivity
import com.xjjk.healthyclients.ui.activity.home.HomeNoticeListActivity
import com.xjjk.healthyclients.ui.viewmodel.UserInfoFragmentViewModel
import com.xjjk.healthyclients.utils.ConstantUtils
import kotlinx.coroutines.flow.collectLatest
@@ -54,6 +55,7 @@ class UserInfoFragment :
mList.clear()
mList.add(UserMenuBean(1, "咨询人管理", R.drawable.ic_user_personnel_manager, View.VISIBLE))
mList.add(UserMenuBean(3, "应急就医", R.drawable.ic_user_sos, View.VISIBLE))
mList.add(UserMenuBean(4, "消息通知", R.drawable.icon_home_xiaolaba, View.VISIBLE))
mList.add(UserMenuBean(8,"紧急联系人",R.drawable.ic_user_contacts,View.INVISIBLE))
@@ -169,6 +171,9 @@ class UserInfoFragment :
3 -> {
context?.let { startEmergencySeekDoctorActivity(it) }
}
4 -> {
toActivity(HomeNoticeListActivity::class.java)
}
8 -> {
requireContext().startUserSoSContactsActivity()
}
@@ -189,10 +194,6 @@ class UserInfoFragment :
}
override fun getStatusbarStyle(): Int {
return 1
}
override fun onClick(v: View?) {
when (v?.id) {
R.id.user_tv_look_all -> {
@@ -0,0 +1,57 @@
package com.xjjk.healthyclients.superfuntion
import android.view.ViewGroup
import android.widget.ImageView
import androidx.fragment.app.Fragment
import com.xjjk.healthyclients.bean.home.HomeBannerBean
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerAdapter
import com.youth.banner.adapter.BannerImageAdapter
import com.youth.banner.config.IndicatorConfig
import com.youth.banner.holder.BannerImageHolder
import com.youth.banner.indicator.CircleIndicator
fun Fragment.showBanner(
banner: Banner<Any, BannerAdapter<Any, *>>,
bannerDataList: MutableList<HomeBannerBean>,
listener: ((HomeBannerBean)-> Unit)? = null
) {
val bannerImageAdapter = object : BannerImageAdapter<HomeBannerBean>(bannerDataList) {
override fun onBindView(
holder: BannerImageHolder?,
data: HomeBannerBean?,
position: Int,
size: Int
) {
context?.let {
holder!!.imageView.load(data?.photoUrl)
}
}
override fun onCreateHolder(parent: ViewGroup?, viewType: Int): BannerImageHolder {
val imageView = ImageView(parent?.context)
//注意,必须设置为match_parent,这个是viewpager2强制要求的
val params = ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
)
imageView.layoutParams = params
// imageView.scaleType = ImageView.ScaleType.CENTER_CROP
return BannerImageHolder(imageView)
}
}
banner.addBannerLifecycleObserver(this)
.setAdapter(bannerImageAdapter, true)
.setLoopTime(4000)
.setBannerRound(6f)
.isAutoLoop(true)
.setIndicator(CircleIndicator(requireContext()))
.setIndicatorGravity(IndicatorConfig.Direction.CENTER)
.setIndicatorSelectedWidth(10)
banner.setOnBannerListener { data, position ->
data as HomeBannerBean
listener?.invoke(data)
}
}
@@ -0,0 +1,35 @@
package com.xjjk.healthyclients.ui.activity
import android.os.Bundle
import android.view.View
import com.xjjk.healthyclients.R
import com.xjjk.healthyclients.base.BaseVMBActivity
import com.xjjk.healthyclients.databinding.ActivityEmptyBinding
import com.xjjk.healthyclients.ui.viewmodel.HomeViewModel
/**
* 空布局
*/
class EmptyActivity :
BaseVMBActivity<HomeViewModel, ActivityEmptyBinding>(R.layout.activity_empty) {
override fun initView(savedInstanceState: Bundle?) {
}
override fun initData() {
}
override fun bindEvent() {
}
override fun processClick(paramView: View?) {
}
}
@@ -0,0 +1,35 @@
package com.xjjk.healthyclients.ui.activity.home
import android.os.Bundle
import android.view.View
import com.xjjk.healthyclients.R
import com.xjjk.healthyclients.base.BaseVMBActivity
import com.xjjk.healthyclients.databinding.ActivityHomeBannerBinding
import com.xjjk.healthyclients.ui.viewmodel.HomeViewModel
/**
* 首页banner
*/
class HomeBannerDetailActivity :
BaseVMBActivity<HomeViewModel, ActivityHomeBannerBinding>(R.layout.activity_home_banner) {
override fun initView(savedInstanceState: Bundle?) {
}
override fun initData() {
}
override fun bindEvent() {
}
override fun createObserve() {
super.createObserve()
}
override fun processClick(paramView: View?) {
}
}
@@ -0,0 +1,77 @@
package com.xjjk.healthyclients.ui.activity.home
import android.os.Bundle
import android.text.TextUtils
import android.view.View
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.sw.healthyclients.utils.DateUtil
import com.xjjk.healthyclients.R
import com.xjjk.healthyclients.base.BaseVMBActivity
import com.xjjk.healthyclients.databinding.ActivityNoticeDetailBinding
import com.xjjk.healthyclients.superfuntion.addImgHeader
import com.xjjk.healthyclients.superfuntion.orEmptyDefault
import com.xjjk.healthyclients.ui.viewmodel.HomeViewModel
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
/**
* 首页通知消息详情
*/
class HomeNoticeDetailActivity :
BaseVMBActivity<HomeViewModel, ActivityNoticeDetailBinding>(R.layout.activity_notice_detail) {
override fun initView(savedInstanceState: Bundle?) {
}
override fun initData() {
val stringExtra = intent.getStringExtra("id")
if (TextUtils.isEmpty(stringExtra)) {
finish()
} else {
mViewModel.getHomeNoticeDetail(stringExtra!!)
}
}
override fun bindEvent() {
}
override fun createObserve() {
super.createObserve()
lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
mViewModel.homeNoticeDetail.collectLatest {
if (TextUtils.isEmpty(it?.content)) {
return@collectLatest
}
mBinding.tvTitle.text = it?.title.orEmptyDefault()
mBinding.tvDate.text = DateUtil.dateStrToStrMiddle(it?.createTime)
var content = it?.content
mBinding.apply {
var css = "<style>img{max-width: 100%;}</style>"
var html = css + content
webContent.loadDataWithBaseURL(
null,
html.addImgHeader(),
"text/html",
"UTF-8",
null
)
}
}
}
}
}
override fun processClick(paramView: View?) {
}
}
@@ -0,0 +1,109 @@
package com.xjjk.healthyclients.ui.activity.home
import android.os.Bundle
import android.view.View
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import com.xjjk.healthyclients.R
import com.xjjk.healthyclients.adapter.home.HomeMessageAdapter
import com.xjjk.healthyclients.base.BaseVMBActivity
import com.xjjk.healthyclients.bean.home.HomeNoticeBean
import com.xjjk.healthyclients.databinding.ActivityNoticeListBinding
import com.xjjk.healthyclients.superfuntion.initColors
import com.xjjk.healthyclients.ui.viewmodel.HomeViewModel
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
/**
* 首页通知消息列表
*/
class HomeNoticeListActivity :
BaseVMBActivity<HomeViewModel, ActivityNoticeListBinding>(R.layout.activity_notice_list),
SwipeRefreshLayout.OnRefreshListener {
val mAdapter: HomeMessageAdapter by lazy { HomeMessageAdapter() }
override fun initView(savedInstanceState: Bundle?) {
mBinding.apply {
rvList.adapter = mAdapter
swipeRefresh.initColors()
swipeRefresh.setOnRefreshListener(this@HomeNoticeListActivity)
initLoadMore()
}
}
override fun initData() {
mViewModel.getHomeNoticeList()
}
private fun initLoadMore() {
mAdapter.loadMoreModule.setOnLoadMoreListener {
mViewModel.getHomeNoticeList()
}
mAdapter.loadMoreModule.isAutoLoadMore = true
//当自动加载开启,同时数据不满一屏时,是否继续执行自动加载更多(默认为true)
mAdapter.loadMoreModule.isEnableLoadMoreIfNotFullPage = false
}
override fun bindEvent() {
mAdapter.setOnItemClickListener { adapter, view, position ->
val homeNoticeBean = adapter.data.get(position) as HomeNoticeBean
val bundle = Bundle()
bundle.putString("id", homeNoticeBean.id)
toActivity(HomeNoticeDetailActivity::class.java, bundle)
}
}
override fun createObserve() {
super.createObserve()
lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
mViewModel.homeNoticeList.collectLatest {
if (it.isNullOrEmpty()) {
return@collectLatest
}
mBinding.emptyView.visibility = View.GONE
if (mViewModel.pageIndex.value <= 1) {
mAdapter.setNewInstance(it)
} else {
mAdapter.addData(it)
}
mAdapter.loadMoreModule.loadMoreComplete()
}
}
}
lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
mViewModel.isLoadMoreEnd.collectLatest {
if (it) {
mAdapter.loadMoreModule?.loadMoreEnd(it)
}
}
}
}
lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
mViewModel.isRefreshing.collectLatest {
mBinding.swipeRefresh.isRefreshing = it
}
}
}
}
override fun processClick(paramView: View?) {
}
override fun onRefresh() {
mViewModel.getHomeNoticeList(true)
}
}
@@ -0,0 +1,44 @@
package com.xjjk.healthyclients.ui.activity.home
import android.os.Bundle
import android.view.View
import com.xjjk.healthyclients.R
import com.xjjk.healthyclients.adapter.home.HomeMessageAdapter
import com.xjjk.healthyclients.base.BaseVMBActivity
import com.xjjk.healthyclients.databinding.ActivityBankBinding
import com.xjjk.healthyclients.ui.viewmodel.HomeViewModel
/**
* 我的银行
*/
class MyBankLActivity :
BaseVMBActivity<HomeViewModel, ActivityBankBinding>(R.layout.activity_bank) {
val mAdapter: HomeMessageAdapter by lazy { HomeMessageAdapter() }
override fun initView(savedInstanceState: Bundle?) {
mBinding.apply {
}
}
override fun initData() {
}
override fun bindEvent() {
}
override fun createObserve() {
super.createObserve()
}
override fun processClick(paramView: View?) {
}
}
@@ -0,0 +1,129 @@
package com.xjjk.healthyclients.ui.viewmodel
import androidx.lifecycle.viewModelScope
import com.xjjk.healthyclients.base.viewmodel.BaseViewModel
import com.xjjk.healthyclients.bean.guidance.GuidanceListBean
import com.xjjk.healthyclients.bean.home.HomeBannerBean
import com.xjjk.healthyclients.bean.home.HomeNoticeBean
import com.xjjk.healthyclients.data.repository.GuidanceRepository
import com.xjjk.healthyclients.data.repository.HomeRepository
import com.xjjk.healthyclients.superfuntion.handleRequest
import com.xjjk.healthyclients.superfuntion.launch
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.launch
class HomeViewModel : BaseViewModel() {
var mDoctorList = MutableStateFlow(ArrayList<GuidanceListBean>())
var homeNoticeRepeat = MutableSharedFlow<MutableList<HomeNoticeBean>?>()
var homeNoticeList = MutableSharedFlow<MutableList<HomeNoticeBean>?>()
var homeNoticeDetail = MutableSharedFlow<HomeNoticeBean?>()
var homeBannerList = MutableSharedFlow<MutableList<HomeBannerBean>?>()
var isRefreshing = MutableStateFlow(false)
var isLoadMoreEnd = MutableSharedFlow<Boolean>()
var pageIndex = MutableStateFlow(1)
private val pageSize = 20
override fun init() {
}
fun selectDoctorRecommendHome() {
launch(
{
handleRequest(
GuidanceRepository.selectDoctorRecommend(1,3),
successBlock = {
it.result?.let{ result ->
if (result.isNotEmpty()) {
mDoctorList.emit(result)
}else{
mDoctorList.emit(ArrayList<GuidanceListBean>())
}
}
})
}
)
}
/**
* 获取首页消息通知列表
*/
fun getHomeNoticeList(isRefresh: Boolean = false) {
launch(
{
if (isRefresh) {
isRefreshing.emit(true)
isLoadMoreEnd.emit(false)
pageIndex.emit(1)
}
handleRequest(
HomeRepository.getHomeNoticeList(pageIndex.value, pageSize),
successBlock = {
if (it.result.isNullOrEmpty()) {
isLoadMoreEnd.emit(true)
homeNoticeList.emit(mutableListOf())
} else {
homeNoticeList.emit(it.result)
pageIndex.value++
if (it.result.size < pageSize) {
isLoadMoreEnd.emit(true)
}
}
})
}, finallyBlock = {
isRefreshing.emit(false)
}
)
}
/**
* 首页消息轮询
*/
fun getHomeNoticeListRepeat() {
viewModelScope.launch {
repeat(100) {
handleRequest(
HomeRepository.getHomeNoticeList(1, 10),
successBlock = {
homeNoticeRepeat.emit(it.result)
})
delay(1000 * 120)
}
}
}
fun getHomeNoticeDetail(id: String) {
launch(
{
handleRequest(
HomeRepository.getHomeNoticeDetail(id),
successBlock = {
homeNoticeDetail.emit(it.result)
})
}
)
}
fun getHomeBannerList(showLocation: String) {
launch(
{
handleRequest(
HomeRepository.getHomeBannerList(showLocation),
successBlock = {
homeBannerList.emit(it.result)
})
}
)
}
}
@@ -0,0 +1,81 @@
package com.xjjk.healthyclients.ui.viewmodel
import com.xjjk.healthyclients.base.viewmodel.BaseViewModel
import com.xjjk.healthyclients.bean.user.CheckInBean
import com.xjjk.healthyclients.data.repository.HomeRepository
import com.xjjk.healthyclients.superfuntion.handleRequest
import com.xjjk.healthyclients.superfuntion.launch
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
/**
* 手机银行
*/
class PointsViewModel : BaseViewModel() {
var isRefreshing = MutableStateFlow(false)
var isLoadMoreEnd = MutableSharedFlow<Boolean>()
var pageIndex = MutableStateFlow(1)
private val pageSize = 20
override fun init() {
}
fun getUserPoints() {
launch(
{
handleRequest(
HomeRepository.getUserPoints(),
successBlock = {
})
}
)
}
fun getUserPointsTask() {
launch(
{
handleRequest(
HomeRepository.getUserPointsTask(),
successBlock = {
})
}
)
}
fun postUserPointsRecord(changeType: Int) {
launch(
{
handleRequest(
HomeRepository.postUserPointsRecord(changeType),
successBlock = {
})
}
)
}
fun postUserPointsRank(changeType: Int) {
launch(
{
handleRequest(
HomeRepository.postUserPointsRank(pageIndex.value,pageSize,changeType),
successBlock = {
})
}
)
}
fun postUserPointsCheckIn(checkInBean: CheckInBean) {
launch(
{
handleRequest(
HomeRepository.postUserPointsCheckIn(checkInBean),
successBlock = {
})
}
)
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<stroke
android:width="1dp"
android:color="@color/gray_600"
android:dashWidth="5dp"
android:dashGap="2dp" />
</shape>
@@ -15,7 +15,8 @@
<include
layout="@layout/lay_title_bar"
android:id="@+id/toolbar_lay"
app:darkStyle="@{true}" />
app:darkStyle="@{true}"
app:title="@{@string/title_register_title}"/>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
+95
View File
@@ -0,0 +1,95 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/toolbar_lay"
layout="@layout/lay_title_bar"
app:darkStyle="@{true}"
app:title="@{@string/title_home_notice}" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:orientation="vertical"
android:paddingTop="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:text="可用积分"
android:textSize="16sp"
android:textColor="@color/text_black_33" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp">
<TextView
android:id="@+id/available_points"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginTop="5dp"
android:textColor="@color/text_black_33"
android:textSize="24sp"
tools:text="16546" />
<TextView
android:id="@+id/tv_point"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginLeft="20dp"
android:textColor="@color/text_black_33"
android:textSize="14sp"
tools:text="累计积分:16544" />
<TextView
android:id="@+id/tv_redemption"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_point"
android:layout_alignLeft="@+id/tv_point"
android:layout_marginTop="5dp"
android:textColor="@color/text_black_33"
android:textSize="14sp"
tools:text="累计积分:16544" />
<com.allen.library.shape.ShapeButton
android:id="@+id/tv_get_point"
android:layout_width="80dp"
android:layout_height="36dp"
android:layout_alignParentRight="true"
android:layout_marginTop="3dp"
android:layout_marginRight="15dp"
android:gravity="center"
android:text="获取积分"
android:textColor="@color/white"
android:textSize="14sp"
app:shapeCornersRadius="8dp"
app:shapeSolidColor="@color/theme_color" />
</RelativeLayout>
<View
android:layout_marginTop="5dp"
android:layout_width="match_parent"
android:layout_height="5dp"
android:background="@drawable/imaginary_line"/>
</LinearLayout>
</LinearLayout>
</layout>
@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/toolbar_lay"
layout="@layout/lay_title_bar"
app:darkStyle="@{true}"
app:title="@{@string/app_name}" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:gravity="center"
android:orientation="vertical"
android:paddingTop="10dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/icon_empty_circle" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:text="~ 正在研发中,敬请期待 ~"
android:textColor="@color/black_B6"
android:textSize="16sp" />
</LinearLayout>
</LinearLayout>
</layout>
@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/toolbar_lay"
layout="@layout/lay_title_bar"
app:darkStyle="@{true}"
app:title="@{@string/title_user_banner}" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:layout_width="match_parent"
android:layout_height="1300dp"
android:scaleType="fitXY"
android:src="@mipmap/ic_home_banner_detail" />
</LinearLayout>
</ScrollView>
</LinearLayout>
</layout>
@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
</data>
<LinearLayout
android:background="@color/white"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/toolbar_lay"
layout="@layout/lay_title_bar"
app:darkStyle="@{true}"
app:title="@{@string/title_home_notice_detail}" />
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="center_horizontal"
android:layout_marginHorizontal="15dp"
android:textColor="@color/text_black_33"
android:textSize="16sp"
android:textStyle="bold"
tools:text="新疆app" />
<TextView
android:id="@+id/tv_date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:gravity="end"
android:paddingRight="15dp"
android:textColor="@color/text_black_66"
android:textSize="12sp"
tools:text="新疆app" />
<View
android:layout_marginHorizontal="18dp"
android:background="@drawable/imaginary_line"
android:layout_width="match_parent"
android:layout_height="20dp"/>
<WebView
android:id="@+id/web_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingHorizontal="15dp"
android:scrollbars="none" />
</LinearLayout>
</layout>
@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/toolbar_lay"
layout="@layout/lay_title_bar"
app:darkStyle="@{true}"
app:title="@{@string/title_home_notice}" />
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
<include
android:id="@+id/empty_view"
layout="@layout/layout_empty" />
</RelativeLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</LinearLayout>
</layout>
@@ -59,12 +59,12 @@
</LinearLayout>
</RelativeLayout>
<ImageView
android:id="@+id/banner"
android:layout_marginHorizontal="12dp"
android:layout_width="match_parent"
android:background="@mipmap/ic_home_banner"
android:layout_height="120dp"/>
<!-- <ImageView-->
<!-- android:id="@+id/banner"-->
<!-- android:layout_marginHorizontal="12dp"-->
<!-- android:layout_width="match_parent"-->
<!-- android:background="@mipmap/ic_home_banner"-->
<!-- android:layout_height="120dp"/>-->
<RelativeLayout
android:layout_width="match_parent"
@@ -74,7 +74,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_18"
android:layout_marginTop="@dimen/dp_22"
android:layout_marginTop="@dimen/dp_12"
android:text="专家咨询记录"
android:textColor="#333333"
android:textSize="@dimen/txt18"
+165
View File
@@ -0,0 +1,165 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="vertical">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="30dp">
<ImageView
android:id="@+id/head_img"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:scaleType="fitXY"
android:src="@drawable/icon_home_head" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="130dp"
android:orientation="vertical">
<com.allen.library.shape.ShapeRelativeLayout
android:id="@+id/layout_notice"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginHorizontal="12dp"
app:shapeCornersRadius="8dp"
app:shapeGradientAngle="top_bottom"
app:shapeGradientEndColor="#F2FFFD"
app:shapeGradientStartColor="#DCFFFB"
app:shapeSolidColor="@color/white"
app:shapeStrokeColor="@color/white"
app:shapeStrokeWidth="2dp">
<ImageView
android:layout_width="17dp"
android:layout_height="17dp"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:background="@drawable/icon_home_xiaolaba" />
<com.sunfusheng.marqueeview.MarqueeView
android:id="@+id/home_marqueeView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:layout_marginHorizontal="2dp"
android:layout_marginVertical="2dp"
android:layout_marginStart="36dp"
android:layout_marginEnd="5dp"
app:mvAnimDuration="1000"
app:mvDirection="bottom_to_top"
app:mvInterval="3000"
app:mvSingleLine="false"
app:mvTextColor="#77849E"
app:mvTextSize="14sp" />
</com.allen.library.shape.ShapeRelativeLayout>
<TextView
android:id="@+id/tv_hi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="24dp"
android:layout_marginTop="10dp"
android:ellipsize="end"
android:textColor="@color/white"
android:textSize="12sp"
tools:text="Hi~艾比拜·牙库甫" />
<include
android:id="@+id/layout_item1"
layout="@layout/home_layout_item1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="6dp"
android:layout_marginTop="10dp" />
<!-- <com.youth.banner.Banner-->
<!-- android:id="@+id/banner1"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="120dp"-->
<!-- android:layout_below="@+id/layout_item1"-->
<!-- android:layout_marginHorizontal="12dp"-->
<!-- android:layout_marginTop="10dp" />-->
<ImageView
android:id="@+id/image1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="12dp"
android:layout_marginTop="12dp"
android:background="@mipmap/ic_home_image1" />
<ImageView
android:id="@+id/image2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="12dp"
android:layout_marginTop="12dp"
android:background="@mipmap/ic_home_image2" />
<ImageView
android:id="@+id/image3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="12dp"
android:layout_marginTop="12dp"
android:background="@mipmap/ic_home_image3" />
<include
android:id="@+id/layout_item3"
layout="@layout/home_layout_item3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="12dp"
android:layout_marginTop="10dp" />
<include
android:id="@+id/layout_item4"
layout="@layout/home_layout_item4"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<!-- <com.youth.banner.Banner-->
<!-- android:id="@+id/banner2"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_below="@+id/layout_item4"-->
<!-- android:layout_marginHorizontal="12dp"-->
<!-- android:layout_marginTop="10dp" />-->
<ImageView
android:id="@+id/image4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="12dp"
android:background="@mipmap/ic_home_image4" />
</LinearLayout>
</RelativeLayout>
</androidx.core.widget.NestedScrollView>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</LinearLayout>
</layout>
@@ -0,0 +1,216 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
</data>
<com.allen.library.shape.ShapeLinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:shapeCornersRadius="12dp"
app:shapeSolidColor="#88EBFFFD">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginTop="8dp"
android:ellipsize="end"
android:text="今日健康积分"
android:textColor="#116F6B"
android:textSize="12sp" />
<TextView
android:id="@+id/tv_today_points"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="6dp"
android:layout_marginTop="8dp"
android:ellipsize="end"
android:text="0"
android:textColor="#116F6B"
android:textSize="14sp"
android:textStyle="bold" />
<View
android:layout_width="1dp"
android:layout_height="12dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="12dp"
android:background="#116F6B" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="8dp"
android:ellipsize="end"
android:gravity="center"
android:text="累计积分"
android:textColor="#116F6B"
android:textSize="12sp" />
<TextView
android:id="@+id/tv_total_points"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="6dp"
android:layout_marginTop="8dp"
android:ellipsize="end"
android:text="0"
android:textColor="#116F6B"
android:textSize="14sp"
android:textStyle="bold" />
</LinearLayout>
<com.allen.library.shape.ShapeLinearLayout
android:layout_width="match_parent"
android:layout_height="93dp"
android:layout_marginHorizontal="6dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="6dp"
android:orientation="horizontal"
app:shapeCornersRadius="6dp"
app:shapeSolidColor="@color/white">
<LinearLayout
android:id="@+id/home_head_tab1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:descendantFocusability="blocksDescendants"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal"
android:scaleType="fitXY"
android:src="@mipmap/ic_home_head_tab1" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:autoSizeMaxTextSize="80sp"
android:autoSizeMinTextSize="2sp"
android:autoSizeTextType="uniform"
android:gravity="center_horizontal"
android:maxLines="1"
android:text="健康档案"
android:textColor="@color/text_black_33"
android:textSize="14sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:id="@+id/home_head_tab2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:descendantFocusability="blocksDescendants"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal"
android:scaleType="fitXY"
android:src="@mipmap/ic_home_head_tab2" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:autoSizeMaxTextSize="80sp"
android:autoSizeMinTextSize="2sp"
android:autoSizeTextType="uniform"
android:gravity="center_horizontal"
android:maxLines="1"
android:text="健康体检"
android:textColor="@color/text_black_33"
android:textSize="14sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:id="@+id/home_head_tab3"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:descendantFocusability="blocksDescendants"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal"
android:scaleType="fitXY"
android:src="@mipmap/ic_home_head_tab3" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:autoSizeMaxTextSize="80sp"
android:autoSizeMinTextSize="2sp"
android:autoSizeTextType="uniform"
android:gravity="center_horizontal"
android:maxLines="1"
android:text="应急就医"
android:textColor="@color/text_black_33"
android:textSize="14sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:id="@+id/home_head_tab4"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:descendantFocusability="blocksDescendants"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal"
android:scaleType="fitXY"
android:src="@mipmap/ic_home_head_tab4" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:autoSizeMaxTextSize="80sp"
android:autoSizeMinTextSize="2sp"
android:autoSizeTextType="uniform"
android:gravity="center_horizontal"
android:maxLines="1"
android:text="健康银行"
android:textColor="@color/text_black_33"
android:textSize="14sp"
android:textStyle="bold" />
</LinearLayout>
</com.allen.library.shape.ShapeLinearLayout>
</com.allen.library.shape.ShapeLinearLayout>
</layout>
@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
</data>
<com.allen.library.shape.ShapeRelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:shapeCornersRadius="12dp"
app:shapeSolidColor="@color/white">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:background="@mipmap/ic_home_item_head_bg"
android:scaleType="fitXY">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginTop="8dp"
android:ellipsize="end"
android:text="员工体检"
android:textColor="@color/text_black_33"
android:textSize="16sp"
android:textStyle="bold" />
</LinearLayout>
<ImageView
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_marginTop="40dp"
android:background="@mipmap/ic_home_item_head_bg2" />
<com.allen.library.shape.ShapeRelativeLayout
android:layout_width="match_parent"
android:layout_height="86dp"
android:layout_marginTop="60dp"
android:orientation="vertical"
app:shadowCornersBottomRightRadius="12dp"
app:shapeCornersBottomLeftRadius="12dp"
app:shapeSolidColor="@color/white">
<ImageView
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/icon_empty"/>
<TextView
android:layout_marginBottom="10dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginTop="8dp"
android:ellipsize="end"
android:text="~ 体检暂未开始 ~"
android:textColor="@color/black_B6"
android:textSize="11sp" />
</com.allen.library.shape.ShapeRelativeLayout>
</com.allen.library.shape.ShapeRelativeLayout>
</layout>
@@ -0,0 +1,90 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
</data>
<com.allen.library.shape.ShapeRelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:shapeCornersRadius="12dp">
<RelativeLayout
android:id="@+id/tv_doctor_more"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:background="@mipmap/ic_home_item_head_bg"
android:scaleType="fitXY">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginTop="8dp"
android:ellipsize="end"
android:text="专家咨询记录"
android:textColor="@color/text_black_33"
android:textSize="16sp"
android:textStyle="bold" />
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_alignParentRight="true"
android:layout_marginTop="12dp"
android:layout_marginRight="15dp"
android:background="@drawable/arrow_right"
android:padding="10dp" />
</RelativeLayout>
<com.allen.library.shape.ShapeRelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:orientation="vertical"
app:shadowCornersBottomRightRadius="12dp"
app:shapeCornersBottomLeftRadius="12dp"
app:shapeSolidColor="#F5F7FB">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/fragment_guidance_rv_doctor"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
<LinearLayout
android:id="@+id/ll_empty"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_91"
android:layout_centerInParent="true"
android:layout_marginTop="40dp"
android:layout_marginBottom="40dp"
android:gravity="center_horizontal"
android:orientation="vertical"
android:visibility="visible">
<ImageView
android:layout_width="@dimen/dp_101"
android:layout_height="@dimen/dp_60"
android:src="@drawable/ic_message_empty" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="暂无咨询记录"
android:textColor="#14BEBE"
android:textSize="@dimen/txt15" />
</LinearLayout>
</com.allen.library.shape.ShapeRelativeLayout>
</com.allen.library.shape.ShapeRelativeLayout>
</layout>
@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/img_left"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="-5dp"
android:layout_weight="1">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:src="@mipmap/ic_home_view_left" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="25dp"
android:layout_marginTop="21dp"
android:text="智慧体重"
android:textColor="@color/text_black_33"
android:textSize="15sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="25dp"
android:layout_marginTop="44dp"
android:text="智追体重 科学控重"
android:textColor="#808080"
android:textSize="11sp" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/img_right"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="-5dp"
android:layout_weight="1">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:src="@mipmap/ic_home_view_right" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="25dp"
android:layout_marginTop="21dp"
android:text="一人一案"
android:textColor="@color/text_black_33"
android:textSize="15sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="25dp"
android:layout_marginTop="44dp"
android:text="定制专属健康方案"
android:textColor="#808080"
android:textSize="11sp" />
</RelativeLayout>
</LinearLayout>
</layout>
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginLeft="15dp"
android:background="@color/gray_400" />
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="60dp"
android:layout_marginBottom="5dp"
android:gravity="center_horizontal" />
<TextView
android:id="@+id/tv_point"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_title"
android:layout_marginLeft="60dp"
android:layout_marginBottom="5dp"
android:gravity="center_horizontal" />
<com.allen.library.shape.ShapeTextView
android:id="@+id/btn_points"
android:layout_width="90dp"
android:layout_height="38dp"
android:layout_alignParentRight="true"
android:layout_marginRight="15dp"
android:gravity="center"
android:text="打卡"
android:textColor="@color/theme_color"
app:shapeCornersRadius="8dp"
app:shapeSolidColor="@color/white"
app:shapeStrokeColor="@color/theme_color"
app:shapeStrokeWidth="1dp" />
</RelativeLayout>
@@ -13,7 +13,7 @@
android:layout_height="@dimen/dp_60"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_15"
android:scaleType="centerCrop"/>
android:scaleType="centerCrop" />
<TextView
android:id="@+id/item_tv_name"
@@ -51,63 +51,66 @@
android:layout_below="@+id/item_tv_name"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginTop="10dp"
android:textSize="@dimen/txt12"
android:paddingRight="@dimen/dp_6"
android:paddingLeft="@dimen/dp_6"
android:paddingBottom="@dimen/dp_3"
android:paddingTop="@dimen/dp_3"
android:layout_toRightOf="@+id/item_iv_icon"
android:background="#FFF8ED"
android:paddingLeft="@dimen/dp_6"
android:paddingTop="@dimen/dp_3"
android:paddingRight="@dimen/dp_6"
android:paddingBottom="@dimen/dp_3"
android:textSize="@dimen/txt12"
tools:text="三级甲等" />
<TextView
android:id="@+id/item_hospital_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/item_tag"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginTop="10dp"
android:textSize="@dimen/txt12"
android:layout_toRightOf="@+id/item_tag"
android:textColor="@color/text_black_99"
android:layout_alignBaseline="@+id/item_tag"
android:textSize="@dimen/txt12"
tools:text="空军军医大学西京医院" />
<View
android:id="@+id/v_line"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_1"
android:background="@color/line"
android:layout_below="@+id/item_iv_icon"
android:layout_margin="@dimen/dp_15"
/>
android:layout_below="@+id/item_hospital_name"
android:layout_marginHorizontal="15dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:background="@color/line" />
<TextView
android:id="@+id/tv_guidance_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="咨询人:莱希奥"
android:textColor="@color/text_black_66"
android:textSize="@dimen/txt12"
android:layout_below="@+id/v_line"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginBottom="@dimen/dp_15"
android:layout_below="@+id/v_line"
/>
android:textColor="@color/text_black_66"
android:textSize="@dimen/txt12"
tools:text="咨询人:莱希奥" />
<TextView
android:id="@+id/tv_guidance_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="2024-06-17 10:26:37"
android:layout_below="@+id/v_line"
android:layout_alignParentRight="true"
android:textColor="@color/text_black_66"
android:textSize="@dimen/txt12"
android:layout_marginRight="@dimen/dp_15"
android:layout_marginBottom="@dimen/dp_15"
android:layout_below="@+id/v_line"
/>
android:textColor="@color/text_black_66"
android:textSize="@dimen/txt12"
tools:text="2024-06-17 10:26:37" />
<ImageView
android:id="@+id/item_guidance_state"
android:layout_width="@dimen/dp_61"
android:layout_height="@dimen/dp_26"
android:layout_alignParentRight="true"
android:layout_marginTop="3dp"
android:layout_marginRight="3dp"
android:layout_alignParentRight="true"
android:src="@drawable/ic_guidance_finish"
/>
android:src="@drawable/ic_guidance_finish" />
</RelativeLayout>
@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="10dp"
android:layout_marginTop="10dp">
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:background="@mipmap/ic_xiaolaba" />
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:ellipsize="end"
android:lines="2"
android:textColor="@color/color_theme_or_black_33"
tools:text="这是一个测试通知的内容,主要内容就是写一些文字,然后看看写的怎么样.这是一个测试通知的内容,主要内容就是写一些文字,然后看看写的怎么样" />
<TextView
android:id="@+id/tv_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_title"
android:layout_alignParentRight="true"
android:layout_marginTop="10dp"
android:layout_marginRight="5dp"
android:layout_marginBottom="10dp"
android:textColor="@color/color_theme_or_black_33"
android:textSize="@dimen/txt12"
tools:text="2025-01-01" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/text_black_99" />
</LinearLayout>
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 474 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

+4 -1
View File
@@ -25,7 +25,10 @@
<string name="title_retrieve_password">找回密码</string>
<string name="title_change_password">修改密码</string>
<string name="title_user_banner">员工心理帮助计划</string>
<string name="title_home_notice">我的消息通知</string>
<string name="title_home_notice">我的消息</string>
<string name="title_bank">我的健康银行</string>
<string name="title_home_notice_detail">消息详情</string>
<string name="title_register_title">预约详情</string>
<string name="title_check_up_detail">体检信息</string>
<string name="title_check_record_list">历年体检报告</string>
<string name="title_check_up_consult">一键咨询</string>