安卓应用小工具教程(Java)

116 阅读6分钟

安卓应用程序小部件的Java教程

应用程序小部件是包含应用程序的一些功能的视图,可以从用户的主屏幕上访问,例如,天气小部件、时钟小部件等。本教程将带你了解如何在Android应用程序中实现小部件。

前提条件

学习本教程需要以下先决条件。

  • 读者应该知道如何构建基本的Android应用程序。
  • 安装了[Android Studio]。
  • 对[Java]编程语言和XML编程语言的基本了解。

安卓小工具介绍

小部件的大小不一,并支持调整大小。小部件大多放在设备的主屏幕上,以便能够快速访问特定移动应用程序的数据和功能。它们允许用户为他们喜爱的应用程序创建快捷方式。一些最常见的小工具是音乐小工具、日历小工具、谷歌搜索小工具。

小工具设计准则

  • 小工具的内容:一个小工具应该包含应用程序最重要的内容,而关于应用程序的小工具内容的更多细节。
  • 小工具配置:对于需要配置的小部件,你应该创建一个小部件配置活动。小组件配置活动允许用户在创建时修改小组件的设置。
  • 布局考虑:小工具应该能够适应不同的空间。
  • 小工具的大小调整:小组件应该支持调整大小,以微调用户想要看到的信息量。

小工具的类型

小工具被分为以下几种。

信息小工具

信息小工具向用户提供信息。这些信息可以随着时间的推移,根据需要不断变化。信息部件的例子包括足球即时比分部件、股票市场部件和天气部件。

控制小工具

控制部件允许用户在不打开应用程序的情况下执行一些功能。一个常用的控制小组件的例子是音乐播放器小组件。该小组件允许用户在不打开音乐播放器应用程序的情况下播放、暂停或跳到下一个音乐曲目。

收藏小部件

集合部件显示多个元素以供查看,并可支持滚动。它们可以显示信息、文章或图像的集合。

混合小部件

混合小组件是可以属于一个以上类别的小组件。例如,一个音乐播放器小组件可以容纳更多关于正在播放的曲目的信息。在这种情况下,它将是一个混合部件,因为它允许控制和正在播放的曲目的信息。

在Java中创建一个样板部件

本节将创建一个带有空白活动和部件的示例应用程序。我们的重点是创建一个功能性的widget,并测试不同的Android应用widget方面。

通过本教程后,你将创建一个安卓小部件,如下面的动画所示。

Demo widget screenshot

第1步:创建一个项目。

创建一个新的Android Studio项目,至少有一个活动,并将该项目命名为App Widgets Demo。选择Java 作为项目的编程语言。

第2步:创建一个新的widget

要创建一个widget,导航到包名com.demo.widgetsdemo ,然后右键点击。选择New ->Widget ->App Widget 。这将打开一个新的窗口来配置小组件,如下面的屏幕截图所示。

Android Studio configure app widget

  • Class Name 定义了小部件类的名称。
  • Placement 决定了小部件可以放置的位置。在这种情况下,选择 。Home screen
  • Minimum width 和 定义了小组件可以占据的最小单元格数。Minimum height
  • Resizable 选项指定了小组件是否可以被调整大小。
  • 如果小组件需要一个ConfigureActivity, ,选择Configurations Screen 选项。

从上面的第2步,有三个不同的文件被创建。

  • NewAppWidget.java:这个Java类是在包名com.demo.widgetsdemo 下创建的widget类。
  • new_app_widget_info.xml:这是XML文件夹下的一个XML文件。它包含widget的配置,可以被编辑。
  • new_app_widget.xml:这是该小组件的布局文件。它位于布局文件夹中。

第3步:定制小组件的布局文件

打开new_app_widget_info.xml XML文件。在这个文件中,你可以添加你想成为小组件一部分的其他视图。在这种情况下,你将在已经存在的文本视图下面添加一个按钮,如下面的代码所示。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:background="?attr/appWidgetBackgroundColor"
    android:orientation="vertical"
    android:layout_height="match_parent"
    android:theme="@style/ThemeOverlay.AppWidgetsDemo.AppWidgetContainer">

    <TextView
        android:id="@+id/widget_text"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:textAlignment="center"
        android:layout_width="match_parent"
        android:background="?attr/appWidgetBackgroundColor"
        android:contentDescription="DEMO WIDGET"
        android:text="DEMO WIDGET"
        android:textColor="?attr/appWidgetTextColor"
        android:textSize="24sp"/>
    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:background="?attr/appWidgetBackgroundColor"
        android:text="CLICK BUTTON"
        android:textSize="24sp"/>
</LinearLayout>

第4步:小工具的Java类

打开NewAppWidget.java 文件。这个类用AppWidgetProvider 类进行扩展。AppWidgetProvider 类接收并处理与App Widget相关的广播事件。

AppWidgetProvider 类重写了以下方法。

  • onUpdate():在AppWidgetProviderInfo 元数据中定义的时间间隔上更新应用程序小部件。在这种情况下,AppWidgetProviderInfo 元数据被定义在new_app_widget_info.xml 文件中。当应用小部件被放到主屏幕上时,这个方法也会被调用。
  • onAppWidgetOptionsChanged():当小部件被调整大小时,它被调用。
  • onEnabled():onDisabled() :当小部件被创建时,它被调用。当小部件的最后一个实例被删除时,它被调用。例如,我们可以在这个函数中启动一个活动。

最后的代码将如下所示。

Widget Class Code

第5步:编辑清单文件

在清单文件AndroidManifest.xml中声明AppWidgetProvider 类为广播接收器。

Manifest Code

这个声明通常是由IDE自动添加的。如果是手动创建的widget类,则需要手动添加该声明。请参考最终项目中的AndroidManifest.xml。

第6步:编辑widget的配置

在这一步,你将改变widget的封面图片。打开new_app_widget_info.xml 文件。这个文件包含小部件的配置设置。

编辑以下一行。

android:previewImage="@drawable/example_appwidget_preview"

用你选择的可绘制的图像替换example_appwidget_preview 。这个图片将作为小组件的封面照片。

第7步:运行该应用程序

在测试设备上安装应用程序,并将小工具添加到主屏幕上。

注意:小工具是按字母顺序排列的。进入小部件部分,找到小部件App Widgets Demo。我们创建的小组件将有与应用程序名称相同的名称,如下面的屏幕截图所示。

Demo widget screenshot

第8步:将小部件放在主屏幕上

请看下面的截图,最终的小部件在主屏幕上的截图。

Homescreen demo widget

点击小部件按钮。这应该会打开应用程序MainActivity

小组件的优势

小组件有以下优点。

  • 信息性小组件允许用户在不打开应用程序的情况下查看重要信息。
  • 小工具作为用户设备上安装的应用程序的可访问网关。

小工具的局限性

小工具有以下限制。

  • 手势:小工具不支持横向刷卡。
  • 积木:由于手势的数量有限,widget不能支持某些元素。

结论

总结一下,我们已经了解了安卓应用小部件以及如何在安卓应用中实现一个小部件。我们讨论了不同类型的widget及其用途。

最后,我们了解了widget的局限性。