feat(watch): 新增手表绑定/解绑功能
- 新增 WatchBindDialog 对话框,支持手表序列号输入和绑定/解绑操作 - HomeApi 新增 getBindDevice 和 getUnbundleDevice 接口 - HomeRepository 新增对应的绑定/解绑方法 - HomeViewModel 新增 watchBindStatus 状态流,用于监听绑定结果 - HomeFragment 新增手表绑定对话框交互逻辑 - 优化手表头部点击事件,已绑定时跳转详情,未绑定时显示绑定对话框 - 完善手表信息展示和状态管理
This commit is contained in:
@@ -1,10 +1,10 @@
|
|||||||
package com.xjjk.healthyclients.data.api
|
package com.xjjk.healthyclients.data.api
|
||||||
|
|
||||||
|
import com.xjjk.healthyclients.bean.home.EncryptInfoBean
|
||||||
import com.xjjk.healthyclients.bean.home.HomeBannerBean
|
import com.xjjk.healthyclients.bean.home.HomeBannerBean
|
||||||
import com.xjjk.healthyclients.bean.home.HomeNoticeBean
|
import com.xjjk.healthyclients.bean.home.HomeNoticeBean
|
||||||
import com.xjjk.healthyclients.bean.home.HomeWatchAllDataBean
|
import com.xjjk.healthyclients.bean.home.HomeWatchAllDataBean
|
||||||
import com.xjjk.healthyclients.bean.home.WatchInfoBean
|
import com.xjjk.healthyclients.bean.home.WatchInfoBean
|
||||||
import com.xjjk.healthyclients.bean.home.EncryptInfoBean
|
|
||||||
import com.xjjk.healthyclients.bean.user.CheckInBean
|
import com.xjjk.healthyclients.bean.user.CheckInBean
|
||||||
import com.xjjk.healthyclients.bean.user.PointDetailBean
|
import com.xjjk.healthyclients.bean.user.PointDetailBean
|
||||||
import com.xjjk.healthyclients.bean.user.PointRank
|
import com.xjjk.healthyclients.bean.user.PointRank
|
||||||
@@ -92,5 +92,16 @@ interface HomeApi {
|
|||||||
@GET("/health-system/api/sys/encryptInfo")
|
@GET("/health-system/api/sys/encryptInfo")
|
||||||
suspend fun getSysEnCryptInfo(@QueryMap params: MutableMap<String, Any?>): ApiResponse<EncryptInfoBean>
|
suspend fun getSysEnCryptInfo(@QueryMap params: MutableMap<String, Any?>): ApiResponse<EncryptInfoBean>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 绑定手表
|
||||||
|
*/
|
||||||
|
@GET("/health-watch/watch/watchDevice/app/bindDevice")
|
||||||
|
suspend fun getBindDevice(@QueryMap params: MutableMap<String, Any?>): ApiResponse<String>
|
||||||
|
/**
|
||||||
|
* 解绑手表
|
||||||
|
*/
|
||||||
|
@GET("/health-watch/watch/watchDevice/app/unbundleDevice")
|
||||||
|
suspend fun getUnbundleDevice(@QueryMap params: MutableMap<String, Any?>): ApiResponse<String>
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -109,4 +109,18 @@ object HomeRepository : BaseRepository() {
|
|||||||
service.getSysEnCryptInfo(map)
|
service.getSysEnCryptInfo(map)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
suspend fun getBindDevice(watchNo: String?): ApiResponse<String> {
|
||||||
|
return apiCall {
|
||||||
|
val map = mutableMapOf<String, Any?>()
|
||||||
|
map["watchNo"] = watchNo
|
||||||
|
service.getBindDevice(map)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
suspend fun getUnbundleDevice(watchNo: String?): ApiResponse<String> {
|
||||||
|
return apiCall {
|
||||||
|
val map = mutableMapOf<String, Any?>()
|
||||||
|
map["watchNo"] = watchNo
|
||||||
|
service.getUnbundleDevice(map)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -16,6 +16,7 @@ import com.xjjk.healthyclients.R
|
|||||||
import com.xjjk.healthyclients.adapter.common.MultiItemTypeAdapter
|
import com.xjjk.healthyclients.adapter.common.MultiItemTypeAdapter
|
||||||
import com.xjjk.healthyclients.base.BaseVMBFragment
|
import com.xjjk.healthyclients.base.BaseVMBFragment
|
||||||
import com.xjjk.healthyclients.bean.guidance.GuidanceListBean
|
import com.xjjk.healthyclients.bean.guidance.GuidanceListBean
|
||||||
|
import com.xjjk.healthyclients.bean.home.WatchInfoBean
|
||||||
import com.xjjk.healthyclients.databinding.FragmentHomeBinding
|
import com.xjjk.healthyclients.databinding.FragmentHomeBinding
|
||||||
import com.xjjk.healthyclients.event.HomeTabChangeEvent
|
import com.xjjk.healthyclients.event.HomeTabChangeEvent
|
||||||
import com.xjjk.healthyclients.retrofit.UrlConfig
|
import com.xjjk.healthyclients.retrofit.UrlConfig
|
||||||
@@ -35,6 +36,7 @@ import com.xjjk.healthyclients.ui.viewmodel.HomeViewModel
|
|||||||
import com.xjjk.healthyclients.utils.ConstantUtils
|
import com.xjjk.healthyclients.utils.ConstantUtils
|
||||||
import com.xjjk.healthyclients.utils.IMInputActionSettingUtils
|
import com.xjjk.healthyclients.utils.IMInputActionSettingUtils
|
||||||
import com.xjjk.healthyclients.utils.TUIUtils
|
import com.xjjk.healthyclients.utils.TUIUtils
|
||||||
|
import com.xjjk.healthyclients.view.WatchBindDialog
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
@@ -48,12 +50,15 @@ class HomeFragment :
|
|||||||
BaseVMBFragment<HomeViewModel, FragmentHomeBinding>(R.layout.fragment_home),
|
BaseVMBFragment<HomeViewModel, FragmentHomeBinding>(R.layout.fragment_home),
|
||||||
SwipeRefreshLayout.OnRefreshListener {
|
SwipeRefreshLayout.OnRefreshListener {
|
||||||
|
|
||||||
|
var watchBindDialog: WatchBindDialog ?=null
|
||||||
|
|
||||||
var stringList: MutableList<String> = mutableListOf()
|
var stringList: MutableList<String> = mutableListOf()
|
||||||
var mDoctorList = arrayListOf<GuidanceListBean>()
|
var mDoctorList = arrayListOf<GuidanceListBean>()
|
||||||
var mGuidanceFragmentDoctorAdapter: GuidanceFragmentDoctorAdapter? = null
|
var mGuidanceFragmentDoctorAdapter: GuidanceFragmentDoctorAdapter? = null
|
||||||
|
|
||||||
var REQUEST_DURATION = 1000 * 120L
|
var REQUEST_DURATION = 1000 * 120L
|
||||||
var noticeTime = REQUEST_DURATION
|
var noticeTime = REQUEST_DURATION
|
||||||
|
var watchInfo: WatchInfoBean? = null
|
||||||
|
|
||||||
/** 通知轮播协程 Job,重新启动前先取消旧任务,防止多协程并发叠加 */
|
/** 通知轮播协程 Job,重新启动前先取消旧任务,防止多协程并发叠加 */
|
||||||
private var noticeJob: Job? = null
|
private var noticeJob: Job? = null
|
||||||
@@ -62,6 +67,14 @@ class HomeFragment :
|
|||||||
override fun initView(root: View?, savedInstanceState: Bundle?) {
|
override fun initView(root: View?, savedInstanceState: Bundle?) {
|
||||||
mBinding.swipeRefresh.initColors()
|
mBinding.swipeRefresh.initColors()
|
||||||
mBinding.swipeRefresh.setOnRefreshListener(this@HomeFragment)
|
mBinding.swipeRefresh.setOnRefreshListener(this@HomeFragment)
|
||||||
|
watchBindDialog = WatchBindDialog(requireContext()) { watchName, type ->
|
||||||
|
// 0 绑定 1 解绑
|
||||||
|
if (type == 0) {
|
||||||
|
mViewModel.getBindDevice(watchName)
|
||||||
|
} else {
|
||||||
|
mViewModel.getUnbundleDevice(watchName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var manager = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
|
var manager = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
|
||||||
mBinding.layoutItem3.fragmentGuidanceRvDoctor.layoutManager = manager
|
mBinding.layoutItem3.fragmentGuidanceRvDoctor.layoutManager = manager
|
||||||
@@ -136,13 +149,35 @@ class HomeFragment :
|
|||||||
layoutItem1.homeHeadTab4, layoutItem3.tvDoctorMore
|
layoutItem1.homeHeadTab4, layoutItem3.tvDoctorMore
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
mBinding.watchView.mBinding.layoutWatchMore.setOnClickListener{
|
mBinding.watchView.mBinding.imgWatchMore.setOnClickListener {
|
||||||
if (DataStoreManager.isLogin()) {
|
if (DataStoreManager.isLogin()) {
|
||||||
EventBus.getDefault().post(HomeTabChangeEvent().apply { index = 3 })
|
if (watchInfo?.hasWatch==true){
|
||||||
|
EventBus.getDefault().post(HomeTabChangeEvent().apply { index = 3 })
|
||||||
|
}else {
|
||||||
|
showWatchBindDialog()
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
toActivity(LoginActivity::class.java)
|
toActivity(LoginActivity::class.java)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
mBinding.watchView.mBinding.watchName.setOnClickListener {
|
||||||
|
if (DataStoreManager.isLogin()) {
|
||||||
|
if (watchInfo?.hasWatch==true){
|
||||||
|
showWatchBindDialog(watchInfo?.watchNo)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
toActivity(LoginActivity::class.java)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mBinding.watchView.mBinding.btnBindWatch.setOnClickListener {
|
||||||
|
showWatchBindDialog()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun showWatchBindDialog(watchId: String? = null) {
|
||||||
|
watchBindDialog?.showWatchInfo(watchId)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onClick(v: View?) {
|
override fun onClick(v: View?) {
|
||||||
@@ -180,7 +215,7 @@ class HomeFragment :
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
requireContext().startWebActivity(
|
requireContext().startWebActivity(
|
||||||
UrlConfig.getBankH5Url()+ "?param=" + value,
|
UrlConfig.getBankH5Url() + "?param=" + value,
|
||||||
isFull = true,
|
isFull = true,
|
||||||
myTitle = "健康银行",
|
myTitle = "健康银行",
|
||||||
hideStatus = true
|
hideStatus = true
|
||||||
@@ -320,24 +355,34 @@ class HomeFragment :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lifecycleScope.launch{
|
lifecycleScope.launch {
|
||||||
repeatOnLifecycle(Lifecycle.State.CREATED){
|
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||||
mViewModel.watchInfo.collectLatest { bean ->
|
mViewModel.watchInfo.collectLatest { bean ->
|
||||||
|
watchInfo = bean
|
||||||
mBinding.watchView.setWatchInfo(bean)
|
mBinding.watchView.setWatchInfo(bean)
|
||||||
if (bean?.hasWatch==true) {//有手表的情况下去获取手表数据
|
if (bean?.hasWatch == true) {//有手表的情况下去获取手表数据
|
||||||
mViewModel.getHomeWatchData(DateUtil.nowStringDateShort)
|
mViewModel.getHomeWatchData(DateUtil.nowStringDateShort)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lifecycleScope.launch{
|
lifecycleScope.launch {
|
||||||
repeatOnLifecycle(Lifecycle.State.CREATED){
|
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||||
mViewModel.watchAllData.collectLatest { bean ->
|
mViewModel.watchAllData.collectLatest { bean ->
|
||||||
mBinding.watchView.setWatchAllData(bean)
|
mBinding.watchView.setWatchAllData(bean)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
lifecycleScope.launch {
|
||||||
|
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||||
|
mViewModel.watchBindStatus.collectLatest {
|
||||||
|
showToast(it)
|
||||||
|
watchBindDialog?.cancel()
|
||||||
|
mViewModel.getHomeWatchInfo(DataStoreManager.getUserId())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
// lifecycleScope.launch{
|
// lifecycleScope.launch{
|
||||||
// repeatOnLifecycle(Lifecycle.State.CREATED){
|
// repeatOnLifecycle(Lifecycle.State.CREATED){
|
||||||
// mViewModel.enCryptInfoUrl.collectLatest { url ->
|
// mViewModel.enCryptInfoUrl.collectLatest { url ->
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ class HomeViewModel : BaseViewModel() {
|
|||||||
//手表
|
//手表
|
||||||
var watchInfo = MutableSharedFlow<WatchInfoBean?>()
|
var watchInfo = MutableSharedFlow<WatchInfoBean?>()
|
||||||
var watchAllData = MutableSharedFlow<MutableList<HomeWatchAllDataBean>?>()
|
var watchAllData = MutableSharedFlow<MutableList<HomeWatchAllDataBean>?>()
|
||||||
|
var watchBindStatus = MutableSharedFlow<String?>()
|
||||||
|
|
||||||
|
|
||||||
var isRefreshing = MutableStateFlow(false)
|
var isRefreshing = MutableStateFlow(false)
|
||||||
@@ -177,6 +178,29 @@ class HomeViewModel : BaseViewModel() {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
fun getBindDevice(str: String?) {
|
||||||
|
launch(
|
||||||
|
{
|
||||||
|
handleRequest(
|
||||||
|
HomeRepository.getBindDevice(str),
|
||||||
|
successBlock = {
|
||||||
|
watchBindStatus.emit(it.result)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
fun getUnbundleDevice(str: String?) {
|
||||||
|
launch(
|
||||||
|
{
|
||||||
|
handleRequest(
|
||||||
|
HomeRepository.getUnbundleDevice(str),
|
||||||
|
successBlock = {
|
||||||
|
watchBindStatus.emit(it.result)
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -4,39 +4,33 @@ import android.app.AlertDialog
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.graphics.drawable.ColorDrawable
|
import android.graphics.drawable.ColorDrawable
|
||||||
import android.os.Build
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.text.TextUtils
|
||||||
import android.view.Gravity
|
import android.view.Gravity
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
import android.widget.RatingBar
|
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.databinding.DataBindingUtil
|
import androidx.databinding.DataBindingUtil
|
||||||
|
import com.sw.healthyclients.data.local.DataStoreManager
|
||||||
import com.sw.healthyclients.view.CustomToast
|
import com.sw.healthyclients.view.CustomToast
|
||||||
import com.xjjk.healthyclients.R
|
import com.xjjk.healthyclients.R
|
||||||
import com.xjjk.healthyclients.databinding.DialogAppraiseBinding
|
import com.xjjk.healthyclients.databinding.DialogBindWatchBinding
|
||||||
|
import com.xjjk.healthyclients.superfuntion.orEmptyDefault
|
||||||
|
|
||||||
class AppraiseDialog constructor(
|
class WatchBindDialog(context: Context, var listener: (String,Int) -> Unit) : AlertDialog(context) {
|
||||||
context: Context
|
lateinit var binding: DialogBindWatchBinding
|
||||||
) : AlertDialog(context) {
|
private var type = 0 // 0 绑定 1 解绑
|
||||||
lateinit var mOnSubmitClickListener: OnSubmitClickListener
|
|
||||||
lateinit var binding: DialogAppraiseBinding
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
create()
|
||||||
create()
|
|
||||||
} else {
|
|
||||||
onCreate(null)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
binding = DataBindingUtil.inflate(
|
binding = DataBindingUtil.inflate(
|
||||||
LayoutInflater.from(context),
|
LayoutInflater.from(context),
|
||||||
R.layout.dialog_appraise, null, false
|
R.layout.dialog_bind_watch, null, false
|
||||||
)
|
)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))//设置dialog背景透明
|
window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))//设置dialog背景透明
|
||||||
@@ -46,73 +40,37 @@ class AppraiseDialog constructor(
|
|||||||
LinearLayout.LayoutParams.WRAP_CONTENT
|
LinearLayout.LayoutParams.WRAP_CONTENT
|
||||||
);//设置对话框大小
|
);//设置对话框大小
|
||||||
window?.clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM)
|
window?.clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM)
|
||||||
binding.btnSubmit.setOnClickListener {
|
setCanceledOnTouchOutside(true)
|
||||||
if (getRating()==0F) {
|
binding.confirm.setOnClickListener {
|
||||||
CustomToast.makeText(context, "您还没有选择星级评分", Toast.LENGTH_SHORT).show()
|
if (binding.etWatchid.text.toString().isEmpty()) {
|
||||||
return@setOnClickListener
|
CustomToast.makeText(context, "请输入序列号", Toast.LENGTH_SHORT).show()
|
||||||
|
} else {
|
||||||
|
listener.invoke(binding.etWatchid.text.toString(),type)
|
||||||
}
|
}
|
||||||
if (this::mOnSubmitClickListener.isInitialized) {
|
|
||||||
mOnSubmitClickListener?.onSubmitClick(this@AppraiseDialog)
|
|
||||||
}
|
|
||||||
this.cancel()
|
|
||||||
}
|
}
|
||||||
binding.btnClose.setOnClickListener {
|
binding.btnClose.setOnClickListener {
|
||||||
if (this::mOnSubmitClickListener.isInitialized) {
|
|
||||||
mOnSubmitClickListener?.onCancelClick(this@AppraiseDialog)
|
|
||||||
}
|
|
||||||
this.cancel()
|
this.cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setOnSubmitClickListener(onSubmitClickListener: OnSubmitClickListener): AppraiseDialog {
|
fun showWatchInfo(watchId: String? = null) {
|
||||||
this.mOnSubmitClickListener = onSubmitClickListener
|
show()
|
||||||
return this
|
binding.etUserid.setText(DataStoreManager.getUserInfo().workNo)
|
||||||
|
binding.etUsername.setText(DataStoreManager.getUserInfo().realname)
|
||||||
|
binding.etWatchid.setText(watchId.orEmptyDefault(""))
|
||||||
|
if (TextUtils.isEmpty(watchId)) {
|
||||||
|
binding.etWatchid.isEnabled = true
|
||||||
|
binding.confirm.setText("绑定")
|
||||||
|
type = 0
|
||||||
|
} else {
|
||||||
|
binding.etWatchid.isEnabled = false
|
||||||
|
binding.confirm.setText("解绑")
|
||||||
|
type = 1
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -10,73 +10,164 @@
|
|||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@drawable/rectangle_top_round_corner20_white">
|
android:background="@drawable/rectangle_round_top_corner8_white">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_title"
|
android:id="@+id/tv_title"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerHorizontal="true"
|
android:layout_centerHorizontal="true"
|
||||||
android:layout_marginTop="@dimen/dp_20"
|
android:layout_marginTop="@dimen/dp_20"
|
||||||
|
android:text="健康监测"
|
||||||
android:textColor="@color/text_black_33"
|
android:textColor="@color/text_black_33"
|
||||||
android:textSize="@dimen/txt14"
|
android:textSize="@dimen/txt16"
|
||||||
android:text="@string/dialog_appraise_title"/>
|
android:textStyle="bold" />
|
||||||
<RatingBar
|
|
||||||
android:id="@+id/rating_bar"
|
<RelativeLayout
|
||||||
android:layout_width="wrap_content"
|
android:id="@+id/userid_layout"
|
||||||
android:layout_height="wrap_content"
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="52dp"
|
||||||
android:layout_below="@+id/tv_title"
|
android:layout_below="@+id/tv_title"
|
||||||
style="@style/Widget.AppCompat.RatingBar.Indicator"
|
android:layout_marginTop="10dp"
|
||||||
android:layout_marginTop="@dimen/dp_24"
|
android:gravity="center_vertical">
|
||||||
android:layout_marginHorizontal="@dimen/dp_12"
|
|
||||||
android:layout_centerHorizontal="true"
|
<TextView
|
||||||
android:numStars="5"
|
android:layout_width="wrap_content"
|
||||||
android:stepSize="0.5"
|
android:layout_height="wrap_content"
|
||||||
android:rating="0"
|
android:layout_centerVertical="true"
|
||||||
android:isIndicator="false"
|
android:layout_marginLeft="15dp"
|
||||||
android:progressTint="@color/rating_bar_color"
|
android:text="工 号:"
|
||||||
android:secondaryProgressTint="@color/rating_bar_color"/>
|
android:textColor="@color/text_black_33"
|
||||||
<EditText
|
android:textSize="16sp" />
|
||||||
android:id="@+id/et_appraise"
|
|
||||||
android:longClickable="false"
|
<com.allen.library.shape.ShapeLinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_marginLeft="82dp"
|
||||||
|
android:layout_marginRight="15dp"
|
||||||
|
app:shapeCornersRadius="8dp"
|
||||||
|
app:shapeSolidColor="#F5F7FB"
|
||||||
|
app:shapeStrokeColor="#E6E6EA"
|
||||||
|
app:shapeStrokeWidth="1dp">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/et_userid"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:gravity="start|center_vertical"
|
||||||
|
android:paddingLeft="8dp"
|
||||||
|
android:textColor="@color/text_black_33"
|
||||||
|
android:textSize="16sp"
|
||||||
|
tools:text="666666" />
|
||||||
|
</com.allen.library.shape.ShapeLinearLayout>
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:id="@+id/username_layout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="52dp"
|
||||||
android:layout_centerHorizontal="true"
|
android:layout_below="@+id/userid_layout"
|
||||||
android:layout_below="@+id/rating_bar"
|
android:layout_marginTop="10dp"
|
||||||
android:layout_marginTop="@dimen/dp_18"
|
android:gravity="center_vertical">
|
||||||
android:layout_marginHorizontal="@dimen/dp_15"
|
|
||||||
android:background="@drawable/rectangle_round_corner10_gray"
|
<TextView
|
||||||
android:paddingHorizontal="@dimen/dp_12"
|
android:layout_width="wrap_content"
|
||||||
android:paddingVertical="@dimen/dp_9"
|
android:layout_height="wrap_content"
|
||||||
android:minHeight="@dimen/dp_130"
|
android:layout_centerVertical="true"
|
||||||
android:gravity="top"
|
android:layout_marginLeft="15dp"
|
||||||
android:textColor="@color/text_black_33"
|
android:text="姓 名:"
|
||||||
android:textSize="@dimen/txt13"
|
android:textColor="@color/text_black_33"
|
||||||
android:hint="@string/dialog_appraise_hint"/>
|
android:textSize="16sp" />
|
||||||
<CheckBox
|
|
||||||
android:id="@+id/cb_anonymity"
|
<com.allen.library.shape.ShapeLinearLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginTop="@dimen/dp_10"
|
android:layout_marginLeft="82dp"
|
||||||
android:layout_alignLeft="@+id/et_appraise"
|
android:layout_marginRight="15dp"
|
||||||
android:layout_below="@+id/et_appraise"
|
app:shapeCornersRadius="8dp"
|
||||||
android:button="@drawable/check_theme_style"
|
app:shapeSolidColor="#F5F7FB"
|
||||||
android:paddingLeft="@dimen/dp_8"
|
app:shapeStrokeColor="#E6E6EA"
|
||||||
android:checked="false"
|
app:shapeStrokeWidth="1dp">
|
||||||
android:text="@string/dialog_appraise_anonymity"/>
|
|
||||||
<Button
|
<TextView
|
||||||
android:id="@+id/btn_submit"
|
android:id="@+id/et_username"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:gravity="start|center_vertical"
|
||||||
|
android:paddingLeft="8dp"
|
||||||
|
android:textColor="@color/text_black_33"
|
||||||
|
android:textSize="16sp"
|
||||||
|
tools:text="666666" />
|
||||||
|
</com.allen.library.shape.ShapeLinearLayout>
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:id="@+id/watchid_layout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="52dp"
|
||||||
android:background="@drawable/rectangle_round_corner20_theme"
|
android:layout_below="@+id/username_layout"
|
||||||
android:text="@string/dialog_appraise_submit"
|
android:layout_marginTop="10dp"
|
||||||
|
android:gravity="center_vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
|
android:layout_marginLeft="15dp"
|
||||||
|
android:text="序列号:"
|
||||||
|
android:textColor="@color/text_black_33"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
<com.allen.library.shape.ShapeLinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_marginLeft="82dp"
|
||||||
|
android:layout_marginRight="15dp"
|
||||||
|
app:shapeCornersRadius="8dp"
|
||||||
|
app:shapeSolidColor="#FFFFFF"
|
||||||
|
app:shapeStrokeColor="#E6E6EA"
|
||||||
|
app:shapeStrokeWidth="1dp">
|
||||||
|
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/et_watchid"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="@null"
|
||||||
|
android:gravity="start|center_vertical"
|
||||||
|
android:paddingLeft="8dp"
|
||||||
|
android:textColor="@color/text_black_33"
|
||||||
|
android:textSize="16sp"
|
||||||
|
tools:text="666666" />
|
||||||
|
</com.allen.library.shape.ShapeLinearLayout>
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1dp"
|
||||||
|
android:layout_below="@id/watchid_layout"
|
||||||
|
android:layout_marginTop="20dp"
|
||||||
|
android:background="#EAECF1" />
|
||||||
|
|
||||||
|
|
||||||
|
<com.allen.library.shape.ShapeButton
|
||||||
|
android:id="@+id/confirm"
|
||||||
|
android:layout_width="215dp"
|
||||||
|
android:layout_height="44dp"
|
||||||
|
android:layout_below="@id/watchid_layout"
|
||||||
|
android:layout_centerHorizontal="true"
|
||||||
|
android:layout_marginTop="30dp"
|
||||||
|
android:layout_marginBottom="10dp"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="绑定"
|
||||||
android:textColor="@color/white"
|
android:textColor="@color/white"
|
||||||
android:minHeight="@dimen/dp_0"
|
android:textSize="16dp"
|
||||||
android:layout_below="@+id/cb_anonymity"
|
android:textStyle="bold"
|
||||||
android:layout_marginHorizontal="@dimen/dp_48"
|
app:shapeCornersRadius="22dp"
|
||||||
android:layout_marginVertical="@dimen/dp_24"
|
app:shapeSolidColor="#21BEBD" />
|
||||||
android:outlineProvider="none"
|
|
||||||
android:textSize="@dimen/txt14"
|
|
||||||
android:paddingVertical="@dimen/dp_11"/>
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/btn_close"
|
android:id="@+id/btn_close"
|
||||||
android:layout_width="@dimen/dp_40"
|
android:layout_width="@dimen/dp_40"
|
||||||
@@ -84,6 +175,6 @@
|
|||||||
android:layout_alignParentRight="true"
|
android:layout_alignParentRight="true"
|
||||||
android:background="@android:color/transparent"
|
android:background="@android:color/transparent"
|
||||||
android:padding="@dimen/dp_15"
|
android:padding="@dimen/dp_15"
|
||||||
android:src="@drawable/ic_close"/>
|
android:src="@drawable/ic_close" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
</layout>
|
</layout>
|
||||||
Reference in New Issue
Block a user