|
|
@@ -0,0 +1,440 @@
|
|
|
+package cn.muchinfo.rma.view.base.home.xhcp
|
|
|
+
|
|
|
+import android.annotation.SuppressLint
|
|
|
+import android.content.Intent
|
|
|
+import android.graphics.Rect
|
|
|
+import android.net.Uri
|
|
|
+import android.os.Bundle
|
|
|
+import android.text.TextUtils
|
|
|
+import android.view.Gravity
|
|
|
+import android.view.LayoutInflater
|
|
|
+import android.view.View
|
|
|
+import android.view.ViewGroup
|
|
|
+import android.widget.FrameLayout
|
|
|
+import android.widget.TextView
|
|
|
+import android.widget.ViewFlipper
|
|
|
+import androidx.cardview.widget.CardView
|
|
|
+import androidx.recyclerview.widget.RecyclerView
|
|
|
+import androidx.viewpager.widget.PagerAdapter
|
|
|
+import androidx.viewpager.widget.ViewPager
|
|
|
+import cn.bingoogolapple.bgabanner.BGABanner
|
|
|
+import cn.muchinfo.rma.R
|
|
|
+import cn.muchinfo.rma.global.GlobalDataCollection
|
|
|
+import cn.muchinfo.rma.global.data.BannerData
|
|
|
+import cn.muchinfo.rma.global.data.NoticeData
|
|
|
+import cn.muchinfo.rma.lifecycle.bindOptional
|
|
|
+import cn.muchinfo.rma.view.autoWidget.*
|
|
|
+import cn.muchinfo.rma.view.base.BaseFragment
|
|
|
+import cn.muchinfo.rma.view.base.WebActivity
|
|
|
+import cn.muchinfo.rma.view.base.app.Constant
|
|
|
+import cn.muchinfo.rma.view.base.future.trade.itemView
|
|
|
+import cn.muchinfo.rma.view.base.hnstmain.performance.PerformanceInformationActivity
|
|
|
+import cn.muchinfo.rma.view.base.home.yrdz.YrAnnouncementUI
|
|
|
+import cn.muchinfo.rma.view.base.home.yrdz.YrdzNoticeActivity
|
|
|
+import cn.muchinfo.rma.view.eventbus.MainTabSelectMessageEvent
|
|
|
+import com.blankj.utilcode.util.ActivityUtils
|
|
|
+import com.blankj.utilcode.util.ConvertUtils
|
|
|
+import com.blankj.utilcode.util.SPUtils
|
|
|
+import com.facebook.drawee.view.SimpleDraweeView
|
|
|
+import com.github.aachartmodel.aainfographics.aachartcreator.*
|
|
|
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
|
|
|
+import com.qmuiteam.qmui.widget.tab.QMUITabIndicator
|
|
|
+import com.qmuiteam.qmui.widget.tab.QMUITabSegment
|
|
|
+import kotlinx.coroutines.Dispatchers
|
|
|
+import kotlinx.coroutines.GlobalScope
|
|
|
+import kotlinx.coroutines.launch
|
|
|
+import mtp.polymer.com.information_management.hnstocks.message.MessageDetailsActivity
|
|
|
+import org.greenrobot.eventbus.EventBus
|
|
|
+import org.jetbrains.anko.*
|
|
|
+import org.jetbrains.anko.support.v4.UI
|
|
|
+import org.jetbrains.anko.support.v4.viewPager
|
|
|
+
|
|
|
+class XhcpHomeFragment : BaseFragment<XhcpHomeViewModel>(){
|
|
|
+ companion object {
|
|
|
+ fun newInstance() = XhcpHomeFragment()
|
|
|
+ }
|
|
|
+
|
|
|
+ // 下拉刷新
|
|
|
+ private lateinit var swipeToLayout: SwipeToLoadLayout
|
|
|
+ private lateinit var statusLayout: StatusLayout
|
|
|
+
|
|
|
+ lateinit var segment: QMUITabSegment
|
|
|
+
|
|
|
+ var fistShow: Int = 0
|
|
|
+ var lastShow: Int = 0
|
|
|
+
|
|
|
+ var selectedTabIndex: Int = 0
|
|
|
+ private lateinit var viewPager: ViewPager
|
|
|
+
|
|
|
+ lateinit var noticeViewFlipper : ViewFlipper
|
|
|
+
|
|
|
+ lateinit var dataRecyclerview : RecyclerView
|
|
|
+
|
|
|
+ lateinit var chartView : AAChartView
|
|
|
+ lateinit var chartModel : AAChartModel
|
|
|
+
|
|
|
+ private val xhcpAnnouncementUI: XhcpAnnouncementUI by lazy {
|
|
|
+ XhcpAnnouncementUI(
|
|
|
+ this,
|
|
|
+ viewModel
|
|
|
+ )
|
|
|
+ }//公告
|
|
|
+
|
|
|
+ val thisTag by lazy {
|
|
|
+ "XhcpHomeFragment"
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onDestroy() {
|
|
|
+ super.onDestroy()
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
+ super.onCreate(savedInstanceState)
|
|
|
+ }
|
|
|
+
|
|
|
+ //viewpager的适配器
|
|
|
+ private var pagerAdapter: PagerAdapter? = null
|
|
|
+
|
|
|
+ //tabSegment标题
|
|
|
+ private val tabsArray: ArrayList<String> = arrayListOf()
|
|
|
+
|
|
|
+ //暂存的页面组
|
|
|
+ private val uiMessageList: ArrayList<_FrameLayout> = arrayListOf()
|
|
|
+
|
|
|
+ fun initMessageMenuData() {
|
|
|
+ tabsArray.add("公告")
|
|
|
+ uiMessageList.add(xhcpAnnouncementUI.root)
|
|
|
+
|
|
|
+ pagerAdapter = object : PagerAdapter() {
|
|
|
+
|
|
|
+ override fun getPageTitle(position: Int): CharSequence? = tabsArray[position]
|
|
|
+
|
|
|
+ override fun instantiateItem(container: ViewGroup, position: Int): Any {
|
|
|
+ return uiMessageList[position].apply {
|
|
|
+ container.addView(
|
|
|
+ this,
|
|
|
+ ViewGroup.LayoutParams(matchParent, matchParent)
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
|
|
|
+ (`object` as? View)?.let { container.removeView(it) }
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun isViewFromObject(view: View, `object`: Any): Boolean = view == `object`
|
|
|
+
|
|
|
+ override fun getCount(): Int = tabsArray.size
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @SuppressLint("RtlHardcoded")
|
|
|
+ private fun initViewFlipper(notice: List<NoticeData>) {
|
|
|
+ for (i in 0 until notice.size) {
|
|
|
+ val view = TextView(context)
|
|
|
+ val params = FrameLayout.LayoutParams(
|
|
|
+ ViewGroup.LayoutParams.WRAP_CONTENT,
|
|
|
+ ViewGroup.LayoutParams.WRAP_CONTENT
|
|
|
+ )
|
|
|
+ params.gravity = Gravity.LEFT or Gravity.CENTER_VERTICAL
|
|
|
+ view.layoutParams = params
|
|
|
+ view.text = notice[i].title
|
|
|
+ view.maxLines = 1
|
|
|
+ view.ellipsize = TextUtils.TruncateAt.END
|
|
|
+ view.setTextColor(context?.resources?.getColor(R.color.rma_black_33)!!)
|
|
|
+ view.textSize = 12f
|
|
|
+ view.setOnClickListener {
|
|
|
+ val intent = Intent()
|
|
|
+ intent.putExtra("data", notice[i])
|
|
|
+ intent.setClass(context!!, MessageDetailsActivity::class.java)
|
|
|
+ ActivityUtils.startActivity(intent)
|
|
|
+ }
|
|
|
+ noticeViewFlipper.addView(view)
|
|
|
+ }
|
|
|
+ //是否自动开始滚动
|
|
|
+ noticeViewFlipper.isAutoStart = true
|
|
|
+ //滚动时间
|
|
|
+ noticeViewFlipper.flipInterval = 3000
|
|
|
+ //开始滚动
|
|
|
+ noticeViewFlipper.startFlipping()
|
|
|
+ //出入动画
|
|
|
+ noticeViewFlipper.setOutAnimation(context, R.anim.slide_out_right)
|
|
|
+ noticeViewFlipper.setInAnimation(context, R.anim.slide_in_left)
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ override fun onCreateView(
|
|
|
+ inflater: LayoutInflater,
|
|
|
+ container: ViewGroup?,
|
|
|
+ savedInstanceState: Bundle?
|
|
|
+ ): View? {
|
|
|
+ return UI {
|
|
|
+ initMessageMenuData()
|
|
|
+ viewModel.getBanner()
|
|
|
+ viewModel.setDataList(thisTag){ _, _ ->
|
|
|
+ GlobalScope.launch(Dispatchers.Main) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ viewModel.queryNotice()
|
|
|
+ verticalLayout {
|
|
|
+ linearLayout {
|
|
|
+ background = resources.getDrawable(R.color.main_title_bg_color)
|
|
|
+ verticalLayout {
|
|
|
+ gravity = Gravity.CENTER
|
|
|
+ textView {
|
|
|
+ text = "新会陈皮"
|
|
|
+ textColorInt = R.color.white
|
|
|
+ textSizeAuto = 36
|
|
|
+ }.lparams(wrapContent, wrapContent) {
|
|
|
+ gravity = Gravity.CENTER_HORIZONTAL
|
|
|
+ }
|
|
|
+
|
|
|
+ }.lparams(autoSize(620), autoSize(90)) {
|
|
|
+ marginStart = autoSize(140)
|
|
|
+ }
|
|
|
+
|
|
|
+ imageView {
|
|
|
+ onThrottleFirstClick {
|
|
|
+ val intent = Intent()
|
|
|
+ intent.setClass(context, YrdzNoticeActivity::class.java)
|
|
|
+ ActivityUtils.startActivity(intent)
|
|
|
+ }
|
|
|
+ imageResource = R.mipmap.yrdz_topright_icon
|
|
|
+ }.lparams(autoSize(45), autoSize(45)) {
|
|
|
+ marginStart = autoSize(32)
|
|
|
+ topMargin = autoSize(20)
|
|
|
+ }
|
|
|
+
|
|
|
+ }.lparams(matchParent, autoSize(120))
|
|
|
+
|
|
|
+ relativeLayout {
|
|
|
+ nestedScrollView{
|
|
|
+ setOnScrollChangeListener(object : View.OnScrollChangeListener {
|
|
|
+ override fun onScrollChange(
|
|
|
+ p0: View?,
|
|
|
+ p1: Int,
|
|
|
+ p2: Int,
|
|
|
+ p3: Int,
|
|
|
+ p4: Int
|
|
|
+ ) {
|
|
|
+ val scrollRect = Rect()
|
|
|
+ getHitRect(scrollRect)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ verticalLayout {
|
|
|
+ background = resources.getDrawable(R.color.white)
|
|
|
+ inflateLayout<BGABanner>(R.layout.banner) {
|
|
|
+ // TODO 目前没有banner
|
|
|
+ viewModel.bannerList.bindOptional(context) {
|
|
|
+ setData(
|
|
|
+ R.layout.item_fresco,
|
|
|
+ it,
|
|
|
+ null
|
|
|
+ )
|
|
|
+ }
|
|
|
+ setDelegate { _, _, model, _ ->
|
|
|
+ val data = model as BannerData
|
|
|
+ val intent = Intent()
|
|
|
+ intent.putExtra("url",data.url)
|
|
|
+ intent.putExtra("title",data.title)
|
|
|
+ intent.setClass(context, WebActivity::class.java)
|
|
|
+ ActivityUtils.startActivity(intent)
|
|
|
+ }
|
|
|
+
|
|
|
+ setAdapter(object : BGABanner.Adapter<CardView, BannerData> {
|
|
|
+ override fun fillBannerItem(
|
|
|
+ banner: BGABanner?,
|
|
|
+ itemView: CardView?,
|
|
|
+ model: BannerData?,
|
|
|
+ position: Int
|
|
|
+ ) {
|
|
|
+ val simpleDraweeView: SimpleDraweeView =
|
|
|
+ itemView!!.findViewById(R.id.sdv_item_fresco_content)
|
|
|
+ simpleDraweeView.setImageURI(
|
|
|
+ Uri.parse(if (SPUtils.getInstance().getString(Constant.uploadUrl).contains("upload")){
|
|
|
+ SPUtils.getInstance().getString(Constant.uploadUrl).replace("/upload","") + model?.imagepath?.substring(1)
|
|
|
+ }else{
|
|
|
+ SPUtils.getInstance().getString(Constant.uploadUrl) + model?.imagepath?.substring(1)
|
|
|
+ }))
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ }.lparams(matchParent, autoSize(400))
|
|
|
+
|
|
|
+ itemView()
|
|
|
+
|
|
|
+ linearLayout {
|
|
|
+ gravity = Gravity.CENTER_VERTICAL
|
|
|
+ imageView {
|
|
|
+ imageResource = R.mipmap.yrdz_nctice_icon
|
|
|
+ }.lparams(autoSize(36), autoSize(36)){
|
|
|
+ marginStart = autoSize(36)
|
|
|
+ }
|
|
|
+
|
|
|
+ viewFlipper {
|
|
|
+ noticeViewFlipper = this
|
|
|
+ viewModel.noticeDataList.bindOptional(context){
|
|
|
+ if (it?.size ?: 0 > 0){
|
|
|
+ val newDataList = arrayListOf<NoticeData>()
|
|
|
+ newDataList.add(it?.get(0) ?: NoticeData())
|
|
|
+ initViewFlipper(newDataList)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }.lparams(matchParent, autoSize(72)){
|
|
|
+ marginStart = autoSize(36)
|
|
|
+ }
|
|
|
+
|
|
|
+ }.lparams(matchParent, autoSize(72))
|
|
|
+
|
|
|
+ itemView()
|
|
|
+
|
|
|
+ linearLayout {
|
|
|
+ val tjmdMarketList = GlobalDataCollection.instance?.getTjmdShowMarketSectionList()
|
|
|
+ tjmdMarketList?.forEach { data ->
|
|
|
+ relativeLayout {
|
|
|
+ verticalLayout {
|
|
|
+ onThrottleFirstClick {
|
|
|
+ EventBus.getDefault().post(MainTabSelectMessageEvent(tjmdMarketList.indexOf(data).plus(1)))
|
|
|
+ }
|
|
|
+
|
|
|
+ imageView {
|
|
|
+ if (data.pictureurl != null && data.pictureurl.isNotEmpty()) {
|
|
|
+ showImage(
|
|
|
+ SPUtils.getInstance().getString(
|
|
|
+ Constant.uploadUrl).replace("/upload","") + data.pictureurl.substring(1))
|
|
|
+ }
|
|
|
+ }.lparams(autoSize(72), autoSize(72)) {
|
|
|
+ gravity = Gravity.CENTER_HORIZONTAL
|
|
|
+ }
|
|
|
+
|
|
|
+ textView {
|
|
|
+ text = data.marketsectionname
|
|
|
+ textColorInt = R.color.black
|
|
|
+ textSizeAuto = 26
|
|
|
+ }.lparams(wrapContent, wrapContent) {
|
|
|
+ topMargin = autoSize(20)
|
|
|
+ gravity = Gravity.CENTER_HORIZONTAL
|
|
|
+ }
|
|
|
+ }.lparams(matchParent, matchParent)
|
|
|
+
|
|
|
+ textView {
|
|
|
+ visibility = View.GONE
|
|
|
+ textColorInt = R.color.p_global_write_color
|
|
|
+ textSizeAuto = 15
|
|
|
+ setPadding(
|
|
|
+ autoSize(10),
|
|
|
+ autoSize(6),
|
|
|
+ autoSize(10),
|
|
|
+ autoSize(6)
|
|
|
+ )
|
|
|
+ backgroundDrawable =
|
|
|
+ createRoundRectDrawable("#fe671a", 45)
|
|
|
+ }.lparams(wrapContent, wrapContent) {
|
|
|
+ marginStart = autoSize(130)
|
|
|
+ }
|
|
|
+ }.lparams(autoSize(225), matchParent)
|
|
|
+ }
|
|
|
+ //参考行情
|
|
|
+
|
|
|
+ relativeLayout {
|
|
|
+ verticalLayout {
|
|
|
+ onThrottleFirstClick {
|
|
|
+ val intent = Intent()
|
|
|
+ intent.setClass(
|
|
|
+ context,
|
|
|
+ PerformanceInformationActivity::class.java
|
|
|
+ )
|
|
|
+ ActivityUtils.startActivity(intent)
|
|
|
+ }
|
|
|
+ imageView {
|
|
|
+ imageResource = R.mipmap.main_business_5
|
|
|
+ }.lparams(autoSize(72), autoSize(72)) {
|
|
|
+ gravity = Gravity.CENTER_HORIZONTAL
|
|
|
+ }
|
|
|
+
|
|
|
+ textView {
|
|
|
+ text = "履约管理"
|
|
|
+ textColorInt = R.color.black
|
|
|
+ textSizeAuto = 26
|
|
|
+ }.lparams(wrapContent, wrapContent) {
|
|
|
+ topMargin = autoSize(20)
|
|
|
+ gravity = Gravity.CENTER_HORIZONTAL
|
|
|
+ }
|
|
|
+ }.lparams(matchParent, matchParent)
|
|
|
+
|
|
|
+ textView {
|
|
|
+ visibility = View.GONE
|
|
|
+ textColorInt = R.color.p_global_write_color
|
|
|
+ textSizeAuto = 15
|
|
|
+ setPadding(
|
|
|
+ autoSize(10),
|
|
|
+ autoSize(6),
|
|
|
+ autoSize(10),
|
|
|
+ autoSize(6)
|
|
|
+ )
|
|
|
+ backgroundDrawable =
|
|
|
+ createRoundRectDrawable("#fe671a", 45)
|
|
|
+ }.lparams(wrapContent, wrapContent) {
|
|
|
+ marginStart = autoSize(130)
|
|
|
+ }
|
|
|
+ }.lparams(autoSize(225), matchParent)
|
|
|
+
|
|
|
+ }.lparams(matchParent, autoSize(140)) {
|
|
|
+ topMargin = autoSize(40)
|
|
|
+ }
|
|
|
+
|
|
|
+ view {
|
|
|
+ background = resources.getDrawable(R.color.rma_hint_line_color_eee)
|
|
|
+ }.lparams(matchParent, autoSize(20))
|
|
|
+
|
|
|
+ tabSegment {
|
|
|
+ segment = this
|
|
|
+ background = resources.getDrawable(R.color.white)
|
|
|
+ addOnTabSelectedListener(object :
|
|
|
+ QMUITabSegment.OnTabSelectedListener {
|
|
|
+ override fun onDoubleTap(index: Int) {}
|
|
|
+ override fun onTabReselected(index: Int) {}
|
|
|
+ override fun onTabUnselected(index: Int) {}
|
|
|
+ override fun onTabSelected(index: Int) {
|
|
|
+ selectedTabIndex = index
|
|
|
+ }
|
|
|
+ })
|
|
|
+ mode = QMUITabSegment.MODE_FIXED
|
|
|
+ setIndicator(
|
|
|
+ QMUITabIndicator(
|
|
|
+ QMUIDisplayHelper.dp2px(context, 2),
|
|
|
+ false,
|
|
|
+ true
|
|
|
+ )
|
|
|
+ )
|
|
|
+ setDefaultTextSize(
|
|
|
+ ConvertUtils.sp2px(16f),
|
|
|
+ ConvertUtils.sp2px(18f)
|
|
|
+ )
|
|
|
+
|
|
|
+ }.lparams(matchParent, autoSize(100))
|
|
|
+
|
|
|
+ view {
|
|
|
+ background = resources.getDrawable(R.color.main_hit_bg_color)
|
|
|
+ }.lparams(matchParent, autoSize(1)) {
|
|
|
+ marginStart = autoSize(32)
|
|
|
+ marginEnd = autoSize(32)
|
|
|
+ }
|
|
|
+ viewPager {
|
|
|
+ background = resources.getDrawable(R.color.white)
|
|
|
+ viewPager = this
|
|
|
+ adapter = pagerAdapter
|
|
|
+ }.lparams(matchParent, matchParent)
|
|
|
+
|
|
|
+ segment.setupWithViewPager(viewPager)
|
|
|
+ segment.selectTab(selectedTabIndex)
|
|
|
+ }
|
|
|
+ }.lparams(matchParent, matchParent)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }.view
|
|
|
+ }
|
|
|
+}
|