Skip to content

Commit 1ba4de8

Browse files
committed
feat: Update Android release timeline dialog
Signed-off-by: Hu Shenghao <dede.hu@qq.com>
1 parent 794ef45 commit 1ba4de8

File tree

15 files changed

+267
-147
lines changed

15 files changed

+267
-147
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
- Add 'Animator duration scale' alert
77
- Update App theme colors
88
- Update App monochrome logo
9+
- Update Android release timeline dialog
910
- Fix Android U platlogo
1011
- Project modularization
1112
- Upgrade project dependencies

CHANGELOG_zh.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
- 添加 ‘Animator 时长缩放’ 检查
77
- 更新 App 主题色
88
- 更新 App 单色图标
9+
- 更新 Android 发布时间线弹框
910
- 修复 Android U 彩蛋图标
1011
- 项目模块化
1112
- 升级项目依赖项

app/src/main/java/com/dede/android_eggs/views/main/compose/EasterEggItems.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import com.dede.android_eggs.views.main.util.EasterEggShortcutsHelp
3939
import com.dede.android_eggs.views.main.util.EggActionHelp
4040
import com.dede.basic.provider.BaseEasterEgg
4141
import com.dede.basic.provider.EasterEgg
42+
import com.dede.basic.utils.AppLocaleDateFormatter
4243

4344
@Composable
4445
@Preview
@@ -55,7 +56,7 @@ fun EasterEggHighestItem(
5556
EasterEggHelp.ApiLevelFormatter.create(egg.apiLevelRange).format(context)
5657
}
5758
val dateFormat = remember(egg, context.resources.configuration) {
58-
EasterEggHelp.DateFormatter.getInstance("MM yyyy")
59+
AppLocaleDateFormatter.getInstance("MM yyyy")
5960
}
6061

6162
Card(

app/src/main/java/com/dede/android_eggs/views/main/util/EasterEggHelp.kt

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,16 @@
11
package com.dede.android_eggs.views.main.util
22

33
import android.content.Context
4-
import android.icu.text.SimpleDateFormat
54
import android.os.Build
65
import android.util.SparseArray
76
import androidx.annotation.StringRes
8-
import androidx.appcompat.app.AppCompatDelegate
97
import androidx.compose.runtime.Composable
108
import androidx.compose.ui.platform.LocalInspectionMode
119
import com.dede.android_eggs.R
1210
import com.dede.android_eggs.inject.EasterEggModules
1311
import com.dede.basic.provider.EasterEgg
1412
import com.dede.basic.provider.EasterEggProvider
1513
import dagger.Module
16-
import java.text.Format
17-
import java.util.Date
18-
import java.util.Locale
1914

2015

2116
object EasterEggHelp {
@@ -39,34 +34,6 @@ object EasterEggHelp {
3934
return EasterEggModules.providePureEasterEggList(baseEasterEggs)
4035
}
4136

42-
class DateFormatter private constructor(pattern: String, locale: Locale) {
43-
44-
companion object {
45-
fun getInstance(pattern: String): DateFormatter {
46-
return DateFormatter(pattern, getApplicationLocale())
47-
}
48-
49-
private fun getApplicationLocale(): Locale {
50-
val locales = AppCompatDelegate.getApplicationLocales()
51-
return if (locales.isEmpty) {
52-
Locale.getDefault()
53-
} else {
54-
locales.get(0) ?: Locale.getDefault()
55-
}
56-
}
57-
}
58-
59-
private val format: Format = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
60-
SimpleDateFormat(pattern, locale)
61-
} else {
62-
java.text.SimpleDateFormat(pattern, locale)
63-
}
64-
65-
fun format(date: Date): String {
66-
return format.format(date)
67-
}
68-
}
69-
7037
class VersionFormatter private constructor(
7138
@StringRes val nicknameRes: Int,
7239
private vararg val versionNames: CharSequence,

app/src/main/java/com/dede/android_eggs/views/timeline/TimelineEventHelp.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import androidx.compose.ui.text.SpanStyle
55
import androidx.compose.ui.text.buildAnnotatedString
66
import androidx.compose.ui.text.font.FontWeight
77
import androidx.compose.ui.text.withStyle
8-
import com.dede.android_eggs.views.main.util.EasterEggHelp
98
import com.dede.basic.provider.TimelineEvent
9+
import com.dede.basic.utils.AppLocaleDateFormatter
1010
import java.util.Calendar
1111
import java.util.TimeZone
1212

@@ -37,14 +37,14 @@ object TimelineEventHelp {
3737
get() {
3838
val calendar = Calendar.getInstance(TimeZone.getDefault())
3939
calendar.set(Calendar.YEAR, year)
40-
return EasterEggHelp.DateFormatter.getInstance("yyyy").format(calendar.time)
40+
return AppLocaleDateFormatter.getInstance("yyyy").format(calendar.time)
4141
}
4242

4343
val TimelineEvent.localMonth: String
4444
get() {
4545
val calendar = Calendar.getInstance(TimeZone.getDefault())
4646
calendar.set(Calendar.MONTH, month)
47-
return EasterEggHelp.DateFormatter.getInstance("MMMM").format(calendar.time)
47+
return AppLocaleDateFormatter.getInstance("MMMM").format(calendar.time)
4848
}
4949

5050
val TimelineEvent.eventAnnotatedString: AnnotatedString
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.dede.basic.utils
2+
3+
import android.icu.text.SimpleDateFormat
4+
import android.os.Build
5+
import androidx.appcompat.app.AppCompatDelegate
6+
import java.text.DateFormat
7+
import java.text.FieldPosition
8+
import java.text.Format
9+
import java.text.ParsePosition
10+
import java.util.Date
11+
import java.util.Locale
12+
13+
14+
class AppLocaleDateFormatter private constructor(pattern: String, locale: Locale) : DateFormat() {
15+
16+
companion object {
17+
fun getInstance(pattern: String): AppLocaleDateFormatter {
18+
return AppLocaleDateFormatter(pattern, getApplicationLocale())
19+
}
20+
21+
private fun getApplicationLocale(): Locale {
22+
val locales = AppCompatDelegate.getApplicationLocales()
23+
return if (locales.isEmpty) {
24+
Locale.getDefault()
25+
} else {
26+
locales.get(0) ?: Locale.getDefault()
27+
}
28+
}
29+
}
30+
31+
private val format: Format = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
32+
SimpleDateFormat(pattern, locale)
33+
} else {
34+
java.text.SimpleDateFormat(pattern, locale)
35+
}
36+
37+
override fun format(
38+
date: Date,
39+
toAppendTo: StringBuffer,
40+
fieldPosition: FieldPosition
41+
): StringBuffer {
42+
return format.format(date, toAppendTo, fieldPosition)
43+
}
44+
45+
override fun parse(source: String, pos: ParsePosition): Date? {
46+
return format.parseObject(source, pos) as? Date
47+
}
48+
49+
}

eggs/AndroidNext/src/main/java/com/android_next/egg/AndroidNextEasterEgg.kt

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import javax.inject.Singleton
2424
object AndroidNextEasterEgg : EasterEggProvider {
2525

2626
const val RELEASE_YEAR = 2025
27-
private const val RELEASE_MONTH = Calendar.SEPTEMBER
27+
const val RELEASE_MONTH = Calendar.MAY
2828

2929
// private const val NEXT_API = Build.VERSION_CODES.CUR_DEVELOPMENT// android next
3030
private const val NEXT_API = 36// android 16
@@ -41,16 +41,6 @@ object AndroidNextEasterEgg : EasterEggProvider {
4141
@DrawableRes
4242
private val PLATLOGO_RES = R.drawable.ic_android_16_platlogo
4343

44-
fun getTimelineMessage(context: Context): String {
45-
val calendar = Calendar.getInstance()
46-
val year = calendar.get(Calendar.YEAR)
47-
return if (year > RELEASE_YEAR) {
48-
context.getString(R.string.summary_android_release_pushed)
49-
} else {
50-
context.getString(R.string.summary_android_waiting)
51-
}
52-
}
53-
5444
@Provides
5545
@IntoSet
5646
@Singleton

0 commit comments

Comments
 (0)