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 @@