Android - 字体共享首选项

Android - Typeface Shared Preferences

首先,我有一个包含 2 个活动的应用程序。第一个是主要的。 2 日有 3 个复选框正在更改 main activity 中文本视图的字体(粗体、斜体和下划线)。我想要做的是在关闭并重新打开应用程序后,文本视图具有之前选择的字体。 有什么方法可以将字体存储在共享首选项中,或者可以通过其他方式完成吗?

谢谢

更新

这行得通(下面答案的第三种方法)

    boolean loadCheck1 = preferences.getBoolean("checked1", false);
    if (loadCheck1) {
            tx.setTypeface(tx.getTypeface(), Typeface.BOLD);
    } else {
        tx.setTypeface(null, Typeface.NORMAL);
    }

    boolean loadCheck2 = preferences.getBoolean("checked2", false);
    if (loadCheck2) {
        tx.setTypeface(tx.getTypeface(), Typeface.ITALIC);
    } else {
        tx.setTypeface(null, Typeface.NORMAL);
    }

    boolean loadCheck3 = preferences.getBoolean("checked3", false);
    if (loadCheck3){
        tx.setPaintFlags(tx.getPaintFlags()| Paint.UNDERLINE_TEXT_FLAG);
    } else {
    tx.setPaintFlags(tx.getPaintFlags() & (~Paint.UNDERLINE_TEXT_FLAG));
    }

但是 Typeface Bold 有问题。即使选中了 checkbox1,Bold 也不会出现。这真的很奇怪,因为每一个 If 都是以相同的方式制作的。此外,如果我更改顺序(例如 loadcheck2、loadcheck3、loadcheck1),则不会显示斜体。

  • 可以使用GSON库来存储Objectclass(Typeface扩展Object)在 SharedPrefereces。有关此方法的更多信息:How Android SharedPreferences save/store object

  • 如果您不想使用任何外部库,您可以使用 enuminterface class 来表示特定的 [=11] =] 您想要保存该变量并将其存储在 SharedPreferences 中。当用户重新打开应用程序时,只需检索该变量并使用 switch 语句来确定要使用哪个 Typeface

  • SharedPreferences 中存储一个值,表示在销毁 Actvity 之前选择了哪个 CheckBox。然后在 Activity 开始检索该值并检查选择了哪个 CheckBox ,然后选择相应的 Typeface.


我建议使用 secondthird 方法,因为与其他方法相比,将 Typeface 存储在 SharedPreferences 中可能会带来一些性能缺陷方法。