-
Notifications
You must be signed in to change notification settings - Fork 11
/
MainActivity.kt
85 lines (76 loc) · 2.57 KB
/
MainActivity.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
package io.goooler.demoapp.main.ui
import android.Manifest
import android.content.Intent
import android.os.Bundle
import com.alibaba.android.arouter.facade.annotation.Route
import com.permissionx.guolindev.PermissionX
import dagger.hilt.android.AndroidEntryPoint
import io.goooler.demoapp.adapter.vp.CommonFragmentStatePagerAdapter
import io.goooler.demoapp.base.util.unsafeLazy
import io.goooler.demoapp.common.base.binding.BaseBindingActivity
import io.goooler.demoapp.common.router.RouterPath
import io.goooler.demoapp.main.databinding.MainActivityBinding
import io.goooler.demoapp.main.ui.fragment.MainHomeFragment
import io.goooler.demoapp.main.ui.fragment.MainPagingFragment
import io.goooler.demoapp.main.ui.fragment.MainSrlFragment
@AndroidEntryPoint
@Route(path = RouterPath.MAIN)
class MainActivity : BaseBindingActivity<MainActivityBinding>() {
private val pagerAdapter by unsafeLazy {
CommonFragmentStatePagerAdapter(supportFragmentManager)
}
private val titles = listOf("home", "smartRefresh", "paging")
private val fragments = listOf(
MainHomeFragment(),
MainSrlFragment(),
MainPagingFragment()
)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding.run {
viewPager.offscreenPageLimit = fragments.size
viewPager.adapter = pagerAdapter
pagerAdapter.setData(fragments, titles)
// setViewPager 必须在 pagerAdapter 设置数据之后
tabLayout.setViewPager(viewPager)
}
requestPermissions()
}
/**
* 不杀掉进程,直接返回桌面
*/
override fun onBackPressed() {
if (supportFragmentManager.backStackEntryCount == 0) {
val intent = Intent(Intent.ACTION_MAIN)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
.addCategory(Intent.CATEGORY_HOME)
startActivity(intent)
} else {
super.onBackPressed()
}
}
private fun requestPermissions() {
PermissionX.init(this)
.permissions(
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.CAMERA,
Manifest.permission.ACCESS_COARSE_LOCATION
).onExplainRequestReason { scope, deniedList ->
scope.showRequestReasonDialog(
deniedList,
"Core fundamental are based on these permissions",
"OK",
"Cancel"
)
}
.onForwardToSettings { scope, deniedList ->
scope.showForwardToSettingsDialog(
deniedList,
"You need to allow necessary permissions in Settings manually",
"OK",
"Cancel"
)
}
.request { _, _, _ -> }
}
}