Commit b688d501 authored by wanglei's avatar wanglei

[拆包]修改设置页面

parent 6b92f136
...@@ -91,7 +91,6 @@ abstract class BaseActivity<VB : ViewBinding>( ...@@ -91,7 +91,6 @@ abstract class BaseActivity<VB : ViewBinding>(
lateinit var launcher: ActivityLauncher lateinit var launcher: ActivityLauncher
private var currentLocale: Locale? = null private var currentLocale: Locale? = null
lateinit var vpnStatusListener: VpnStatusListener lateinit var vpnStatusListener: VpnStatusListener
var insetsCallBack: ((insets: Insets) -> Unit)? = null
var onCreateI = 0 var onCreateI = 0
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
...@@ -276,7 +275,6 @@ abstract class BaseActivity<VB : ViewBinding>( ...@@ -276,7 +275,6 @@ abstract class BaseActivity<VB : ViewBinding>(
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, insets -> ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insetsCallBack?.invoke(systemBars)
insets insets
} }
} }
......
...@@ -46,7 +46,6 @@ class BatteryInfoActivity : BaseActivity<ActivityBatteryInfo2Binding>(ActivityBa ...@@ -46,7 +46,6 @@ class BatteryInfoActivity : BaseActivity<ActivityBatteryInfo2Binding>(ActivityBa
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, 0, systemBars.right, systemBars.bottom) v.setPadding(systemBars.left, 0, systemBars.right, systemBars.bottom)
binding.clTop.setPadding(0, systemBars.top, 0, 0) binding.clTop.setPadding(0, systemBars.top, 0, 0)
insetsCallBack?.invoke(systemBars)
insets insets
} }
} }
......
...@@ -46,7 +46,6 @@ class LanguageActivity : BaseActivity<ActivityLanguageBinding>(ActivityLanguageB ...@@ -46,7 +46,6 @@ class LanguageActivity : BaseActivity<ActivityLanguageBinding>(ActivityLanguageB
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, 0, systemBars.right, systemBars.bottom) v.setPadding(systemBars.left, 0, systemBars.right, systemBars.bottom)
binding.flTop.setPadding(0, systemBars.top, 0, 0) binding.flTop.setPadding(0, systemBars.top, 0, 0)
insetsCallBack?.invoke(systemBars)
insets insets
} }
} }
......
...@@ -2,7 +2,11 @@ package com.base.appzxhy.ui.main ...@@ -2,7 +2,11 @@ package com.base.appzxhy.ui.main
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.ActivityManager import android.app.ActivityManager
import android.view.ViewTreeObserver
import androidx.core.content.ContextCompat.getSystemService import androidx.core.content.ContextCompat.getSystemService
import androidx.core.graphics.Insets
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.GridLayoutManager
import com.base.appzxhy.R import com.base.appzxhy.R
...@@ -22,6 +26,7 @@ import com.base.appzxhy.databinding.FragmentHome3Binding ...@@ -22,6 +26,7 @@ import com.base.appzxhy.databinding.FragmentHome3Binding
import com.base.appzxhy.ui.dialog.permissionStorageJump import com.base.appzxhy.ui.dialog.permissionStorageJump
import com.base.appzxhy.ui.malware.MalwareDialog import com.base.appzxhy.ui.malware.MalwareDialog
import com.base.appzxhy.ui.set.SettingActivity import com.base.appzxhy.ui.set.SettingActivity
import com.base.appzxhy.utils.BarUtils
import com.base.appzxhy.utils.KotlinExt.toFormatSize import com.base.appzxhy.utils.KotlinExt.toFormatSize
import com.base.appzxhy.utils.Utils import com.base.appzxhy.utils.Utils
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
...@@ -80,11 +85,16 @@ class HomeFragment : BaseFragment<FragmentHome3Binding>(FragmentHome3Binding::in ...@@ -80,11 +85,16 @@ class HomeFragment : BaseFragment<FragmentHome3Binding>(FragmentHome3Binding::in
) )
} }
override fun initView() { override fun initView() {
super.initView() super.initView()
(requireActivity() as MainActivity).insetsCallBack = { insets -> binding.flTop.setPadding(0, BarUtils.getStatusBarHeight(), 0, 0)
binding.flTop.setPadding(0, insets.top, 0, 0) ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, insets ->
val systemBars: Insets = insets.getInsets(WindowInsetsCompat.Type.systemBars())
binding.flTop.setPadding(0, systemBars.top, 0, 0)
insets
} }
val layoutManager = GridLayoutManager(requireContext(), 2) val layoutManager = GridLayoutManager(requireContext(), 2)
layoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() { layoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
override fun getSpanSize(position: Int): Int { override fun getSpanSize(position: Int): Int {
...@@ -168,6 +178,7 @@ class HomeFragment : BaseFragment<FragmentHome3Binding>(FragmentHome3Binding::in ...@@ -168,6 +178,7 @@ class HomeFragment : BaseFragment<FragmentHome3Binding>(FragmentHome3Binding::in
override fun onResumeOneShoot() { override fun onResumeOneShoot() {
super.onResumeOneShoot() super.onResumeOneShoot()
initData() initData()
} }
......
package com.base.appzxhy.ui.main package com.base.appzxhy.ui.main
import android.view.LayoutInflater
import android.view.View
import android.widget.TextView
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2
import com.base.appzxhy.R import com.base.appzxhy.R
import com.base.appzxhy.SpConstObject.mainPageCount import com.base.appzxhy.SpConstObject.mainPageCount
import com.base.appzxhy.base.BaseActivity import com.base.appzxhy.base.BaseActivity
import com.base.appzxhy.bean.FeatureBean.Companion.JUNK_CLEAN import com.base.appzxhy.bean.FeatureBean.Companion.JUNK_CLEAN
import com.base.appzxhy.bean.HomeTabUIBean
import com.base.appzxhy.bean.config.AdConfigBean import com.base.appzxhy.bean.config.AdConfigBean
import com.base.appzxhy.business.ads.AdsMgr import com.base.appzxhy.business.ads.AdsMgr
import com.base.appzxhy.databinding.ActivityMainBinding import com.base.appzxhy.databinding.ActivityMainBinding
import com.base.appzxhy.databinding.ItemHomeTabBinding
import com.base.appzxhy.ui.dialog.AppExitDialog import com.base.appzxhy.ui.dialog.AppExitDialog
import com.base.appzxhy.ui.dialog.NotificationTurnOnDialog import com.base.appzxhy.ui.dialog.NotificationTurnOnDialog
import com.base.appzxhy.ui.dialog.RateDialog import com.base.appzxhy.ui.dialog.RateDialog
import com.base.appzxhy.ui.dialog.StoragePermissionDialog import com.base.appzxhy.ui.dialog.StoragePermissionDialog
import com.base.appzxhy.ui.dialog.permissionStorageJump import com.base.appzxhy.ui.dialog.permissionStorageJump
import com.base.appzxhy.ui.set.SettingsFragment
import com.base.appzxhy.utils.PermissionUtils.requestNotificationPermission import com.base.appzxhy.utils.PermissionUtils.requestNotificationPermission
import com.base.appzxhy.utils.PermissionUtils.requestStoragePermission import com.base.appzxhy.utils.PermissionUtils.requestStoragePermission
import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayout.OnTabSelectedListener
import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import androidx.core.graphics.toColorInt
class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::inflate) { class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::inflate) {
val viewModel by lazy { ViewModelProvider(this)[MainViewModel::class.java] } val viewModel by lazy { ViewModelProvider(this)[MainViewModel::class.java] }
private val fragmentList = listOf(
HomeFragment(),
SettingsFragment()
)
private val viewPagerAdapter by lazy {
object : FragmentStateAdapter(this) {
override fun getItemCount(): Int = fragmentList.size
override fun createFragment(position: Int): Fragment = fragmentList[position]
}
}
override fun useDefaultImmersive() { override fun useDefaultImmersive() {
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, insets -> ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, 0, systemBars.right, systemBars.bottom) v.setPadding(systemBars.left, 0, systemBars.right, systemBars.bottom)
insetsCallBack?.invoke(systemBars)
insets insets
} }
...@@ -72,6 +97,11 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl ...@@ -72,6 +97,11 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
override fun initView() { override fun initView() {
super.initView() super.initView()
initViewPager2()
initTab()
initDialogFlow() initDialogFlow()
AdsMgr.showBanner(binding.flBanner, false) AdsMgr.showBanner(binding.flBanner, false)
...@@ -84,6 +114,69 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl ...@@ -84,6 +114,69 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
binding.fragment.layoutParams = lp binding.fragment.layoutParams = lp
} }
private fun initTab() {
arrayOf(
HomeTabUIBean(R.drawable.tab_home_selector, getString(R.string.home)),
HomeTabUIBean(R.drawable.tab_settings_selector, getString(R.string.settings)),
).forEachIndexed { index, homeTab ->
val tab = binding.tabLayout.newTab()
val view = LayoutInflater.from(this).inflate(R.layout.item_home_tab, null)
val tabBinding = ItemHomeTabBinding.bind(view)
tabBinding.ivIcon.setImageResource(homeTab.icon)
tabBinding.tvTab.text = homeTab.tab
// tabBinding.tvTab.setTextColor(ContextCompat.getColor(this, R.color.color_tab_home))
tab.customView = tabBinding.root
tab.id = index
if (index == 1) {
tabBinding.vDian.visibility = View.VISIBLE
} else {
tabBinding.vDian.visibility = View.GONE
}
binding.tabLayout.addTab(tab)
}
binding.tabLayout.addOnTabSelectedListener(object : OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab?) {
tab?.let {
if (binding.viewPager2.currentItem == tab.id) return
binding.viewPager2.setCurrentItem(tab.id, false)
}
}
override fun onTabUnselected(tab: TabLayout.Tab?) {
tab?.setUnselected()
}
override fun onTabReselected(tab: TabLayout.Tab?) {
}
})
}
fun TabLayout.Tab.setSelected() {
val textView = customView?.findViewById<TextView>(R.id.tv_tab)
textView?.setTextColor(
ContextCompat.getColor(this@MainActivity, R.color.colorPrimary)
)
}
fun TabLayout.Tab.setUnselected() {
val textView = customView?.findViewById<TextView>(R.id.tv_tab)
textView?.setTextColor("#A6A6A6".toColorInt())
}
private fun initViewPager2() {
binding.viewPager2.adapter = viewPagerAdapter
binding.viewPager2.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
val defaultTab = binding.tabLayout.getTabAt(position)
defaultTab?.select()
defaultTab?.setSelected()
}
})
}
override fun initListener() { override fun initListener() {
super.initListener() super.initListener()
} }
......
...@@ -13,10 +13,6 @@ class SettingActivity : BaseActivity<ActivitySettingBinding>(ActivitySettingBind ...@@ -13,10 +13,6 @@ class SettingActivity : BaseActivity<ActivitySettingBinding>(ActivitySettingBind
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, insets -> ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, insets ->
val systemBars: Insets = insets.getInsets(WindowInsetsCompat.Type.systemBars()) val systemBars: Insets = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, 0, systemBars.right, systemBars.bottom) v.setPadding(systemBars.left, 0, systemBars.right, systemBars.bottom)
insetsCallBack?.invoke(systemBars)
insetsCallBack = null
insets insets
} }
} }
......
...@@ -4,6 +4,7 @@ import android.annotation.SuppressLint ...@@ -4,6 +4,7 @@ import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.core.graphics.Insets
import com.base.appzxhy.BuildConfig import com.base.appzxhy.BuildConfig
import com.base.appzxhy.GlobalConfig.URL_PRIVACY import com.base.appzxhy.GlobalConfig.URL_PRIVACY
import com.base.appzxhy.SpConstObject.cleanedSize import com.base.appzxhy.SpConstObject.cleanedSize
...@@ -11,12 +12,15 @@ import com.base.appzxhy.base.BaseFragment ...@@ -11,12 +12,15 @@ import com.base.appzxhy.base.BaseFragment
import com.base.appzxhy.databinding.FragmentSettingsBinding import com.base.appzxhy.databinding.FragmentSettingsBinding
import com.base.appzxhy.utils.KotlinExt.toFormatSize import com.base.appzxhy.utils.KotlinExt.toFormatSize
import androidx.core.net.toUri import androidx.core.net.toUri
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import com.base.appzxhy.R import com.base.appzxhy.R
import com.base.appzxhy.SpConstObject.fcmToken import com.base.appzxhy.SpConstObject.fcmToken
import com.base.appzxhy.bean.config.ConfigBean import com.base.appzxhy.bean.config.ConfigBean
import com.base.appzxhy.business.ads.AdsMgr import com.base.appzxhy.business.ads.AdsMgr
import com.base.appzxhy.ui.dialog.RateDialog import com.base.appzxhy.ui.dialog.RateDialog
import com.base.appzxhy.utils.BarUtils
import com.base.appzxhy.utils.ClipboardUtils.copyText import com.base.appzxhy.utils.ClipboardUtils.copyText
import com.base.appzxhy.utils.ToastUtils.toast import com.base.appzxhy.utils.ToastUtils.toast
import com.google.gson.GsonBuilder import com.google.gson.GsonBuilder
...@@ -24,20 +28,16 @@ import com.google.gson.GsonBuilder ...@@ -24,20 +28,16 @@ import com.google.gson.GsonBuilder
class SettingsFragment : BaseFragment<FragmentSettingsBinding>(FragmentSettingsBinding::inflate) { class SettingsFragment : BaseFragment<FragmentSettingsBinding>(FragmentSettingsBinding::inflate) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (requireActivity() is SettingActivity) {
(requireActivity() as SettingActivity).insetsCallBack = {
binding.clTop.updatePadding(0, it.top, 0, 0)
}
}
}
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
override fun initView() { override fun initView() {
super.initView() super.initView()
binding.clTop.setPadding(0, BarUtils.getStatusBarHeight(), 0, 0)
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, insets ->
val systemBars: Insets = insets.getInsets(WindowInsetsCompat.Type.systemBars())
binding.clTop.setPadding(0, systemBars.top, 0, 0)
insets
}
binding.tvCleanedUp.text = cleanedSize.toFormatSize() binding.tvCleanedUp.text = cleanedSize.toFormatSize()
binding.tvVersion.text = "v${BuildConfig.VERSION_NAME}" binding.tvVersion.text = "v${BuildConfig.VERSION_NAME}"
// MyAnimationUtils.rotation(binding.ivBlade) // MyAnimationUtils.rotation(binding.ivBlade)
......
...@@ -5,19 +5,47 @@ ...@@ -5,19 +5,47 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<FrameLayout <LinearLayout
android:id="@+id/fragment" android:id="@+id/fragment"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_marginBottom="@dimen/dp_60" android:layout_marginBottom="@dimen/dp_60"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
<fragment <androidx.viewpager2.widget.ViewPager2
android:name="com.base.appzxhy.ui.main.HomeFragment" android:id="@+id/viewPager2"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<FrameLayout
android:id="@+id/flBottom"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="wrap_content">
</FrameLayout>
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@color/white"
app:tabIndicatorHeight="0dp"
app:tabMinWidth="100dp"
app:tabMode="fixed"
app:tabRippleColor="@android:color/transparent"
tools:ignore="SpeakableTextPresentCheck" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_gravity="bottom"
android:background="#F5F5F5" />
</FrameLayout>
</LinearLayout>
<FrameLayout <FrameLayout
android:id="@+id/flBanner" android:id="@+id/flBanner"
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
android:id="@+id/flTop" android:id="@+id/flTop"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="@dimen/dp_24"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
...@@ -99,7 +100,7 @@ ...@@ -99,7 +100,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text=" / 0.0GB" android:text=" / 0.0GB"
android:textColor="#999999" android:textColor="@color/white"
android:textSize="@dimen/sp_18" android:textSize="@dimen/sp_18"
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
android:id="@+id/cl_top" android:id="@+id/cl_top"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/bg_60ff95_2dd29e" android:background="#0456ED"
android:orientation="horizontal" android:orientation="horizontal"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment