小部件是应用程序的微版本,由仅在主屏幕或锁定屏幕上显示的应用程序的某些功能组成。例如,我们在主屏幕上看到Weather , Time , Google搜索栏,在锁屏上看到FaceLock , FingerprintLock ,这是设备上可用的一些小部件。当您安装或从Web下载应用程序时,小部件随应用程序一起提供。通常,电话具有制造配置,但是用户可以在以后及时调整这些元素。在本文中,我们演示了如何为Android App实现基本的小部件。
创建基本小部件的步骤
步骤1:创建一个新项目
要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Kotlin作为编程语言。
步骤2:将App小部件添加到项目中
- 右键单击该应用程序,将光标移动到new ,最后找到“ Widget ”选项,然后选择它。
- 指定窗口小部件的必需属性,例如min。宽度和高度,配置文件和首选语言等,然后继续。文件是自动生成的。
步骤3:安装并运行代码
- 在Android虚拟设备(AVD)或个人设备上安装并运行代码。
- 打开手机的小部件部分,查找带有“应用程序”名称的小部件,将其选中,然后将其带到主屏幕。
- 尝试更改尺寸,我们就完成了!
输出:在模拟器上运行
在此过程中生成了哪些额外的文件?
在此选择和部署过程中,将生成一些额外的文件,并对现有文件进行较小的更改。无需编程即可生成基本的窗口小部件,仅在将应用程序嵌入窗口小部件内时才需要编程,如本文后面的部分所述。现在,让我们逐一说明更改对现有文件所做的更改的新生成的文件。
- NewAppWidget.kt
它是在哪里产生的?
NewAppWidget.kt
import android.appwidget.AppWidgetManager
import android.appwidget.AppWidgetProvider
import android.content.Context
import android.widget.RemoteViews
// Implementation of App Widget functionality.
class NewAppWidget : AppWidgetProvider() {
override fun onUpdate(
context: Context,
appWidgetManager: AppWidgetManager,
appWidgetIds: IntArray
) {
// There may be multiple widgets active, so update all of them
for (appWidgetId in appWidgetIds) {
updateAppWidget(context, appWidgetManager, appWidgetId)
}
}
// Enter relevant functionality for
// when the first widget is created
override fun onEnabled(context: Context) {
}
// Enter relevant functionality for
// when the last widget is disabled
override fun onDisabled(context: Context) {
}
}
internal fun updateAppWidget(
context: Context,
appWidgetManager: AppWidgetManager,
appWidgetId: Int
) {
val widgetText = context.getString(R.string.appwidget_text)
// Construct the RemoteViews object
val views = RemoteViews(context.packageName, R.layout.new_app_widget)
views.setTextViewText(R.id.appwidget_text, widgetText)
// Instruct the widget manager to update the widget
appWidgetManager.updateAppWidget(appWidgetId, views)
}
new_app_widget.xml
dimens.xml
8dp
new_app_widget_info.xml
AndroidManifest.xml
- new_app_widget.xml
它是在哪里产生的?
new_app_widget.xml
- dimens.xml
它是在哪里产生的?
dimens.xml
8dp
- new_app_widget_info.xml
它是在哪里产生的?
new_app_widget_info.xml
- 对AndroidManifest.xml文件所做的更改
AndroidManifest.xml
仍然需要编程吗?如果是这样,将更改代码的哪一部分? (续)
是的,仍然需要编程才能创建窗口小部件。在NewAppWidget.kt(属于Kotlin类)及其对应的显示小部件的new_app_widget.xml文件中进行更改。可以在用于应用程序操作的update app widget函数内声明功能,并在new_app_widget.xml内声明函数,以将多个元素添加到widget的显示中。由于两个文件都是内部链接的,因此更改其中一个会将更改引入另一个文件。
关于实现多个小部件
应用程序可以使用的窗口小部件数量没有限制,但是,由于窗口小部件正在动态更改元素,因此建议尽量减少窗口小部件的数量。有更新回调(请参阅new_app_widget_info.xml文件),updatePeriodMillis是一个参数,应用程序会在此参数不断更新小部件,这意味着,用于更新小部件的应用程序线程将在后台运行,并获取有限RAM的一部分。