Refine code

This commit is contained in:
Super12138 2024-06-08 19:45:34 +08:00
parent 24e6813bd7
commit 552a9fc09e
8 changed files with 81 additions and 65 deletions

View file

@ -4,6 +4,10 @@ import android.content.Context
import android.os.Build import android.os.Build
object VersionUtils { object VersionUtils {
/**
* 获取应用版本号
* @return 版本名称版本代码
*/
fun getAppVersion(context: Context): String { fun getAppVersion(context: Context): String {
val pkgInfo = context.packageManager.getPackageInfo(context.packageName, 0) val pkgInfo = context.packageManager.getPackageInfo(context.packageName, 0)
val verName = pkgInfo.versionName val verName = pkgInfo.versionName

View file

@ -3,19 +3,22 @@ package cn.super12138.todo.views
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.view.WindowManager import android.view.WindowManager
import androidx.activity.SystemBarStyle
import androidx.activity.enableEdgeToEdge import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.app.AppCompatDelegate
import androidx.viewbinding.ViewBinding
import cn.super12138.todo.constant.GlobalValues import cn.super12138.todo.constant.GlobalValues
open class BaseActivity : AppCompatActivity() { abstract class BaseActivity<T : ViewBinding> : AppCompatActivity() {
lateinit var binding: T
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
/*if (GlobalValues.springFestivalTheme) { /*if (GlobalValues.springFestivalTheme) {
setTheme(R.style.Theme_SpringFestival) setTheme(R.style.Theme_SpringFestival)
}*/ }*/
enableEdgeToEdge() enableEdgeToEdge()
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = getViewBinding()
setContentView(binding.root)
// 深色模式 // 深色模式
when (GlobalValues.darkMode) { when (GlobalValues.darkMode) {
@ -34,4 +37,6 @@ open class BaseActivity : AppCompatActivity() {
} }
window.attributes = lp window.attributes = lp
} }
abstract fun getViewBinding(): T
} }

View file

@ -2,7 +2,6 @@ package cn.super12138.todo.views.about
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Build
import android.os.Bundle import android.os.Bundle
import cn.super12138.todo.constant.Constants import cn.super12138.todo.constant.Constants
import cn.super12138.todo.databinding.ActivityAboutBinding import cn.super12138.todo.databinding.ActivityAboutBinding
@ -10,16 +9,12 @@ import cn.super12138.todo.utils.VersionUtils
import cn.super12138.todo.utils.showToast import cn.super12138.todo.utils.showToast
import cn.super12138.todo.views.BaseActivity import cn.super12138.todo.views.BaseActivity
class AboutActivity : BaseActivity() { class AboutActivity : BaseActivity<ActivityAboutBinding>() {
private lateinit var binding: ActivityAboutBinding
private var clickCount = 0 private var clickCount = 0
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = ActivityAboutBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.appVersion.text = VersionUtils.getAppVersion(this) binding.appVersion.text = VersionUtils.getAppVersion(this)
binding.toolBar.setNavigationOnClickListener { binding.toolBar.setNavigationOnClickListener {
@ -54,9 +49,21 @@ class AboutActivity : BaseActivity() {
5 -> { 5 -> {
clickCount = 0 clickCount = 0
// GlobalValues.springFestivalTheme = !GlobalValues.springFestivalTheme // GlobalValues.springFestivalTheme = !GlobalValues.springFestivalTheme
"\uD83C\uDF3C".showToast() "\uD83C\uDF68".showToast()
/*when (java.util.Calendar.getInstance(Locale.getDefault())
.get(java.util.Calendar.MONTH) + 1) {
3, 4, 5 ->
6, 7, 8 -> SUMMER
9, 10, 11 -> AUTUMN
12, 1, 2 -> WINTER
else -> -12
}*/
} }
} }
} }
} }
override fun getViewBinding(): ActivityAboutBinding {
return ActivityAboutBinding.inflate(layoutInflater)
}
} }

View file

