📜  如何在 Android 中使用 MaterialPreferenceLibrary 库?

📅  最后修改于: 2022-05-13 01:56:16.048000             🧑  作者: Mango

如何在 Android 中使用 MaterialPreferenceLibrary 库?

在 Android 开发中,开发人员经常使用有助于创建 UI 的库。有时创建像 RecyclerView 这样的 UI 可能会很忙,这就是我们使用不同库的原因,而材料偏好库使 UI 变得容易。在本文中,我们将了解材料偏好库。我们将看到材料偏好库在Android中的实际使用,在详细的代码解释中。我们将了解下面给出的所有要点。

  • 什么是材料偏好库?
  • 材料偏好库的特点
  • 如何在 Android 中使用 Material 偏好库?

什么是材料偏好库?

材质偏好库是一个用于 UI 开发的开源库。它使 UI 变得容易,让我们通过一个例子来理解假设我们想在我的活动中显示一个回收器视图,为此,我们必须创建一个自定义的 RecyclerView 适配器,它有很多代码,不仅如此,我们还必须另一个单独的 XML 文件。这需要大量的时间和艰苦的工作,但是在这个库的帮助下,我们可以节省很多时间,而且会容易得多。

材料偏好库的特点

  • 材料设计
  • 模块化后端
  • 易于实施
  • 简单但直观的 API
  • 动态项目支持

如何在 Android 中使用材料偏好库?

我们将在示例 android 应用程序的帮助下逐步了解有关使用它的详细过程。因此,请遵循以下所有步骤。

第 1 步:创建一个新项目

要在 Android Studio 中创建新项目,请参阅如何在 Android Studio 中创建/启动新项目。请注意,选择Java作为编程语言。

第二步:添加依赖

我们知道一个 android 项目中有两个 gradle 文件。一个是项目级别,另一个是应用程序模块级别。因此,复制以下依赖项并将它们粘贴到您的 App 级 build.gradle 文件中。

并复制以下 maven URL 并将其粘贴到 Project-Level build.gradle 文件中。

第 3 步:更新 Themes.xml

现在我们必须转到位于 res- >values->themes 的 Themes.xml 文件。将主题父级设置为以下主题文件中的任何一项

Theme.mp.Light (light theme with light toolbar)
Theme.mp.Light.DarkActionBar (light theme with dark toolbar)
Theme.mp.Dark (dark theme with dark toolbar)
Theme.mp.Dark.LightActionBar (dark theme with light toolbar)

如今,在 android 中有两个 theme.xml 存在。一个是theme.xml(浅色模式),另一个是themes.xml(深色模式)。该应用程序根据用户在手机中设置的内容设置其中任何一个。就像我们每天在手机中使用的亮模式和暗模式一样,我们的应用程序也直接在这两个文件之间切换。所以在themes.xml(light)文件中,可以将父级设置为

Theme.mp.Light (light theme with light toolbar)
Theme.mp.Light.DarkActionBar (light theme with dark toolbar)

在themes.xml(深色)中,您可以将父级设置为以下任何一项

Theme.mp.Dark (dark theme with dark toolbar)
Theme.mp.Dark.LightActionBar (dark theme with light toolbar)

您必须像在下面给出的主题中添加它一样添加它,即:parent =“Theme.mp.Dark”

XML


Java
public class MainActivity extends MaterialPreferenceActivity {
  
    @Override
    @NonNull
    protected MaterialPreferenceList getMaterialPreferenceList(@NonNull Context context) {
        // This creates an empty screen, 
        // add cards with .addCard()
        return new MaterialPreferenceList.Builder().build(); 
    }
  
    @Override
    protected CharSequence getActivityTitle() {
        return "GFG MPLib Tutorial";
    }
  
}


Java
MaterialPreferenceCard.Builder cardBuilder = new MaterialPreferenceCard.Builder();
cardBuilder.addItem(new MaterialPreferenceTitleItem.Builder()
        .text("Material Preference Library")
        .icon(R.mipmap.ic_launcher)
        .build());


Java
public class MainActivity
    extends MaterialPreferenceActivity {
  
    @Override
    @NonNull
    protected MaterialPreferenceList
    getMaterialPreferenceList(@NonNull Context context)
    {
  
        MaterialPreferenceCard card
            = new MaterialPreferenceCard.Builder()
                  .title("Hello Geek")
                  .build();
        MaterialPreferenceCard card2
            = new MaterialPreferenceCard.Builder()
                  .title("Hello Geek")
                  .build();
        MaterialPreferenceCard card3
            = new MaterialPreferenceCard.Builder()
                  .title("Hello Geek")
                  .build();
  
        MaterialPreferenceCard.Builder cardBuilder
            = new MaterialPreferenceCard.Builder();
        cardBuilder.addItem(
            new MaterialPreferenceActionItem.Builder()
                .text("Material Preference Library")
                .subText("Sub text")
                .icon(R.mipmap.ic_launcher)
                .setOnClickAction(
                    new MaterialPreferenceItemOnClickAction() {
                        @Override public void onClick()
                        {
                            Toast
                                .makeText(
                                    context, "Item CLicked",
                                    Toast.LENGTH_SHORT)
                                .show();
                        }
                    })
                .build());
  
        card = cardBuilder.title("Item 1").build();
        card2 = cardBuilder.title("Item 2").build();
        card3 = cardBuilder.title("Item 3").build();
  
        return new MaterialPreferenceList.Builder()
            .addCard(card)
            .addCard(card2)
            .addCard(card3)
            .build();
    }
    @Override protected CharSequence getActivityTitle()
    {
        return "GFG Tutorial";
    }
}


