18034727885
2026-04-27 3a4c1bbb2cf4fb1cdda8a5061b0674f30e7456b4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package com.example.smart.ui.main
 
import android.content.Context
import android.graphics.Color
import android.view.View
import android.widget.FrameLayout
import androidx.lifecycle.Observer
import com.example.basecore.base.BaseContextViewModel
import com.example.basecore.util.dp2px
import com.example.smart.R
import com.example.smart.observer.TabEventProvider
import com.example.smart.observer.data.HomeTabData
import com.example.smart.ui.home.BasePageFragment
import com.example.smart.ui.home.home.HomeFragment
import com.example.smart.ui.home.mine.MineFragment
import com.example.smart.ui.main.page.MainFragment
import com.example.smart.widget.HomeTabLayout
import com.example.smart.widget.HomeTabLayout.Companion.buildItem
 
 
class MainViewModel : BaseContextViewModel() {
 
 
    val tabProvider: TabEventProvider = TabEventProvider()
    private val tabObserver = TabObserver()
 
    init {
        initObserver()
    }
 
    private fun initObserver() {
        tabProvider.homeTabObserver.observeForever(tabObserver)
    }
 
    private inner class TabObserver : Observer<HomeTabData> {
        override fun onChanged(value: HomeTabData) {
 
        }
    }
 
 
    fun generateTab(context: Context, container: FrameLayout) {
        val tabLayout = HomeTabLayout.create(context, tabProvider)
        val itemHome = buildItem(context, R.drawable.selector_tab_home, "首页")
        val itemMine = buildItem(context, R.drawable.selector_tab_personal, "我的")
        tabLayout.addItem(itemHome).addItem(itemMine)
        container.addView(tabLayout)
 
 
        val maskView = View(context)
        val maskLp =
            FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, context.dp2px(0.5f))
        maskView.layoutParams = maskLp
        maskView.setBackgroundColor(Color.parseColor("#f5f5f5"))
        container.addView(maskView)
    }
 
    fun generatePage(): ArrayList<BasePageFragment> {
        val pageContainer = ArrayList<BasePageFragment>()
        val feedPage = MainFragment.newInstance()
        val minePage = MineFragment.newInstance()
 
        pageContainer.add(feedPage)
        pageContainer.add(minePage)
        return pageContainer
    }
 
    override fun onCleared() {
        super.onCleared()
        tabProvider.homeTabObserver.removeObserver(tabObserver)
    }
 
 
}