@ -12,9 +12,8 @@ import cn.super12138.todo.databinding.ActivityAllTasksBinding
import cn.super12138.todo.views.BaseActivity import cn.super12138.todo.views.BaseActivity
import me.zhanghai.android.fastscroll.FastScrollerBuilder import me.zhanghai.android.fastscroll.FastScrollerBuilder
class AllTasksActivity : BaseActivity() { class AllTasksActivity : BaseActivity<ActivityAllTasksBinding>() {
private val viewModel by viewModels<AllTasksViewModel>() private val viewModel by viewModels<AllTasksViewModel>()
private lateinit var binding: ActivityAllTasksBinding
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@ -27,9 +26,6 @@ class AllTasksActivity : BaseActivity() {
false -> window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) false -> window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE)
} }
binding = ActivityAllTasksBinding.inflate(layoutInflater)
setContentView(binding.root)
val layoutManager = LinearLayoutManager(ToDoApp.context) val layoutManager = LinearLayoutManager(ToDoApp.context)
binding.allTasksList.layoutManager = layoutManager binding.allTasksList.layoutManager = layoutManager
val adapter = AllTasksAdapter(viewModel.todoListAll, supportFragmentManager) val adapter = AllTasksAdapter(viewModel.todoListAll, supportFragmentManager)
@ -64,4 +60,8 @@ class AllTasksActivity : BaseActivity() {
} }
}) })
} }
override fun getViewBinding(): ActivityAllTasksBinding {
return ActivityAllTasksBinding.inflate(layoutInflater)
}
} }

View file

