标签: material-you

Android 12:如何防止更改手机壁纸时重新启动活动?

在 Android 12 上,

  1. 如果我们开启一个活动

  2. 进入手机主屏幕更换壁纸

  3. 切换回我们的 Activity,该 Activity 重新启动。

看起来它与 Material You 主题有关。

我想在我的应用程序进入前台时禁用活动的重新启动。有办法吗?

android android-12 material-you

21
推荐指数
1
解决办法
2533
查看次数

如何在我的 Android 应用程序中实现 Material You 的主题图标?

我在网上找不到任何相关信息,没有文档,什么也没有。也许你们中的一个人知道如何做或者给了我一些建议。先感谢您。

android-12 material-you

17
推荐指数
1
解决办法
6396
查看次数

“主题图标”功能会导致 Android 12 上的动态壁纸崩溃

我最近注意到,当用户尝试在 Android 12 上设置新引入的“主题图标”功能时,我的动态壁纸应用程序崩溃了。这项新功能会根据用户当前的静态壁纸计算调色板,并使用该调色板为某些壁纸着色。其他应用程序图标(新“Material You”设计的一项功能)。但由于某种原因,当它在动态壁纸上运行时,它会导致应用程序崩溃并显示以下日志:

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.Bitmap android.graphics.drawable.BitmapDrawable.getBitmap()' on a null object reference
       at android.os.Parcel.createExceptionOrNull(Parcel.java:2443)
       at android.os.Parcel.createException(Parcel.java:2421)
       at android.os.Parcel.readException(Parcel.java:2404)
       at android.os.Parcel.readException(Parcel.java:2346)
       at android.service.wallpaper.IWallpaperConnection$Stub$Proxy.onWallpaperColorsChanged(IWallpaperConnection.java:298)
       at android.service.wallpaper.WallpaperService$IWallpaperEngineWrapper.executeMessage(WallpaperService.java:2586)
       at com.android.internal.os.HandlerCaller$MyHandler.handleMessage(HandlerCaller.java:44)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loopOnce(Looper.java:226)
       at android.os.Looper.loop(Looper.java:313)
       at android.app.ActivityThread.main(ActivityThread.java:8582)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:563)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1133)


Caused by android.os.RemoteException: Remote stack trace:
    at com.samsung.server.wallpaper.LegibilityColor.convertColors(LegibilityColor.java:418)
    at com.android.server.wallpaper.WallpaperManagerService$WallpaperConnection.onWallpaperColorsChanged(WallpaperManagerService.java:2169)
    at android.service.wallpaper.IWallpaperConnection$Stub.onTransact(IWallpaperConnection.java:158)
    at android.os.Binder.execTransactInternal(Binder.java:1215)
    at android.os.Binder.execTransact(Binder.java:1179)
Run Code Online (Sandbox Code Playgroud)

目前,我只能在三星 Galaxy S21 / S21 Ultra 手机上观察到此崩溃,但随着用户将系统更新到 Android 12,它将出现在更多手机上。

目前,我无法重现此崩溃,因为我没有 Galaxy S21,并且 Android Studio …

crash android theming live-wallpaper material-you

13
推荐指数
1
解决办法
1926
查看次数

如何改变活动指示器bottombavigationview材质的颜色呢?材质3

我想更改底部导航视图材质3中所选区域的颜色,但颜色没有任何改变。我尝试过选择器、背景、背景色调和样式。一切都没有成功。

目前是这样的。

应该是这样的。

android-layout material-design bottomnavigationview material-components-android material-you

12
推荐指数
1
解决办法
8272
查看次数

调整 androidx.preference 对话框以遵循 Material You

我有两个包含首选项部分的应用程序,并且我正在使用首选项库,这是撰写本文时可用的最新版本:

    implementation "androidx.preference:preference:1.2.0-rc01"
Run Code Online (Sandbox Code Playgroud)

现在,我将我的应用程序主题化为使用并遵循新的 Material3 (或Material You)主题,但我面临的一个问题是,虽然普通对话框的主题正确,但首选项部分中的对话框仅部分主题(角半径)。他们显然不使用新样式,这种不一致让我丧命:D

普通材质对话框 首选项对话框

目前,我没有找到一种没有奇怪的解决方法来主题化它们的方法,所以我将不胜感激的建议。这是我目前的对话框样式

<!-- Dialog theme -->
<style name="ThemeOverlay.App.MaterialAlertDialog" parent="ThemeOverlay.Material3.MaterialAlertDialog">
    <item name="colorOnSurface">?colorAccent</item>
    <item name="alertDialogStyle">@style/MaterialAlertDialog.App</item>
    <item name="dialogCornerRadius">@dimen/bottom_sheet_corners</item>
