Refine code
This commit is contained in:
parent
24e6813bd7
commit
552a9fc09e
8 changed files with 81 additions and 65 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
@ -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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
Loading…
Reference in a new issue