diff --git a/README.md b/README.md
index e7b81ea4..0bb9d04b 100644
--- a/README.md
+++ b/README.md
@@ -19,8 +19,8 @@ The project contains the complete code of the system Easter eggs, which aims to
## Details
| Name | SDK | Egg | Status | Use new features [*](#id_new_features) | Minimum SDK [*](#id_full_egg_mini_sdk) |
|---|:---:|---|:---:|:---:|:---:|
-| Android U | | | ⌛️ | | |
-| Android 13 (Tiramisu) | 33 | Paint Chips | ✅ | ✅ | 31 |
+| Android 14 (Upside Down Cake) | | | ⌛️ | | |
+| Android 13 (Tiramisu) | 33 | Paint Chips | ✅ | ✅ | 31 [*](#id_color_vector_fonts) |
| Android 12 (Snow Cone) | 31~32 | Paint Chips | ✅ | ✅ | 31 |
| Android 11 (Red Velvet Cake) | 30 | Cat Controls(Collection) | ✅ | ✅ | 30 |
| Android 10 (Queen Cake) | 29 | Icon Quiz | ✅ | ❌ | - |
@@ -42,11 +42,11 @@ The project contains the complete code of the system Easter eggs, which aims to
* Easter eggs with new features of the system are used, and the old version of the system can only use some functions.
* The minimum SDK version required to fully experience Easter Egg.
+* Starting in [Android 13](https://developer.android.google.cn/about/versions/13/features#color-vector-fonts), the system includes rendering support for [COLRv1](https://developer.chrome.com/blog/colrv1-fonts/) fonts and updates system emoji to the COLRv1 format.
* There is no specific name for the old version of Easter eggs, and the system version alias are used here.
## Screenshots
-![Screenshots1](./images/Screenshot_20220820_184459.png)
-![Screenshots2](./images/image.jpeg)
+![](./images/Screenshot_20220901_135512.png) ![](./images/STIIITCH_2022_09_01_02_14_28.PNG) ![](./images/STIIITCH_2022_09_01_02_13_58.PNG)
## Other
diff --git a/README_zh.md b/README_zh.md
index b432d4f1..8541c41d 100644
--- a/README_zh.md
+++ b/README_zh.md
@@ -19,8 +19,8 @@
## 版本明细
| 名称 | SDK | 彩蛋 | 状态 | 有使用新特性 [*](#id_new_features) | 最小版本 [*](#id_full_egg_mini_sdk) |
|---|:---:|---|:---:|:---:|:---:|
-| Android U | | | ⌛️ | | |
-| Android 13 (Tiramisu) | 33 | Paint Chips | ✅ | ✅ | 31 |
+| Android 14 (Upside Down Cake) | | | ⌛️ | | |
+| Android 13 (Tiramisu) | 33 | Paint Chips | ✅ | ✅ | 31 [*](#id_color_vector_fonts) |
| Android 12 (Snow Cone) | 31~32 | Paint Chips | ✅ | ✅ | 31 |
| Android 11 (Red Velvet Cake) | 30 | Cat Controls(Collection) | ✅ | ✅ | 30 |
| Android 10 (Queen Cake) | 29 | Icon Quiz | ✅ | ❌ | - |
@@ -42,11 +42,11 @@
* 使用了系统新特性的彩蛋,老版本系统只能使用部分功能。
* 完整体验彩蛋所需要的最低SDK版本。
+* [Android 13](https://developer.android.google.cn/about/versions/13/features#color-vector-fonts) 可支持呈现 [COLRv1](https://developer.chrome.com/blog/colrv1-fonts/) 字体,并将系统表情符号更新成了 COLRv1 格式。
* 老版本的彩蛋没有具体命名,这里使用系统版本别名。
## 截图
-![截图1](./images/Screenshot_20220820_184459.png)
-![截图2](./images/image.jpeg)
+![](./images/Screenshot_20220901_135512.png) ![](./images/STIIITCH_2022_09_01_02_14_28.PNG) ![](./images/STIIITCH_2022_09_01_02_13_58.PNG)
## 其他
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 3d8330a8..8dc106aa 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -19,8 +19,8 @@ android {
applicationId = "com.dede.android_eggs"
minSdk = Versions.MIN_SDK
targetSdk = Versions.TARGET_SDK
- versionCode = 18
- versionName = "1.7.2"
+ versionCode = 19
+ versionName = "1.7.3"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
resourceConfigurations.addAll(listOf("zh", "en"))
@@ -71,6 +71,8 @@ android {
dependencies {
implementation(deps.androidx.appcompat)
implementation(deps.androidx.core.ktx)
+ implementation(deps.androidx.lifecycle.runtime.ktx)
+ implementation(deps.androidx.lifecycle.viewmodel.ktx)
implementation(deps.androidx.preference.ktx)
implementation(deps.androidx.constraintlayout)
implementation(deps.androidx.browser)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 682799e8..184569b2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -12,6 +12,7 @@
android:hasFragileUserData="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
+ android:localeConfig="@xml/locales_config"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.EasterEggs">
diff --git a/app/src/main/java/com/dede/android_eggs/ChromeTabsBrowser.kt b/app/src/main/java/com/dede/android_eggs/ChromeTabsBrowser.kt
index 6fe359db..02f51ed9 100644
--- a/app/src/main/java/com/dede/android_eggs/ChromeTabsBrowser.kt
+++ b/app/src/main/java/com/dede/android_eggs/ChromeTabsBrowser.kt
@@ -6,6 +6,7 @@ import android.graphics.Color
import android.net.Uri
import androidx.appcompat.app.AppCompatDelegate
import androidx.browser.customtabs.*
+import com.google.android.material.color.DynamicColors
import com.google.android.material.color.MaterialColors
/**
@@ -65,7 +66,10 @@ object ChromeTabsBrowser {
if (AppCompatDelegate.getDefaultNightMode() == AppCompatDelegate.MODE_NIGHT_YES)
CustomTabsIntent.COLOR_SCHEME_DARK else CustomTabsIntent.COLOR_SCHEME_LIGHT
- val color = MaterialColors.getColor(context, android.R.attr.colorPrimary, Color.WHITE)
+ val dynamicContext = DynamicColors.wrapContextIfAvailable(context)
+ val color = MaterialColors.getColor(dynamicContext,
+ com.google.android.material.R.attr.colorSurface,
+ Color.WHITE)
val params = CustomTabColorSchemeParams.Builder()
.setToolbarColor(color)
.build()
diff --git a/app/src/main/java/com/dede/android_eggs/EasterEggsActivity.kt b/app/src/main/java/com/dede/android_eggs/EasterEggsActivity.kt
index 547d02b8..641f94a7 100644
--- a/app/src/main/java/com/dede/android_eggs/EasterEggsActivity.kt
+++ b/app/src/main/java/com/dede/android_eggs/EasterEggsActivity.kt
@@ -1,22 +1,20 @@
package com.dede.android_eggs
import android.annotation.SuppressLint
-import android.graphics.Color
import android.os.Bundle
+import android.view.Gravity
import android.view.View
import android.view.ViewAnimationUtils
+import android.widget.FrameLayout
+import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
-import androidx.core.view.ViewCompat
-import androidx.core.view.WindowInsetsCompat.Type
-import androidx.core.view.updatePadding
+import androidx.appcompat.widget.AppCompatImageView
import com.dede.android_eggs.databinding.ActivityEasterEggsBinding
import com.google.android.material.color.DynamicColors
-import com.google.android.material.color.DynamicColorsOptions
-import com.google.android.material.color.MaterialColors
import com.google.android.material.internal.EdgeToEdgeUtils
+import com.google.android.material.shape.MaterialShapeDrawable
import kotlin.math.hypot
-import com.google.android.material.R as MR
/**
* Easter Egg Collection
@@ -24,40 +22,42 @@ import com.google.android.material.R as MR
class EasterEggsActivity : AppCompatActivity(), Runnable {
private lateinit var binding: ActivityEasterEggsBinding
+ private lateinit var ivLogo: ImageView
@SuppressLint("RestrictedApi")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- val options = DynamicColorsOptions.Builder()
- .setThemeOverlay(MR.style.ThemeOverlay_Material3_DynamicColors_DayNight)
- .build()
- DynamicColors.applyToActivityIfAvailable(this, options)
- val colorPrimary = MaterialColors.getColor(this, R.attr.colorPrimary, Color.WHITE)
- EdgeToEdgeUtils.applyEdgeToEdge(window, true, colorPrimary, null)
+ DynamicColors.applyToActivityIfAvailable(this)
+ EdgeToEdgeUtils.applyEdgeToEdge(window, true)
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
binding = ActivityEasterEggsBinding.inflate(layoutInflater)
setContentView(binding.root)
setSupportActionBar(binding.toolbar)
+ binding.appBar.statusBarForeground =
+ MaterialShapeDrawable.createWithElevationOverlay(this)
- ViewCompat.setOnApplyWindowInsetsListener(binding.toolbar) { view, insets ->
- val edge = insets.getInsets(Type.displayCutout() or Type.systemBars())
- view.updatePadding(top = edge.top)
- return@setOnApplyWindowInsetsListener insets
+ ivLogo = AppCompatImageView(this).apply {
+ setImageResource(R.drawable.t_platlogo)
}
+ val layoutParams = FrameLayout.LayoutParams(
+ FrameLayout.LayoutParams.WRAP_CONTENT,
+ FrameLayout.LayoutParams.WRAP_CONTENT
+ ).apply { gravity = Gravity.CENTER }
+ addContentView(ivLogo, layoutParams)
postAnim()
}
private fun postAnim() {
- binding.content.visibility = View.INVISIBLE
- binding.content.postDelayed(this, 200)
+ binding.root.visibility = View.INVISIBLE
+ binding.root.post(this)
}
override fun run() {
- val logo = binding.logo
- val content = binding.content
+ val logo = ivLogo
+ val content = binding.root
val cx = logo.x + logo.width / 2f
val cy = logo.y + logo.height / 2f
val startRadius = hypot(logo.width.toFloat(), logo.height.toFloat())
@@ -81,7 +81,7 @@ class EasterEggsActivity : AppCompatActivity(), Runnable {
}
override fun onDestroy() {
- binding.content.removeCallbacks(this)
+ binding.root.removeCallbacks(this)
super.onDestroy()
}
diff --git a/app/src/main/java/com/dede/android_eggs/VersionPreference.kt b/app/src/main/java/com/dede/android_eggs/VersionPreference.kt
index 33de77b0..80dfa14b 100644
--- a/app/src/main/java/com/dede/android_eggs/VersionPreference.kt
+++ b/app/src/main/java/com/dede/android_eggs/VersionPreference.kt
@@ -2,7 +2,6 @@ package com.dede.android_eggs
import android.content.Context
import android.util.AttributeSet
-import androidx.preference.Preference
import com.dede.android_eggs.BuildConfig.VERSION_CODE
import com.dede.android_eggs.BuildConfig.VERSION_NAME
diff --git a/app/src/main/res/drawable-anydpi/ic_android_cs.xml b/app/src/main/res/drawable-anydpi/ic_android_cs.xml
new file mode 100644
index 00000000..d7968579
--- /dev/null
+++ b/app/src/main/res/drawable-anydpi/ic_android_cs.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable-anydpi/ic_logo_android.xml b/app/src/main/res/drawable-anydpi/ic_logo_android.xml
new file mode 100644
index 00000000..b9030d3c
--- /dev/null
+++ b/app/src/main/res/drawable-anydpi/ic_logo_android.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable-anydpi/ic_logo_github.xml b/app/src/main/res/drawable-anydpi/ic_logo_github.xml
new file mode 100644
index 00000000..893d0fd8
--- /dev/null
+++ b/app/src/main/res/drawable-anydpi/ic_logo_github.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_easter_eggs.xml b/app/src/main/res/layout/activity_easter_eggs.xml
index b1321eb9..0f05c183 100644
--- a/app/src/main/res/layout/activity_easter_eggs.xml
+++ b/app/src/main/res/layout/activity_easter_eggs.xml
@@ -1,34 +1,29 @@
-
-
+ android:layout_height="wrap_content"
+ android:fitsSystemWindows="true"
+ app:liftOnScroll="true">
-
-
-
+ app:layout_scrollFlags="scroll|enterAlways|snap"
+ app:titleCentered="true" />
+
-
-
-
\ No newline at end of file
+
+
diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml
index ea392930..c9f5c2f5 100644
--- a/app/src/main/res/values-night/themes.xml
+++ b/app/src/main/res/values-night/themes.xml
@@ -3,7 +3,6 @@