diff --git a/app/src/main/java/com/xjjk/healthyclients/view/HomeWatchView.kt b/app/src/main/java/com/xjjk/healthyclients/view/HomeWatchView.kt index f5b4e2d..e095135 100644 --- a/app/src/main/java/com/xjjk/healthyclients/view/HomeWatchView.kt +++ b/app/src/main/java/com/xjjk/healthyclients/view/HomeWatchView.kt @@ -1,6 +1,7 @@ package com.xjjk.healthyclients.view import android.content.Context +import android.graphics.Color import android.os.Handler import android.os.Looper import android.util.AttributeSet @@ -26,11 +27,11 @@ class HomeWatchView(context: Context?, attrs: AttributeSet?) : RelativeLayout(context, attrs, 0), ViewPagerAdapter.OnCreateFragmentListener { - companion object { + companion object { /** 自动轮播间隔时间(毫秒) */ private const val AUTO_PLAY_INTERVAL = 5000L } - private var hasWatch :Boolean=false + private var hasWatch: Boolean = false var mContext: Context? = context var mBinding: LayoutHomeItemWatchBinding = DataBindingUtil.inflate( @@ -60,25 +61,23 @@ class HomeWatchView(context: Context?, attrs: AttributeSet?) : fun init(fragment: Fragment) { val arrayOf = arrayOf("心脑血管", "癌症", "慢呼", "糖尿病", "亚健康") - mBinding.watchTabLayout.onCreateTab(arrayOf, 1) {tab-> + mBinding.watchTabLayout.onCreateTab(arrayOf, 1) { tab -> if (tab?.position != 0) { mBinding.emptyText.visibility = View.VISIBLE mBinding.emptyText.text = "紧急开发中" mBinding.viewPager.visibility = View.GONE + mBinding.layoutNoWatch.visibility = View.GONE stopAutoPlay() } else { if (!DataStoreManager.isLogin()) { - mBinding.viewPager.visibility = View.GONE - mBinding.emptyText.visibility = View.VISIBLE - mBinding.emptyText.text = "暂未登录" - }else if (hasWatch) { + showLoginEmpty() + } else if (hasWatch) { mBinding.viewPager.visibility = View.VISIBLE mBinding.emptyText.visibility = View.GONE + mBinding.layoutNoWatch.visibility = View.GONE startAutoPlay() } else { - mBinding.viewPager.visibility = View.GONE - mBinding.emptyText.visibility = View.VISIBLE - mBinding.emptyText.text = "您目前未配备智能穿戴设备" + showNoWatchPlaceholder() } } @@ -111,18 +110,36 @@ class HomeWatchView(context: Context?, attrs: AttributeSet?) : fun setWatchInfo(watchInfo: WatchInfoBean?) { if (watchInfo?.hasWatch == true) { + hasWatch = true mBinding.viewPager.visibility = View.VISIBLE - mBinding.watchName.visibility = View.VISIBLE mBinding.emptyText.visibility = View.GONE + mBinding.layoutNoWatch.visibility = View.GONE + mBinding.watchName.setTextColor(Color.parseColor("#14BEBE")) mBinding.watchName.text = "监测工具编码:${watchInfo.watchNo}" } else { + hasWatch = false + mBinding.watchName.setTextColor(Color.parseColor("#808080")) + mBinding.watchName.text = "监测工具编码:暂无信息" mBinding.viewPager.visibility = View.GONE - mBinding.watchName.visibility = View.GONE - mBinding.emptyText.visibility = View.VISIBLE - mBinding.emptyText.text = "您目前未配备智能穿戴设备" + showNoWatchPlaceholder() } } + /** 展示未登录占位文字 */ + private fun showLoginEmpty() { + mBinding.viewPager.visibility = View.GONE + mBinding.emptyText.visibility = View.VISIBLE + mBinding.emptyText.text = "暂未登录" + mBinding.layoutNoWatch.visibility = View.GONE + } + + /** 展示已登录但未绑定手表的图文占位视图 */ + private fun showNoWatchPlaceholder() { + mBinding.viewPager.visibility = View.GONE + mBinding.emptyText.visibility = View.GONE + mBinding.layoutNoWatch.visibility = View.VISIBLE + } + /** * 接收手表详细数据并通过 EventBus 通知各 WatchItemFragment 刷新 * @param dataList 接口返回的手表各项健康数据列表(索引与 Tab position 对应) diff --git a/app/src/main/java/com/xjjk/healthyclients/view/WatchBindDialog.kt b/app/src/main/java/com/xjjk/healthyclients/view/WatchBindDialog.kt new file mode 100644 index 0000000..dca5279 --- /dev/null +++ b/app/src/main/java/com/xjjk/healthyclients/view/WatchBindDialog.kt @@ -0,0 +1,118 @@ +package com.xjjk.healthyclients.view + +import android.app.AlertDialog +import android.content.Context +import android.graphics.Color +import android.graphics.drawable.ColorDrawable +import android.os.Build +import android.os.Bundle +import android.view.Gravity +import android.view.LayoutInflater +import android.view.View +import android.view.WindowManager +import android.widget.LinearLayout +import android.widget.RatingBar +import android.widget.Toast +import androidx.databinding.DataBindingUtil +import com.sw.healthyclients.view.CustomToast +import com.xjjk.healthyclients.R +import com.xjjk.healthyclients.databinding.DialogAppraiseBinding + +class AppraiseDialog constructor( + context: Context +) : AlertDialog(context) { + lateinit var mOnSubmitClickListener: OnSubmitClickListener + lateinit var binding: DialogAppraiseBinding + + init { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + create() + } else { + onCreate(null) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = DataBindingUtil.inflate( + LayoutInflater.from(context), + R.layout.dialog_appraise, null, false + ) + setContentView(binding.root) + window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))//设置dialog背景透明 + window?.setGravity(Gravity.BOTTOM) + window?.setLayout( + context.resources.displayMetrics.widthPixels, + LinearLayout.LayoutParams.WRAP_CONTENT + );//设置对话框大小 + window?.clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM) + binding.btnSubmit.setOnClickListener { + if (getRating()==0F) { + CustomToast.makeText(context, "您还没有选择星级评分", Toast.LENGTH_SHORT).show() + return@setOnClickListener + } + if (this::mOnSubmitClickListener.isInitialized) { + mOnSubmitClickListener?.onSubmitClick(this@AppraiseDialog) + } + this.cancel() + } + binding.btnClose.setOnClickListener { + if (this::mOnSubmitClickListener.isInitialized) { + mOnSubmitClickListener?.onCancelClick(this@AppraiseDialog) + } + this.cancel() + } + + } + + fun setOnSubmitClickListener(onSubmitClickListener: OnSubmitClickListener): AppraiseDialog { + this.mOnSubmitClickListener = onSubmitClickListener + return this + } + + interface OnSubmitClickListener { + fun onSubmitClick(viewDialog: AppraiseDialog) + fun onCancelClick(viewDialog: AppraiseDialog){} + } + + fun setDialogTitle(title: String, titleSize: Float = 18f): AppraiseDialog { + binding.tvTitle.visibility = View.VISIBLE + binding.tvTitle.text = title + binding.tvTitle.textSize = titleSize + return this + } + + fun setContentHint(text: String, textSize: Float = 13f): AppraiseDialog { + binding.etAppraise.hint = text + binding.etAppraise.textSize = textSize + return this + } + + fun setBtnText(text: String, btnTextSize: Float = 18f): AppraiseDialog { + binding.btnSubmit.text = text + binding.btnSubmit.textSize = btnTextSize + return this + } + + fun setDialogCancelable(flag: Boolean): AppraiseDialog { + setCancelable(flag) + return this + } + + fun getAppraiseContext(): String { + return binding.etAppraise.text.trim().toString() + } + + fun getRatingBar(): RatingBar { + return binding.ratingBar + } + fun getRating(): Float { + return getRatingBar().rating + } + /** + * 获取匿名状态 + */ + fun getAnonymityStatus(): Boolean { + return binding.cbAnonymity.isChecked + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable-xxhdpi/icon_empty1.png b/app/src/main/res/drawable-xxhdpi/icon_empty1.png new file mode 100644 index 0000000..888ec95 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_empty1.png differ diff --git a/app/src/main/res/layout/dialog_bind_watch.xml b/app/src/main/res/layout/dialog_bind_watch.xml new file mode 100644 index 0000000..ccab95e --- /dev/null +++ b/app/src/main/res/layout/dialog_bind_watch.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + +