gpt4 book ai didi

android - 创建一个扩展 API 25+ 资源的类

转载 作者:行者123 更新时间:2023-12-05 07:12:41 26 4
gpt4 key购买 nike

我想创建一个在应用程序启动时触发的扩展资源类。

public class ResourceUtil extends Resources {

public ResourceUtil(AssetManager assets, DisplayMetrics metrics, Configuration config) {
super(assets, metrics, config);
}

}

但是,我收到警告:

Resources(android.content.res.AssetManager, android.util.DisplayMetrics, android.content.res.Configuration)' is deprecated as of API 25.

是否可以扩展 Resources 类,或者此功能是否已弃用?我不知道如何以不同的方式构造它,以防有适用于 25 及以上 API 级别的有效构造函数。

编辑:Android Resources page状态:

Resources(AssetManager assets, DisplayMetrics metrics, Configuration config)

This constructor is deprecated. Resources should not be constructed by apps. See Context.createConfigurationContext(Configuration).

那么 Android 到底希望我们从 API 25 开始做什么,同时保持相同的功能?这是否意味着放弃 Resources 类并获取资源并覆盖 Context 中的值,然后将其传递给 Activity/Fragments?一些指导将不胜感激。

编辑 2:我找到了 another thread from StackOverflow这可能会覆盖 Activity 的公共(public)方法 getResources()。这个答案来自Mohammed Ersan需要放在 Activity 中:

ResourceUtil res;
@Override
public Resources getResources() {
if (res == null) {
res = new ResourceUtil(super.getAssets(),super.getResources().getDisplayMetrics(), super.getResources().getConfiguration());
}
return res;
}

但是,即使正在使用子类,它仍然无法在 API 级别 25 和更高级别上工作。

最佳答案

Is it possible to extend the Resources class

我不知道这是否得到了特别好的支持。例如:您打算如何精确地强制框架使用您的子类?

So what exactly does Android want us to do from API 25 and up while maintaining the same functionality?

如文档所述,Google 不希望您创建 Resources 的实例。该框架创建您使用的 Resources 实例。

Does it mean to abandon Resources class

不是真的。在 Android 中——以及整个 Java/Kotlin 中——有很多地方我们使用由其他东西创建的对象,例如 Android 框架。仅仅因为框架而不是您创建了实例并不意味着该类被放弃了。

If a resource is of a particular attribute, I'd like to return a custom value

您可以尝试修复资源。

例如,假设一个库贡献了一个映射到 "foo" 的字符串资源 R.string.whatever,而您希望它映射到 "bar “。只需在您自己的资源中定义 R.string.whatever,它就会覆盖库中的字符串资源。

现在,事实证明,Android R 推出了一个 ResourceLoader 系统,我认为 appcompat 很有可能在未来几个月内提供向后移植。到那时,您将能够或多或少地完成您想要做的事情,但使用自定义 ResourceLoader 而不是自定义 Resources 子类。

关于android - 创建一个扩展 API 25+ 资源的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60373887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com