第 4 步:使用 MaterialPreferenceActivity 扩展当前 Activity

在我们的 Activity 中编写任何代码之前,我们必须确保我们的 Activity 扩展了 MaterialPreferenceActivity。我们每次都必须手动完成,因为默认情况下我们的活动正在扩展AppCompact 活动。我们不仅要扩展而且要删除以前的方法并添加从 MaterialPreference Activity 继承的新方法。之后,我们的代码将如下所示。

Java

public class MainActivity extends MaterialPreferenceActivity {
  
    @Override
    @NonNull
    protected MaterialPreferenceList getMaterialPreferenceList(@NonNull Context context) {
        // This creates an empty screen, 
        // add cards with .addCard()
        return new MaterialPreferenceList.Builder().build(); 
    }
  
    @Override
    protected CharSequence getActivityTitle() {
        return "GFG MPLib Tutorial";
    }
  
}

getActivityTitle() 方法返回一个字符串,它只是我们工具栏的标题。简单来说,我们可以说这个方法用于在我们的activity中设置工具栏。它将执行以下输出

输出:

输出

第 5 步:添加卡片

现在到了主要部分,到目前为止,我们刚刚添加了 工具栏,现在我们将向我们的屏幕添加一张卡片。通常,这需要大量的 XML 和Java代码,但是有了这个库,我们使用它就变得容易了。让我们看看如何

Java

MaterialPreferenceCard.Builder cardBuilder = new MaterialPreferenceCard.Builder();
cardBuilder.addItem(new MaterialPreferenceTitleItem.Builder()
        .text("Material Preference Library")
        .icon(R.mipmap.ic_launcher)
        .build());

在这里,我们只使用 text 和 icon 方法制作卡片对象并添加文本和图标。我们可以将4 个卡片项添加到卡片中,在上面的代码中我们使用了 MaterialPreferenceTitleItem。它将产生以下输出

我们可以看到只用 4 行代码就可以看到一个大小为 1 的 RecyclerView。

第 6 步:卡片中的项目

目前,您可以将 4 种类型的项目添加到卡片中:MaterialPreferenceTitleItem、MaterialPreferenceActionItem、MaterialPreferenceCheckboxItem 和 MaterialPreferenceSwitchItem。计划了其他类型的项目,例如,具有按钮以展示单个人的“人”项目。随时提交 PR 或问题以获取更多项目想法。 MaterialPreferenceActionItem:带有文本、图标和可选子文本的标准项目。 MaterialPreferenceTitleItem:带有大图标(例如应用程序图标)和较大文本的较大项目。 MaterialPreferenceTitleItem 是使用 MaterialPreferenceTitleItem.Builder() 创建的,允许您指定文本和图标。

现在我们将使用 MaterialPreferenceActionItem,我们可以在其中添加文本、子文本、图标以及侦听器。下面的代码将是 MainActivity 的完整代码。Java活动。

Java

public class MainActivity
    extends MaterialPreferenceActivity {
  
    @Override
    @NonNull
    protected MaterialPreferenceList
    getMaterialPreferenceList(@NonNull Context context)
    {
  
        MaterialPreferenceCard card
            = new MaterialPreferenceCard.Builder()
                  .title("Hello Geek")
                  .build();
        MaterialPreferenceCard card2
            = new MaterialPreferenceCard.Builder()
                  .title("Hello Geek")
                  .build();
        MaterialPreferenceCard card3
            = new MaterialPreferenceCard.Builder()
                  .title("Hello Geek")
                  .build();
  
        MaterialPreferenceCard.Builder cardBuilder
            = new MaterialPreferenceCard.Builder();
        cardBuilder.addItem(
            new MaterialPreferenceActionItem.Builder()
                .text("Material Preference Library")
                .subText("Sub text")
                .icon(R.mipmap.ic_launcher)
                .setOnClickAction(
                    new MaterialPreferenceItemOnClickAction() {
                        @Override public void onClick()
                        {
                            Toast
                                .makeText(
                                    context, "Item CLicked",
                                    Toast.LENGTH_SHORT)
                                .show();
                        }
                    })
                .build());
  
        card = cardBuilder.title("Item 1").build();
        card2 = cardBuilder.title("Item 2").build();
        card3 = cardBuilder.title("Item 3").build();
  
        return new MaterialPreferenceList.Builder()
            .addCard(card)
            .addCard(card2)
            .addCard(card3)
            .build();
    }
    @Override protected CharSequence getActivityTitle()
    {
        return "GFG Tutorial";
    }
}

在上面的代码中,我们添加了更多卡片并使用了新的卡片项。正如我们所见,我们不必担心一行 XML 代码。不必担心响应式布局,这个库会自动处理一切。此外,如果我们单击该项目,则会显示 Toast,因为我们已将其设置在每个项目的 onclickListener 中。

最终输出:

最终输出

我们可以看到输出是成功执行的。现在我们知道如何使用材质偏好库了