📜  如何创建Android应用程序的动态小部件?

📅  最后修改于: 2021-05-10 16:41:17             🧑  作者: Mango

先决条件:如何创建Android应用程序的基本小部件?

小部件是应用程序提供的UI元素,用于从主屏幕或锁定屏幕远程访问其某些功能。小部件可以是静态动态的,这意味着显示元素不会随时间变化(静态)或变化(动态)。通过本文,我们来演示Dynamic Widget的实现。在我们的例子中,我们将使用Thread根据时间更改显示。这是相同的预览:

创建动态窗口小部件的步骤

步骤1:创建一个新项目

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

步骤2:将App小部件添加到项目中

  • 右键单击该应用程序,将光标移动到new ,最后找到“ Widget ”选项,然后选择它。

小部件屏幕截图

  • 指定小部件的必需属性,例如min.widthheight ,配置文件和首选语言等,然后继续。文件是自动生成的。

小部件屏幕截图

步骤3:要编程什么?在哪里编程?

  1. 在我们的应用程序中,由于我们希望同时显示两个消息“ Just do it ”和“ You are awesome ”(用户可以选择自己的消息),因此,我们将实现一个线程来生成暂停(1个)第二)之间。
  2. 整个编程(后端)都在新创建的NewAppWidget.kt (主源文件夹中的Kotlin类文件)中完成。

仅对 NewAppWidget.kt文件

NewAppWidget.kt
package org.geeksforgeeks.widget_dynamic
  
import android.appwidget.AppWidgetManager
import android.appwidget.AppWidgetProvider
import android.content.Context
import android.content.Intent
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
) 
/////////////////////////Add functionality here ///////////////////////////////
{
    Thread(Runnable {
        while(true){
                // Construct the RemoteViews object
                val views = RemoteViews(context.packageName, R.layout.new_app_widget)
                views.setTextViewText(R.id.appwidget_text, "Just do it")
                // Instruct the widget manager to update the widget
                appWidgetManager.updateAppWidget(appWidgetId, views)
                Thread.sleep(1000)
                  
                // Construct the RemoteViews object
                views.setTextViewText(R.id.appwidget_text, "You are awesome")
                // Instruct the widget manager to update the widget
                appWidgetManager.updateAppWidget(appWidgetId, views)
                Thread.sleep(1000)
        }
    }).start()
}
////////////////////////////////////////////////////////////////////////////////////


就是这样,运行代码,您将在Widgets列表中看到此Widget,并将其带到主屏幕。

输出:在模拟器上运行

想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处前往由我们的专家精心策划的指南,以使您立即做好行业准备!