gpt4 book ai didi

安卓应用 : Apply Color Theme Dynamically at Runtime

转载 作者:行者123 更新时间:2023-11-29 00:21:44 26 4
gpt4 key购买 nike

在我的应用程序中,我想支持这样的功能,用户可以从列表(从 WebService 下载)中选择颜色,当用户选择任何颜色(比如橙色)时,我应用程序中的所有按钮的背景颜色都将是橙色。

我已经检查了类似 http://www.androidengineer.com/2010/06/using-themes-in-android-applications.html 的解决方案但是我需要在我的应用程序中使用不同的颜色创建不同的样式。

我的需要是我只支持一种样式,只需要根据选择更改背景颜色,为此我不想在运行时获取所有按钮并应用该颜色。


因此,请提出任何其他更好的解决方案,将所选颜色应用于应用程序中的所有按钮,而无需获取 Activity 中的所有按钮并设置它们的背景颜色。

最佳答案

您可以填写 Bitmap具有特定的颜色。

private BitmapDrawable makeColorFillDrawable(int color, Drawable d) {
Bitmap maskBitmap = ((BitmapDrawable) d).getBitmap();
final int width = maskBitmap.getWidth();
final int height = maskBitmap.getHeight();
maskBitmap = null;

final Bitmap outBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(outBitmap);
d.setBounds(0, 0, width, height);
d.setColorFilter(color, PorterDuff.Mode.SRC_IN);
d.draw(canvas);
d.setColorFilter(null);
d.setCallback(null);

return new BitmapDrawable(getResources(), outBitmap);
}

将您从服务器获取的颜色保存在您的 SharedPreferences 中.然后子类Button并根据您保存的值应用可绘制的颜色填充。然后您需要做的就是替换 <Button.../>在您的 XML 中包含您的自定义路径。

这是一个关于 ActionBar 的例子图标。

    final Drawable d = getResources().getDrawable(android.R.drawable.sym_def_app_icon);
getActionBar().setIcon(makeColorFillDrawable(Color.RED, d));

Example

关于安卓应用 : Apply Color Theme Dynamically at Runtime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22529646/

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