</style>

<!-- Note: shape appearance doesn't work with the preference dialogs (they're not material) -->
<style name="MaterialAlertDialog.App" parent="MaterialAlertDialog.Material3">
    <item name="shapeAppearance">@style/ShapeAppearance.App.MediumComponent</item>
    <item name="shapeAppearanceOverlay">@null</item>
</style>
Run Code Online (Sandbox Code Playgroud)

也许这只是等待的问题

android android-preferences material-design material-dialog material-you

11
推荐指数
2
解决办法
1966
查看次数

Material 配色方案中 Jetpack Compose 中导航栏的颜色是什么?

当我试图强制NavigationBar使用MaterialTheme.colorScheme.surface颜色时(请参阅材料 3 指南),应用程序的背景颜色和颜色NavigationBar不同。示例: 的颜色NavigationBar#f1edf7,但背景颜色为#fffbfe。背景应用程序颜色也是MaterialTheme.colorScheme.surface如此。

导航栏

android navigationbar android-jetpack-compose material-you android-jetpack-compose-material3

11
推荐指数
3
解决办法
6571
查看次数

无法在 Material Design 3 中使用 LocalContentAlpha 更改文本强调

目前,我正在将我的一个应用程序迁移到 Material Design 3,该应用程序完全使用 Jetpack Compose 用 Kotlin 编写。

在使用 Material Design 2 时,我可以使用下面的代码更改文本的重点。

CompositionLocalProvider(LocalContentAlpha provides ContentAlpha.medium) {
                Text(
                    text = "Hello, world",
                    style = MaterialTheme.typography.h6,
                    fontWeight = FontWeight.SemiBold,
                )
            }
Run Code Online (Sandbox Code Playgroud)

但是,相同的代码不适用于 Material Design 3,并且文本具有默认强调。另外,我在Material Design 3中找不到相关功能。我想知道是否有任何官方方法可以达到相同的效果。

android android-jetpack-compose android-jetpack-compose-text material-you material-design-3

10
推荐指数
2
解决办法
2889
查看次数

Jetpack Compose 中的 Material3 颜色协调

在使用基于视图的系统时,我们可以使用以下代码来协调颜色。

MaterialColors.harmonizeWithPrimary(context, colorToHarmonize)
Run Code Online (Sandbox Code Playgroud)

在完全迁移到 Jetpack Compose 并且所有颜色值都存储在文件中的项目中Color.kt,如何在运行时对颜色应用协调?

android android-jetpack-compose material-you android-jetpack-compose-material3 material3

10
推荐指数
1
解决办法
465
查看次数

Material Design 3 顶部应用栏没有阴影。如何启用它?

新的“Material Design 3 顶部应用栏”文档称他们摆脱了投影。我怎样才能启用它?在 Toolbar 或 AppBar 上设置高度根本不起作用。 在此输入图像描述

android material-design android-toolbar android-appbarlayout material-you

9
推荐指数
1
解决办法
3353
查看次数

新的 Android 12+ MaterialSwitch 和 androidx.preference

因此,我正在更新我的应用程序以完全支持 Monet 和 Material You 指南,并且官方网站提到了开关的新设计。我用了一下,结果是这样的:

应用程序中的材质切换

我有一个使用 Androidx 首选项库的首选项屏幕,在撰写本文时提供了最新版本,我发现对开关进行主题化的唯一方法(手动主题除外,这没有意义)是在应用程序的主题中使用这一行:

<item name="switchStyle">@style/Widget.Material3.CompoundButton.MaterialSwitch</item>
Run Code Online (Sandbox Code Playgroud)

使用 SwitchPreferenceCompat (它在常规 SwitchPreference 中不起作用)这就是我得到的:

优先切换

无论宽度如何(不同,但可以更改),禁用状态都完全不同,并且与应用程序的其余部分不匹配。为什么?最重要的是,为什么他们建议使用以下库:

  1. 不支持开箱即用的 Material You
  2. 不支持任何新的 Material3 组件
  3. 一般来说,很难正确定制

我不想太挑剔,但这超出了我的理解范围。

编辑:目前,我在各处使用 switchCompat,以使应用程序统一。查看系统应用程序,我可以找到 4 种不同类型的开关:类似于第二个屏幕截图的自定义开关、旧的开关和本问题中的两种类型。这真是令人困惑。

android styles android-preferences switchpreference material-you

8
推荐指数
1
解决办法
2672
查看次数