-
Notifications
You must be signed in to change notification settings - Fork 7
/
GuideActivity.kt
87 lines (75 loc) · 3.54 KB
/
GuideActivity.kt
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
75
76
77
78
79
80
81
82
83
84
85
86
87
package com.kuky.comvvmhelper.ui.activity
import android.content.Intent
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.os.Parcelable
import androidx.appcompat.widget.SwitchCompat
import androidx.recyclerview.widget.DividerItemDecoration
import com.kk.android.comvvmhelper.anno.ActivityConfig
import com.kk.android.comvvmhelper.extension.delayLaunch
import com.kk.android.comvvmhelper.helper.KLogLevel
import com.kk.android.comvvmhelper.helper.logs
import com.kk.android.comvvmhelper.listener.OnRecyclerItemClickListener
import com.kk.android.comvvmhelper.ui.BaseActivity
import com.kk.android.comvvmhelper.utils.decodeInt
import com.kk.android.comvvmhelper.utils.decodeParcelable
import com.kk.android.comvvmhelper.utils.encodeInt
import com.kk.android.comvvmhelper.utils.encodeParcelable
import com.kuky.comvvmhelper.R
import com.kuky.comvvmhelper.databinding.ActivityGuideBinding
import com.kuky.comvvmhelper.entity.GuideDisplay
import com.kuky.comvvmhelper.ui.adapter.GuideAdapter
import com.kuky.comvvmhelper.ui.fragment.TestNewKoinFragment
import kotlinx.parcelize.Parcelize
import org.koin.android.ext.android.inject
import org.koin.android.scope.AndroidScopeComponent
import org.koin.androidx.scope.activityScope
import org.koin.core.parameter.parametersOf
import org.koin.core.scope.Scope
import java.util.Random
@ActivityConfig(statusBarColorString = "#008577")
class GuideActivity : BaseActivity<ActivityGuideBinding>(), AndroidScopeComponent {
override val scope: Scope by activityScope()
private val mRandom = Random()
private val mGuideItems = mutableListOf(
GuideDisplay("Network", randomDrawable(), HttpDemoActivity::class.java, true, "Show Download"),
GuideDisplay("ImageDisplay", randomDrawable(), ImageDisplayActivity::class.java),
GuideDisplay("ShapeDisplay", randomDrawable(), ShapeDisplayActivity::class.java),
GuideDisplay("PermissionRequest", randomDrawable(), PermissionDemoActivity::class.java),
GuideDisplay("RecyclerViewList", randomDrawable(), RecyclerViewDemoActivity::class.java, true, "Multi Layout"),
GuideDisplay("MultiManagerDisplay", randomDrawable(), MultiItemDisplayActivity::class.java)
)
private val mGuideAdapter by inject<GuideAdapter> {
parametersOf(mGuideItems)
}
private fun randomDrawable() = ColorDrawable(
Color.parseColor(
String.format("#%06x", mRandom.nextInt(256 * 256 * 256))
)
)
override fun layoutId() = R.layout.activity_guide
override fun initActivity(savedInstanceState: Bundle?) {
mBinding.guideAdapter = mGuideAdapter
mBinding.decoration = DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
mBinding.guideClick = OnRecyclerItemClickListener { position, view ->
mGuideAdapter.getItemData(position)?.run {
startActivity(Intent(this@GuideActivity, targetDestination).apply {
putExtra(
"switchOn", view.findViewById<SwitchCompat>(R.id.inner_switch)?.isChecked ?: false
)
})
}
}
supportFragmentManager.beginTransaction()
.add(R.id.append_part, TestNewKoinFragment()).commitNowAllowingStateLoss()
encodeInt("new", 100)
encodeParcelable("user", User("kuky"))
delayLaunch(1_000) {
logs(decodeInt("new"), level = KLogLevel.W)
logs(decodeParcelable<User>("user"))
}
}
}
@Parcelize
data class User(val name: String) : Parcelable