@ -14,16 +14,11 @@ import java.text.SimpleDateFormat
import java.util.Calendar import java.util.Calendar
import java.util.Locale import java.util.Locale
class CrashActivity : BaseActivity() { class CrashActivity : BaseActivity<ActivityCrashBinding>() {
private lateinit var binding: ActivityCrashBinding
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge() enableEdgeToEdge()
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = ActivityCrashBinding.inflate(layoutInflater)
setContentView(binding.root)
ViewCompat.setOnApplyWindowInsetsListener(binding.exitApp) { view, windowInsets -> ViewCompat.setOnApplyWindowInsetsListener(binding.exitApp) { view, windowInsets ->
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
view.updateLayoutParams<ViewGroup.MarginLayoutParams> { view.updateLayoutParams<ViewGroup.MarginLayoutParams> {
@ -44,7 +39,8 @@ class CrashActivity : BaseActivity() {
val formattedDateTime = formatter.format(currentDateTime) val formattedDateTime = formatter.format(currentDateTime)
val deviceInfo = StringBuilder().apply { val deviceInfo = StringBuilder().apply {
append("ToDo version: ").append(VersionUtils.getAppVersion(this@CrashActivity)).append('\n') append("ToDo version: ").append(VersionUtils.getAppVersion(this@CrashActivity))
.append('\n')
append("Brand: ").append("").append(deviceBrand).append('\n') append("Brand: ").append("").append(deviceBrand).append('\n')
append("Model: ").append(deviceModel).append('\n') append("Model: ").append(deviceModel).append('\n')
append("Device SDK: ").append(sdkLevel).append('\n').append('\n') append("Device SDK: ").append(sdkLevel).append('\n').append('\n')
@ -61,4 +57,8 @@ class CrashActivity : BaseActivity() {
this.finishAffinity() this.finishAffinity()
} }
} }
override fun getViewBinding(): ActivityCrashBinding {
return ActivityCrashBinding.inflate(layoutInflater)
}
} }

View file

@ -10,15 +10,9 @@ import cn.super12138.todo.databinding.ActivityMainBinding
import cn.super12138.todo.views.BaseActivity import cn.super12138.todo.views.BaseActivity
import cn.super12138.todo.views.settings.SettingsActivity import cn.super12138.todo.views.settings.SettingsActivity
class MainActivity : BaseActivity() { class MainActivity : BaseActivity<ActivityMainBinding>() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.toolBar.setOnMenuItemClickListener { menuItem -> binding.toolBar.setOnMenuItemClickListener { menuItem ->
when (menuItem.itemId) { when (menuItem.itemId) {
R.id.item_settings -> { R.id.item_settings -> {
@ -32,20 +26,6 @@ class MainActivity : BaseActivity() {
} }
// setSupportActionBar(binding.toolbar) // setSupportActionBar(binding.toolbar)
/*val pref = getSharedPreferences("data", Context.MODE_PRIVATE)
val isFirstUse = pref.getBoolean("first_use", false)
if (!isFirstUse) {
MaterialAlertDialogBuilder(this)
.setTitle("欢迎使用待办")
.setMessage("本应用不需要任何权限")
.setPositiveButton("确定") { dialog, which ->
val editor = getSharedPreferences("data", Context.MODE_PRIVATE).edit()
editor.putBoolean("first_use", true)
editor.apply()
}
.show()
}*/
when (GlobalValues.secureMode) { when (GlobalValues.secureMode) {
true -> window.setFlags( true -> window.setFlags(
WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE,
@ -55,4 +35,8 @@ class MainActivity : BaseActivity() {
false -> window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) false -> window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE)
} }
} }
override fun getViewBinding(): ActivityMainBinding {
return ActivityMainBinding.inflate(layoutInflater)
}
} }

View file

@ -31,15 +31,10 @@ import com.google.gson.reflect.TypeToken
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlin.system.exitProcess import kotlin.system.exitProcess
class SettingsActivity : BaseActivity() { class SettingsActivity : BaseActivity<ActivitySettingsBinding>() {
private lateinit var binding: ActivitySettingsBinding
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = ActivitySettingsBinding.inflate(layoutInflater)
setContentView(binding.root)
if (savedInstanceState == null) { if (savedInstanceState == null) {
supportFragmentManager supportFragmentManager
.beginTransaction() .beginTransaction()
@ -53,6 +48,10 @@ class SettingsActivity : BaseActivity() {
} }
} }
override fun getViewBinding(): ActivitySettingsBinding {
return ActivitySettingsBinding.inflate(layoutInflater)
}
class SettingsFragment : PreferenceFragmentCompat() { class SettingsFragment : PreferenceFragmentCompat() {
private lateinit var backupBinding: DialogBackupBinding private lateinit var backupBinding: DialogBackupBinding
private lateinit var restoreBinding: DialogRestoreBinding private lateinit var restoreBinding: DialogRestoreBinding

View file

@ -4,27 +4,45 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".views.crash.CrashActivity"> tools:context=".views.crash.CrashActivity">
<androidx.core.widget.NestedScrollView <com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="wrap_content"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/tool_bar"
style="?attr/collapsingToolbarLayoutLargeStyle"
android:layout_width="match_parent"
android:layout_height="?attr/collapsingToolbarLayoutLargeSize"
app:collapsedTitleTextAppearance="?textAppearanceTitleLarge"
app:expandedTitleTextAppearance="?textAppearanceHeadlineLarge"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
app:titleCollapseMode="scale">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/top_app_bar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:elevation="0dp"
app:layout_collapseMode="pin"
app:title="@string/error_title" />
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
<me.zhanghai.android.fastscroll.FastScrollNestedScrollView
android:id="@+id/nested_scroll_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:orientation="vertical" android:orientation="vertical">
android:paddingBottom="16dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginTop="40dp"
android:layout_marginEnd="20dp"
android:text="@string/error_title"
android:textColor="?android:attr/textColorPrimary"
android:textSize="35sp" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -46,7 +64,7 @@
android:textIsSelectable="true" android:textIsSelectable="true"
android:textSize="13sp" /> android:textSize="13sp" />
</LinearLayout> </LinearLayout>
</androidx.core.widget.NestedScrollView> </me.zhanghai.android.fastscroll.FastScrollNestedScrollView>
<com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton <com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
android:id="@+id/exit_app" android:id="@+id/exit_app"
@ -56,5 +74,4 @@
android:layout_margin="16dp" android:layout_margin="16dp"
android:text="@string/exit_app" android:text="@string/exit_app"
app:icon="@drawable/ic_exit" /> app:icon="@drawable/ic_exit" />
</androidx.coordinatorlayout.widget.CoordinatorLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout>