diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/TextSwitcher.kt b/app/src/main/java/com/casic/xz/meterage/extensions/TextSwitcher.kt new file mode 100644 index 0000000..c6bf0bb --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/TextSwitcher.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.extensions + +import android.view.animation.AlphaAnimation +import android.view.animation.AnimationSet +import android.view.animation.TranslateAnimation +import android.widget.TextSwitcher + +//上下滚动消息动画扩展 +fun TextSwitcher.setAnimation() { + val translateIn = TranslateAnimation(0f, 0f, 50f, 0f) + val alphaIn = AlphaAnimation(0f, 1f) + val animatorSetIn = AnimationSet(true) + animatorSetIn.addAnimation(translateIn) + animatorSetIn.addAnimation(alphaIn) + animatorSetIn.duration = 1000 + this.inAnimation = animatorSetIn + + val translateOut = TranslateAnimation(0f, 0f, 0f, -50f) + val alphaOut = AlphaAnimation(1f, 0f) + val animatorSetOut = AnimationSet(true) + animatorSetOut.addAnimation(translateOut) + animatorSetOut.addAnimation(alphaOut) + animatorSetOut.duration = 1000 + this.outAnimation = animatorSetOut +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/TextSwitcher.kt b/app/src/main/java/com/casic/xz/meterage/extensions/TextSwitcher.kt new file mode 100644 index 0000000..c6bf0bb --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/extensions/TextSwitcher.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.extensions + +import android.view.animation.AlphaAnimation +import android.view.animation.AnimationSet +import android.view.animation.TranslateAnimation +import android.widget.TextSwitcher + +//上下滚动消息动画扩展 +fun TextSwitcher.setAnimation() { + val translateIn = TranslateAnimation(0f, 0f, 50f, 0f) + val alphaIn = AlphaAnimation(0f, 1f) + val animatorSetIn = AnimationSet(true) + animatorSetIn.addAnimation(translateIn) + animatorSetIn.addAnimation(alphaIn) + animatorSetIn.duration = 1000 + this.inAnimation = animatorSetIn + + val translateOut = TranslateAnimation(0f, 0f, 0f, -50f) + val alphaOut = AlphaAnimation(1f, 0f) + val animatorSetOut = AnimationSet(true) + animatorSetOut.addAnimation(translateOut) + animatorSetOut.addAnimation(alphaOut) + animatorSetOut.duration = 1000 + this.outAnimation = animatorSetOut +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt index 37f3d8c..9ae9284 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt @@ -1,7 +1,7 @@ package com.casic.xz.meterage.fragment import android.graphics.Color -import android.util.Log +import android.os.Handler import android.view.View import android.widget.LinearLayout import android.widget.TextView @@ -13,6 +13,7 @@ import com.casic.xz.meterage.base.BaseApplication import com.casic.xz.meterage.extensions.diffCurrentTime import com.casic.xz.meterage.extensions.formatToDate +import com.casic.xz.meterage.extensions.setAnimation import com.casic.xz.meterage.extensions.showEmptyPage import com.casic.xz.meterage.model.NoticeListModel import com.casic.xz.meterage.model.RemindListModel @@ -66,112 +67,16 @@ textView.setTextColor(Color.BLACK) textView } + noticeSwitcherView.setAnimation() + timeSwitcherView.setFactory { val textView = TextView(requireContext()) textView.setTextColor(R.color.hintColor.convertColor(requireContext())) textView } - weakReferenceHandler = WeakReferenceHandler { msg -> - when (msg.what) { - 2023030601 -> { - //TODO 添加切换动画 - if (noticeBeans.size != 0) { - val model = noticeBeans[currentIndex % noticeBeans.size] + timeSwitcherView.setAnimation() - noticeSwitcherView.setText(model.noticeTitle) - - val deltaT = model.createTime.diffCurrentTime() - val diffTime = if (deltaT < 24) { - "${deltaT}小时前" - } else { - model.createTime.formatToDate() - } - timeSwitcherView.setText(diffTime) - currentIndex++ - } else { - noticeSwitcherView.setText("暂无新消息") - timeSwitcherView.setText("--:--") - } - } - 2023030801 -> { - if (isRefresh || isLoadMore) { - remindAdapter.notifyDataSetChanged() - } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有待办提醒") { - pageIndex = 1 - getRemindListByPage() - } - } else { - emptyView!!.hide() - remindAdapter = - object : NormalRecyclerAdapter( - R.layout.item_remind_rv_l, dataBeans - ) { - override fun convertView( - viewHolder: ViewHolder, - position: Int, - item: RemindListModel.DataModel.RowsModel - ) { - if (position < 3) { - val deltaT = item.createTime.diffCurrentTime() - val diffTime = if (deltaT < 24) { - "${deltaT}小时前" - } else { - item.createTime.formatToDate() - } - viewHolder.setText( - R.id.remindStateView, item.messageTypeName - ).setText(R.id.remindTitleView, item.messageContent) - .setText(R.id.remindTimeView, diffTime) - } else { - viewHolder.setText( - R.id.remindStateView, item.messageTypeName - ).setText(R.id.remindTitleView, item.messageContent) - .setText( - R.id.remindTimeView, - item.createTime.formatToDate() - ) - } - } - } - remindRecyclerView.addItemDecoration( - DividerItemDecoration( - requireContext(), DividerItemDecoration.VERTICAL - ) - ) - remindRecyclerView.adapter = remindAdapter - remindAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { - override fun onItemClicked( - position: Int, t: RemindListModel.DataModel.RowsModel - ) { - clickedPosition = position - AlertControlDialog.Builder() - .setContext(requireContext()) - .setTitle("提示") - .setMessage("标记此条待办提醒?") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onCancelClick() { - - } - - override fun onConfirmClick() { - noticeViewModel.updateRemindStatus(t.id) - } - }).build().show() - } - }) - } - } - } - } - true - } - + weakReferenceHandler = WeakReferenceHandler(callback) meterageTrainViewModel = ViewModelProvider(this)[MeterageTrainViewModel::class.java] meterageTrainViewModel.signInResult.observe(this) { if (it.code == 200) { @@ -277,10 +182,9 @@ timer = Timer() timer.schedule(object : TimerTask() { override fun run() { - Log.d(kTag, "run => 滚动消息") weakReferenceHandler.sendEmptyMessage(2023030601) } - }, 0, 5000) + }, 0, 3000) } override fun onResume() { @@ -346,4 +250,104 @@ params.height = statusBarHeight statusBarView.requestLayout() } + + private val callback = Handler.Callback { msg -> + when (msg.what) { + 2023030601 -> { + if (noticeBeans.size != 0) { + val model = noticeBeans[currentIndex % noticeBeans.size] + + noticeSwitcherView.setText(model.noticeTitle) + + val deltaT = model.createTime.diffCurrentTime() + val diffTime = if (deltaT < 24) { + "${deltaT}小时前" + } else { + model.createTime.formatToDate() + } + timeSwitcherView.setText(diffTime) + currentIndex++ + } else { + noticeSwitcherView.setText("暂无新消息") + timeSwitcherView.setText("--:--") + } + } + 2023030801 -> { + if (isRefresh || isLoadMore) { + remindAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("没有待办提醒") { + pageIndex = 1 + getRemindListByPage() + } + } else { + emptyView!!.hide() + remindAdapter = + object : NormalRecyclerAdapter( + R.layout.item_remind_rv_l, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, + position: Int, + item: RemindListModel.DataModel.RowsModel + ) { + if (position < 3) { + val deltaT = item.createTime.diffCurrentTime() + val diffTime = if (deltaT < 24) { + "${deltaT}小时前" + } else { + item.createTime.formatToDate() + } + viewHolder.setText( + R.id.remindStateView, item.messageTypeName + ).setText(R.id.remindTitleView, item.messageContent) + .setText(R.id.remindTimeView, diffTime) + } else { + viewHolder.setText( + R.id.remindStateView, item.messageTypeName + ).setText(R.id.remindTitleView, item.messageContent) + .setText( + R.id.remindTimeView, + item.createTime.formatToDate() + ) + } + } + } + remindRecyclerView.addItemDecoration( + DividerItemDecoration( + requireContext(), DividerItemDecoration.VERTICAL + ) + ) + remindRecyclerView.adapter = remindAdapter + remindAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked( + position: Int, t: RemindListModel.DataModel.RowsModel + ) { + clickedPosition = position + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("提示") + .setMessage("标记此条待办提醒?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick() { + noticeViewModel.updateRemindStatus(t.id) + } + }).build().show() + } + }) + } + } + } + } + true + } } \ No newline at end of file