use*_*030 3 android splash-screen wear-os
我正在寻找一种可能性,使我的 Wear OS 3 应用程序具有简单的启动屏幕。我找不到任何具体内容,但我读到 Android 12 为每个应用程序引入了自动启动屏幕。不知道这是否适用于 Wear OS 3。
我可以在 Galaxy Watch 4 上看到多个应用程序(例如 Spotify 和 Strava),并以类似的启动画面开始:单击“应用程序抽屉”中的应用程序图标,该图标会从应用程序抽屉位置移动到中心 1- 2 秒后出现黑色背景。之后将显示该应用程序。我的猜测是那些闪屏是由 Android 生成的。但我的应用程序仅显示黑屏,直到应用程序首次绘制。我通过 OnCreate 中的 Thread.sleep 人为地延迟了应用程序的启动。(如果这是一个问题,请告诉我如何人为地创建延迟来测试闪屏)
如果还不清楚:我希望我的应用程序拥有与其他应用程序相同类型的启动屏幕。
非常感谢帮助!预先感谢您的任何建议
我自己解决了。我在Android 开发者页面的“品牌发布”下找到了解决方案。重要的是操纵window似乎基本上是所显示应用程序的根层,即使布局尚未膨胀(因此是实现启动屏幕的正确位置)。对我来说有趣的是,Android (Wear) 很好地将图标从应用程序抽屉中的位置移动到屏幕中央,就好像它知道我现在有一个启动屏幕一样。没有进行太多实验,但如果有人可以解释,请做:)
为了实现启动画面,我执行了以下操作:
添加一个插图绘图,它将显示以插图为中心的所需图标。我的版本使用矢量绘图,如下所示 ( /res/drawable/splash_background.xml):
<?xml version="1.0" encoding="utf-8"?>
<inset
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/ic_laucher_icon_composite"
android:insetTop="60dp"
android:insetRight="60dp"
android:insetBottom="60dp"
android:insetLeft="60dp" />
Run Code Online (Sandbox Code Playgroud)
添加两个主题。一种用于初始屏幕,另一种用于默认屏幕。我之前没有自定义主题,因为我没有扩展我的主题,所以MainTheme我实际上甚至不需要它,但无论如何我添加了它。启动画面主题操纵windowBackground这是关键。这些都是我在文件中的主题res/values/styles.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="SplashTheme" parent="@android:style/Theme.DeviceDefault">
<item name="android:windowBackground">@drawable/splash_background</item>
</style>
<style name="MainTheme" parent="@android:style/Theme.DeviceDefault">
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
我将 SplashScreen-Theme 配置为 Android Manifest 中的初始主题,如下所示:
<application
...
android:theme="@style/SplashTheme">
Run Code Online (Sandbox Code Playgroud)
在MainActivity我扩大布局后切换了主题。我在通货膨胀和通货膨胀之间做了这件事setContentView,但在后者之后可能没有什么区别。
binding = ActivityMainBinding.inflate(layoutInflater)
setTheme(R.style.LushMainTheme)
setContentView(binding.root)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1326 次 |
| 最近记录: |