From 552a9fc09ef9869411e7f7676c9a333b750bcc9e Mon Sep 17 00:00:00 2001 From: Super12138 <70494801+Super12138@users.noreply.github.com> Date: Sat, 8 Jun 2024 19:45:34 +0800 Subject: [PATCH] Refine code --- .../cn/super12138/todo/utils/VersionUtils.kt | 4 ++ .../cn/super12138/todo/views/BaseActivity.kt | 9 +++- .../todo/views/about/AboutActivity.kt | 21 +++++--- .../todo/views/all/AllTasksActivity.kt | 10 ++-- .../todo/views/crash/CrashActivity.kt | 14 ++--- .../todo/views/main/MainActivity.kt | 26 ++-------- .../todo/views/settings/SettingsActivity.kt | 11 ++-- app/src/main/res/layout/activity_crash.xml | 51 ++++++++++++------- 8 files changed, 81 insertions(+), 65 deletions(-) diff --git a/app/src/main/kotlin/cn/super12138/todo/utils/VersionUtils.kt b/app/src/main/kotlin/cn/super12138/todo/utils/VersionUtils.kt index de474e5..56c6dc9 100644 --- a/app/src/main/kotlin/cn/super12138/todo/utils/VersionUtils.kt +++ b/app/src/main/kotlin/cn/super12138/todo/utils/VersionUtils.kt @@ -4,6 +4,10 @@ import android.content.Context import android.os.Build object VersionUtils { + /** + * 获取应用版本号 + * @return 版本名称(版本代码) + */ fun getAppVersion(context: Context): String { val pkgInfo = context.packageManager.getPackageInfo(context.packageName, 0) val verName = pkgInfo.versionName diff --git a/app/src/main/kotlin/cn/super12138/todo/views/BaseActivity.kt b/app/src/main/kotlin/cn/super12138/todo/views/BaseActivity.kt index 443667b..9bcc138 100644 --- a/app/src/main/kotlin/cn/super12138/todo/views/BaseActivity.kt +++ b/app/src/main/kotlin/cn/super12138/todo/views/BaseActivity.kt @@ -3,19 +3,22 @@ package cn.super12138.todo.views import android.os.Build import android.os.Bundle import android.view.WindowManager -import androidx.activity.SystemBarStyle import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatDelegate +import androidx.viewbinding.ViewBinding import cn.super12138.todo.constant.GlobalValues -open class BaseActivity : AppCompatActivity() { +abstract class BaseActivity : AppCompatActivity() { + lateinit var binding: T override fun onCreate(savedInstanceState: Bundle?) { /*if (GlobalValues.springFestivalTheme) { setTheme(R.style.Theme_SpringFestival) }*/ enableEdgeToEdge() super.onCreate(savedInstanceState) + binding = getViewBinding() + setContentView(binding.root) // 深色模式 when (GlobalValues.darkMode) { @@ -34,4 +37,6 @@ open class BaseActivity : AppCompatActivity() { } window.attributes = lp } + + abstract fun getViewBinding(): T } \ No newline at end of file diff --git a/app/src/main/kotlin/cn/super12138/todo/views/about/AboutActivity.kt b/app/src/main/kotlin/cn/super12138/todo/views/about/AboutActivity.kt index 715258f..8a71f89 100644 --- a/app/src/main/kotlin/cn/super12138/todo/views/about/AboutActivity.kt +++ b/app/src/main/kotlin/cn/super12138/todo/views/about/AboutActivity.kt @@ -2,7 +2,6 @@ package cn.super12138.todo.views.about import android.content.Intent import android.net.Uri -import android.os.Build import android.os.Bundle import cn.super12138.todo.constant.Constants 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.views.BaseActivity -class AboutActivity : BaseActivity() { - private lateinit var binding: ActivityAboutBinding +class AboutActivity : BaseActivity() { private var clickCount = 0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - binding = ActivityAboutBinding.inflate(layoutInflater) - setContentView(binding.root) - binding.appVersion.text = VersionUtils.getAppVersion(this) binding.toolBar.setNavigationOnClickListener { @@ -54,9 +49,21 @@ class AboutActivity : BaseActivity() { 5 -> { clickCount = 0 // 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) + } } \ No newline at end of file diff --git a/app/src/main/kotlin/cn/super12138/todo/views/all/AllTasksActivity.kt b/app/src/main/kotlin/cn/super12138/todo/views/all/AllTasksActivity.kt index 34a5075..bc8a80f 100644 --- a/app/src/main/kotlin/cn/super12138/todo/views/all/AllTasksActivity.kt +++ b/app/src/main/kotlin/cn/super12138/todo/views/all/AllTasksActivity.kt @@ -12,9 +12,8 @@ import cn.super12138.todo.databinding.ActivityAllTasksBinding import cn.super12138.todo.views.BaseActivity import me.zhanghai.android.fastscroll.FastScrollerBuilder -class AllTasksActivity : BaseActivity() { +class AllTasksActivity : BaseActivity() { private val viewModel by viewModels() - private lateinit var binding: ActivityAllTasksBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -27,9 +26,6 @@ class AllTasksActivity : BaseActivity() { false -> window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) } - binding = ActivityAllTasksBinding.inflate(layoutInflater) - setContentView(binding.root) - val layoutManager = LinearLayoutManager(ToDoApp.context) binding.allTasksList.layoutManager = layoutManager val adapter = AllTasksAdapter(viewModel.todoListAll, supportFragmentManager) @@ -64,4 +60,8 @@ class AllTasksActivity : BaseActivity() { } }) } + + override fun getViewBinding(): ActivityAllTasksBinding { + return ActivityAllTasksBinding.inflate(layoutInflater) + } } \ No newline at end of file diff --git a/app/src/main/kotlin/cn/super12138/todo/views/crash/CrashActivity.kt b/app/src/main/kotlin/cn/super12138/todo/views/crash/CrashActivity.kt index cf2ee5c..b1ba288 100644 --- a/app/src/main/kotlin/cn/super12138/todo/views/crash/CrashActivity.kt +++ b/app/src/main/kotlin/cn/super12138/todo/views/crash/CrashActivity.kt @@ -14,16 +14,11 @@ import java.text.SimpleDateFormat import java.util.Calendar import java.util.Locale -class CrashActivity : BaseActivity() { - private lateinit var binding: ActivityCrashBinding - +class CrashActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { enableEdgeToEdge() super.onCreate(savedInstanceState) - binding = ActivityCrashBinding.inflate(layoutInflater) - setContentView(binding.root) - ViewCompat.setOnApplyWindowInsetsListener(binding.exitApp) { view, windowInsets -> val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) view.updateLayoutParams { @@ -44,7 +39,8 @@ class CrashActivity : BaseActivity() { val formattedDateTime = formatter.format(currentDateTime) 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("Model: ").append(deviceModel).append('\n') append("Device SDK: ").append(sdkLevel).append('\n').append('\n') @@ -61,4 +57,8 @@ class CrashActivity : BaseActivity() { this.finishAffinity() } } + + override fun getViewBinding(): ActivityCrashBinding { + return ActivityCrashBinding.inflate(layoutInflater) + } } \ No newline at end of file diff --git a/app/src/main/kotlin/cn/super12138/todo/views/main/MainActivity.kt b/app/src/main/kotlin/cn/super12138/todo/views/main/MainActivity.kt index 4250013..bc844c2 100644 --- a/app/src/main/kotlin/cn/super12138/todo/views/main/MainActivity.kt +++ b/app/src/main/kotlin/cn/super12138/todo/views/main/MainActivity.kt @@ -10,15 +10,9 @@ import cn.super12138.todo.databinding.ActivityMainBinding import cn.super12138.todo.views.BaseActivity import cn.super12138.todo.views.settings.SettingsActivity -class MainActivity : BaseActivity() { - private lateinit var binding: ActivityMainBinding - +class MainActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - - binding = ActivityMainBinding.inflate(layoutInflater) - setContentView(binding.root) - binding.toolBar.setOnMenuItemClickListener { menuItem -> when (menuItem.itemId) { R.id.item_settings -> { @@ -32,20 +26,6 @@ class MainActivity : BaseActivity() { } // 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) { true -> window.setFlags( WindowManager.LayoutParams.FLAG_SECURE, @@ -55,4 +35,8 @@ class MainActivity : BaseActivity() { false -> window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) } } + + override fun getViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } } \ No newline at end of file diff --git a/app/src/main/kotlin/cn/super12138/todo/views/settings/SettingsActivity.kt b/app/src/main/kotlin/cn/super12138/todo/views/settings/SettingsActivity.kt index 725d454..1e84bd5 100644 --- a/app/src/main/kotlin/cn/super12138/todo/views/settings/SettingsActivity.kt +++ b/app/src/main/kotlin/cn/super12138/todo/views/settings/SettingsActivity.kt @@ -31,15 +31,10 @@ import com.google.gson.reflect.TypeToken import kotlinx.coroutines.launch import kotlin.system.exitProcess -class SettingsActivity : BaseActivity() { - private lateinit var binding: ActivitySettingsBinding - +class SettingsActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - binding = ActivitySettingsBinding.inflate(layoutInflater) - setContentView(binding.root) - if (savedInstanceState == null) { supportFragmentManager .beginTransaction() @@ -53,6 +48,10 @@ class SettingsActivity : BaseActivity() { } } + override fun getViewBinding(): ActivitySettingsBinding { + return ActivitySettingsBinding.inflate(layoutInflater) + } + class SettingsFragment : PreferenceFragmentCompat() { private lateinit var backupBinding: DialogBackupBinding private lateinit var restoreBinding: DialogRestoreBinding diff --git a/app/src/main/res/layout/activity_crash.xml b/app/src/main/res/layout/activity_crash.xml index 46273c5..953c66c 100644 --- a/app/src/main/res/layout/activity_crash.xml +++ b/app/src/main/res/layout/activity_crash.xml @@ -4,27 +4,45 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:fitsSystemWindows="true" tools:context=".views.crash.CrashActivity"> - + android:layout_height="wrap_content" + android:fitsSystemWindows="true"> + + + + + + + + + - - + android:layout_height="match_parent" + android:orientation="vertical"> - + - \ No newline at end of file